AZ
nmap f = zipWith ($) $ iterate ((.) f) id
Вот это можно переписать как
nmap f xs = zipWith ($) (iterate ((.) f) id) (xs)
где (iterate ((.) f) id) - первый список
(xs) - второй список
($) - функция, которой элементы склеиваются
Size: a a a
AZ
nmap f = zipWith ($) $ iterate ((.) f) id
AZ
A
A
AZ
AZ
AZ
AZ
AZ
A
nmap f xs = zipWith ($) funcs elems where
funcs = iterate ((.) f) id
elems = xs
AZ
AZ
iterate ((.) f) f
A
iterate ((.) f) f
AZ
A
A
EG
λ => join $ intersperse " " ["multiple", "(three)", "words"]
"multiple (three) words"
EG
join
AZ
A