SICP и ФП. Хроники мозга. Вырезка #1
Wednesday, 11 November 2009 18:42![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
sum = fold + 0
product = fold * 1
and = fold && true
or = fold || false
length = fold inc 0
reverse = fold (\x xs => xs ++ [x]) []
map = fold (\x xs => (f x):xs) []
filter = fold (\x xs => (p x)? (x:xs) : xs) []
skip = car fold (\x (ys, xs) => ((p x)? ys : (x:xs), x:xs) ([], [])
*Техники функционального программирования — красивейшая штука, оказывается... Чувствую, пройдет каких-нибудь полгода, и я буду мучить тут вас всех разными монадами и макросами. Пока что, кому интересно, может наблюдать за этим процессом: как медленно перерождается мозг императивного программиста =) Кому неинтересно — глубочайшее мое вам сорри.*