Comments 6
Спасибо за перевод, он хорош.
Статья, конечно, юморная, и товарищ Yang в нескольких местах сильно наврал, но он хотя бы честно предупредил, что будут неточности.
На самом деле код на Haskell читать проще, чем код на С++, при условии, что вы эти языки знаете одинаково хорошо. Я даже утверждаю, что кристальности кода на Haskell позавидует любой другой язык. Правда, можно и на нем написать так, что потом понадобится не одна поллитра…
Статья, конечно, юморная, и товарищ Yang в нескольких местах сильно наврал, но он хотя бы честно предупредил, что будут неточности.
На самом деле код на Haskell читать проще, чем код на С++, при условии, что вы эти языки знаете одинаково хорошо. Я даже утверждаю, что кристальности кода на Haskell позавидует любой другой язык. Правда, можно и на нем написать так, что потом понадобится не одна поллитра…
+5
return $ x { field = 2 }
Эпическая ошибка. В хаскеле return работает совсем по-другому. Если не указан тип, может получиться гадость:
Prelude> return 1
1
Prelude> :t return 1
return 1 :: (Num t, Monad m) => m t --возвращает нифига не Int
Prelude> :t (return 1) :: [Int] --принудительный тип
(return 1) :: [Int] :: [Int]
Prelude> (return 1) :: [Int] --и да, оно обернет в монаду списка
[1]
Prelude>
Если бездумно использовать return, можно долго отлавливать «Couldn't match expected type `x' against inferred type `y'».
Безопасный пример:
x { field = 2 }
+3
UFO just landed and posted this here
Sign up to leave a comment.
Как питонистам читать Haskell