Не спится. Курю хаскель, прочитал LYAH (второй раз), взялся за RWH, к RWH это, пожалуй 3-й уже подход. Книжка хорошая однозначно, но временами, как об кирпичную стену....
In fact, we can even write foldl using foldr!
myFoldl :: (a -> b -> a) -> a -> [b] -> a
myFoldl f z xs = foldr step id xs z
where step x g a = g (f a x)
Дальше пишут, что если хотите челлендж, разберитесь, почему это так. Запаситесь, таблеткой от головной боли и водичкой. Ну блин.... а с другой стороны сколько интересного всплывает:
http://stackoverflow.com/questions/6172004/writing-foldl-using-foldr Помяну еще до кучи весьма приличную лекцию про монады:
Brian Beckman: Don't fear the Monad Действительно объясняет, пишут однако, что когда определяется bind опять у кого-то, как об стену. Ну не скажу, я-то уже с монадами разобрался до того :)
Трудность была со словом shove -- на слух не очень мог поймать, а оно ключевое, как эпитет для >>=
Причем самый адекватынй эпитет, -- вантуз -- им мы пихаем значение из монады в функцию, ну и значек похож, чо.
Хочу сказать, что сколько я не пытался с монадами разобраться, пока LYAH не прожевал, все было не в коня корм. Вроде понятно, что такое монада. Даже понятно нафига. Но вот не очень понятно как? Как заюзать-то... Но вот вроде пришло наконец осознание. В общем LYAH это лучшее с чего начать хаскеллисту, все остальное потом.