Pull to refresh

Comments 6

Спасибо за перевод, он хорош.

Статья, конечно, юморная, и товарищ Yang в нескольких местах сильно наврал, но он хотя бы честно предупредил, что будут неточности.

На самом деле код на Haskell читать проще, чем код на С++, при условии, что вы эти языки знаете одинаково хорошо. Я даже утверждаю, что кристальности кода на Haskell позавидует любой другой язык. Правда, можно и на нем написать так, что потом понадобится не одна поллитра…
Ну, это действительно упрощение для людей, не слишком знакомых с парадигмами, на которых основан Haskell. Как таковое, имеет право на жизнь:)
Кстати, рекомендую будущим статьям по Haskell присваивать отдельный тег haskell. В этом случае статья попадет в фид Russian Lambda.
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 }
UFO just landed and posted this here
Sign up to leave a comment.

Articles