Как стать автором
Обновить
8
0
Кир @Grass

Пользователь

Отправить сообщение

Одно из возможных применений Y-комбинатора

Время на прочтение1 мин
Количество просмотров1.1K
Идея. А давайте отправим Ы-комбинатору на вход… не сам Ы-комбинатор, но почти Ы. Ы-штрих, даже не комбинатор, а просто функцию, не имеющую выхода из реккурсии.

Я знаю, что бы 100 раз так делали, и ничего хорошего, кроме STACK_OVERFLOW_EXCEPTION не выходило.

Пусть она принимает на вход состояние, вводит и выводит информацию, и отправляет состояние дальше.
Y functor data = functor (\newdata -> Y functor newdata) data

Yscratch callback state =
    // пересечь знания со входными данными
    let new-state = intersect state (input()) in
        output state
        // упростить знания, если возможно
        callback (reduce state);

а теперь
wtf iIdiot =
    Y Yscratch iIdiot;

Что это за нафиг? Это имитация сознания. Если state представляет из себя аналог нейронной сети, то прямая имитация.

Вот только, кому это надо?

F# не ленится :(

Время на прочтение1 мин
Количество просмотров531
Вот код:

let rec Y func tracker args =
    func args (Y func tracker (tracker args))
    
let fib N = (fun (x, y) -> x) (Y 
    (fun N (prev, pprev) -> if N = 1 then (1, 0) else (prev + pprev, prev)) 
    (fun N -> N - 1)
    N)
        
let main =
    let value = fib 10
    System.Console.WriteLine(value)
    System.Console.ReadKey()

При компиляции и запуске он, вместо того, чтобы полностью рассчитать первую лямбда-функцию с N = 0 на кой-то черт рассчитывает никому не нужные значения N, меньшие нуля!

Что происходит? Может быть, «ленивость» можно как-то форсировать?

Y-комбинатор, упрощение интерфейса

Время на прочтение2 мин
Количество просмотров901
Итак, все мы помним, что такое Y-комбинатор (кто не помнит, это комбинатор неподвижной точки или Y g = g Y g). Из математической его записи следует некоторая проблема: он генерирует последовательность g g g… g Y g, в которой каждый следующий шаг может использовать лишь результат предыдущего вычисления да захваченный из комбинатора кусок контекста — что приводит к необходимости для каждой функции писать свой собственный комбинатор.

Идея заключается в том, чтобы написать Y-комбинатор, который не будет зависеть от самоприменяемой функции.

Читать дальше →

Функциональное программирование :: реккурсивные функции

Время на прочтение3 мин
Количество просмотров865
Итак, решил я писать компилятор/интерпретатор функционального языка. По началу сделал в виде вычисляющего дерева Черча, где каждая команда-нейрон представляла из себя отдельный объект, к которому прицеплены параметры. При вызове функции get() выполнялось обращение к необходимым входным данным. Я даже соорудил некое подобие strchr, и оно даже работало.
Читать дальше →

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность