https://bntr.livejournal.com/7823.html

функции едят констант


простейшие функции едят только констант
и поглотив их определённое число, сами превращаются в константу

другие же - жрут и подобных себе функций
и с каждой проглоченной могут захотеть еще и еще..

как функция узнаёт, что она глотает?
да никак
она вообще не может ничего знать или понимать
только жрёт, а вот что и во что она превратится - ей пофигу


(+) 5 7
(5+) 7
5+7
12
функция (+) пожирает константу и превращается в (5+)
функция (5+) пожирает константу и превращается в 12
(\а б -> а+б) сущность функции (+) пожирающей 2 константы и превращающейся в их сумму
(\а б -> а-б) 12 5
(\б -> 12-б) 5
12-5
7
функция (-) пожирает 2 константы
и превращается в их разность
(\ф а -> ф а) (+) 5 7
(\а -> (+) а) 5 7
(5+) 7
12
функция (\ф а -> ф а) пожирает функцию (+)
затем константу, и превращается в функцию (5+)
пожирающую константу
(\ф а б -> ф б а) (-) 5 12
(\а б -> (-) б а) 5 12
(\б -> (-) б 5) 12
(-) 12 5
функция меняющая для (-) местами 5 и 12

(\ф -> (\а -> ф а а) (\а -> ф а а))   
(\ф -> (\а -> ф а а) (\а -> ф а а)) 12
(\а -> 12 а а) (\а -> 12 а а)
12 (\а -> 12 а а) (\а -> 12 а а)
12 12 (\а -> 12 а а) (\а -> 12 а а)
12 12 12 (\а -> 12 а а) (\а -> 12 а а)

"парадоксальный комбинатор"
глотает константу и
гадит
гадит ей..








Аноним: m daa (August 28 2005, 08:09:53 UTC) t34447
bntr: да ты не вникал, надо с утра под кофе (August 31 2005, 10:20:31 UTC) t35471
evko: Интересная нотация. Не вполне понятно, как в примере "(\ф а -> ф а) (+) 5 7" оператор "->" подствляет вместо одного аргумента "а" две константы "5 7"...
Или имелось ввиду "(\ф а б -> ф а б) (+) 5 7" ?

>гадит ей..
Или молчит как партизан, намертво задумавшись, после обеда:
(\ф -> (\а -> а а) (\а -> а а))
Или, еще того хуже, ест-ест, не успокоится, обжорка такая:
(\а б -> (\а -> б)) (\а б -> (\а -> б))
(September 11 2005, 16:03:36 UTC) t39567
bntr: (\ф а -> ф а) пожирает только (+) и 5
а то, во что превращается, уже пожирает семёрку

ведь этот "currying" и значит что (a b c d) равносильно (((a b) c) d)

=) "парадоксальный комбинатор" кстати на самом деле такой:
(\ф -> (\а -> ф (а а)) (\а -> ф (а а)))

а вот "обжорка" вроде такая:
(\a b -> a a) (\a b -> a a) (September 11 2005, 19:03:53 UTC) t39823
evko: с плюсом теперь понятно, как-то сразу не уловил, что под (+) подразумевается определение (\а б -> а+б).

Точно, с "обжоркой" я промахнулся :) Мой вариант на самом деле оказался образчиком умопомрачительного самоедства:
(\а б -> (\а -> б)) (\а б -> (\а -> б)) 1 2 3
((\а б -> (\а -> б)) -> 1) 2 3 на первое: пол-тела + константа,
((2 -> 3) -> 1) на второе: еще пол-тела + еще две константы...
1 упс, пошел процесс переваривания, первую константу э-э-э.. выплюнул, а от себя ничего уже не осталось...
(September 12 2005, 04:51:58 UTC) t40079
..