Издевательская задачка

\meow -> foldl (*) 1 $ take meow $ map ($ 1) (iterate ((+ 1) .) id)

Перед читателями функция на Haskell. Что она делает?

Издевательская задачка: 2 комментария

  1. Разбираем справа налево. id ничего не делает, сколько его не применяй. Соотвественно iterate сделает просто бесконечный список функций (+1). А map ($ 1) подсунет им всем единичку, и получится список двоек. take meow возьмёт только meow двоек. А foldl (*) 1 все перемножит. Иными словами, \ meow -> 2 ^ meow.

    1. Вбил в ghci и понял, что вру! iterate создаёт список функций [(+0), (+1), (+2), (+3) .. ], map делает из них [1, 2 .. ], взятие meow елементов и перемножение даст meow*(meow-1)*… то есть это ничто иное, как лаироткаф!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

:) :D :( :E: ;) :yes: :no: :donno: more »