Как стать автором
Обновить

Комментарии 5

было

P.S. На нетипизированной лямбе это выглядит лучше
Глядя на описание функции и на получившийся тип (t1 -> t -> t1) -> (t -> t) -> t -> t1, невольно приходит на ум, что это ближе к свёртке (fold) по сути, чем к Y-комбинатору:
yfold f t x = foldr f undefined (iterate t x)
fac n = yfold (\i prev -> if i == 0 then 1 else prev * i) (\i -> i - 1) n

То же самое, только с другим порядком аргументов.
Статью я обновил. Теперь это менее похоже на свертку.
наверное штука интересная, просто первые делоам — Y-комбинатор на ум приходит как комбинатор стартап-ов.

А как практически применятся «ваш» математический y-комбинатор?
Ну, поскольку он неподвижная точка, он может поддерживать некое слабомутирующее окружение — экспертную систему, например. Ведь иногда параметры придется менять, а вид структуры остается.

Номер два. Описав универсальный Ы-комбинатор, можно делать объявления вида

fac N = Y (\next -> \data -> next * data) N

которые, согласитесть, короче, чем обычные объявления.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации