rapture 17.09.2011 14:38 unknown

Иногда я думаю, что чистые функции в хаскеле — это монада. Монада без побочных эффектов.
http://habrahabr.ru/blogs/Haskell/128070...
Ладно, допустим, нельзя вернуть значение из монады. Говорят, что это может сделать чистые функции грязными:
ff :: a → IO b
gg :: b → c
hh = ff >.> extract >.> gg
Ок, но как тогда вообще работать со значениями? То есть, например, есть функция getLine:: IO String, которая возвращает мне строку 'с консоли'(← побочка), к ней надо применить lines которая String → [String]. Я, собственно, не против функции f:: ma → [mb], типа linesM, которая бы брала строку , могущую быть грязной (хотя какой грязной, тут же побочка не в этом, а в том, что строчка с консоли) и возвращала массив таких же грязных строк. Но зачем тогда вообще чистые функции?
Дальше придумывают функцию mapply
mapply :: m b → (b → m c) → m c
КАК? Как, блеать, если для того, чтобы получить mc, нам нужно b, а нам на вход передают m b ???
Я слишком тупой.

Do you really want to delete ?