LINUX.ORG.RU

История изменений

Исправление balsoft, (текущая версия) :

В средах, где бОльшая часть функций - с побочным эффектом, так не получится

В этом и заключается основное умение грамотного хаскелиста – декомпозировать «функции с побочным эффектом», выделив побочный эффект в сторонку и оставив как можно больше функций чистыми. Очень тупой пример, который демонстрирует принцип:

Вместо

greet :: String -> IO ()
greet = putStrLn . ("Hello, " ++) 

main = greet =<< readLn

писать

greet :: String -> String
greet = ("Hello, " ++)

main = putStrLn . greet =<< readLn

Исправление balsoft, :

В средах, где бОльшая часть функций - с побочным эффектом, так не получится

В этом и заключается основное умение грамотного хаскелиста – декомпозировать «функции с побочным эффектом», выделив побочный эффект в сторонку и оставив как можно больше функций чистыми. Очень тупой пример, который демонстрирует принцип:

Вместо

greet :: String -> IO ()
greet = putStr . ("Hello, " ++) 

main = greet =<< readLn

писать

greet :: String -> String
greet = ("Hello, " ++)

main = putStrLn . greet =<< readLn

Исходная версия balsoft, :

В средах, где бОльшая часть функций - с побочным эффектом, так не получится

В этом и заключается основное умение грамотного хаскелиста – декомпозировать «функции с побочным эффектом», выделив побочный эффект в сторонку и оставив как можно больше функций чистыми. Очень тупой пример, который демонстрирует принцип:

Вместо

greet :: String -> IO ()
greet = putStr . ("Hello, " ++) 

main = greet =<< readLn

писать

greet :: String -> String
greet = ("Hello, " ++)

main = print . greet =<< readLn