Pull to refresh
8
Karma
0
Rating
Кир @Grass

User

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

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

Я знаю, что бы 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 представляет из себя аналог нейронной сети, то прямая имитация.

Вот только, кому это надо?
Total votes 18: ↑10 and ↓8 +2
Views 514
Comments 3

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

Lumber room
Вот код:

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, меньшие нуля!

Что происходит? Может быть, «ленивость» можно как-то форсировать?
Total votes 13: ↑7 and ↓6 +1
Views 238
Comments 7

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

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

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

Читать дальше →
Total votes 6: ↑3 and ↓3 0
Views 332
Comments 5

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

Lumber room
Итак, решил я писать компилятор/интерпретатор функционального языка. По началу сделал в виде вычисляющего дерева Черча, где каждая команда-нейрон представляла из себя отдельный объект, к которому прицеплены параметры. При вызове функции get() выполнялось обращение к необходимым входным данным. Я даже соорудил некое подобие strchr, и оно даже работало.
Читать дальше →
Total votes 33: ↑12 and ↓21 -9
Views 310
Comments 7

Information

Rating
Does not participate
Date of birth
Registered
Activity