Доброе утро всем
Это полностью валидный код JavaScript.
Конечно, не в таком виде.
Вчера, листая список дел, отложенных на потом, наткнулся на статью о вычисление факториала чисел Чёрча , нашел в комментариях предложение реализовать это с помощью стрелочных функций.
Но поскольку 1 апреля уже наступило, нужно что-то интересное и необычное.
var fact = ((cat) => (cat) (cat)) ((cat) => ((drunk) => ((idea) => (hrv) => ((bug) => (facepalm) => (swear) => (bug) (facepalm) (swear)) (((hrv) => (hrv) ((cat) => (cat) => (drunk) => (drunk)) ((cat) => (drunk) => (cat))) (hrv)) (((hrv) => (idea) => (cat) => (idea) ((hrv) (idea) (cat))) ((idea) => (cat) => (cat))) ((cat) => ((hrv) => (dog) => (idea) => (hrv) ((dog) (idea))) (hrv) ((idea) (((hrv) => (wasntme) => (tmi) => ((bug) => (bug) ((cat) => (drunk) => (drunk))) ((hrv) ((bug) => ((devil) => (heidy) => (facepalm) => (facepalm) (devil) (heidy) ) ((wasntme) (((bug) => (bug) ((cat) => (drunk) => (cat))) (bug))) (((bug) => (bug) ((cat) => (drunk) => (cat))) (bug))) (((devil) => (heidy) => (facepalm) => (facepalm) (devil) (heidy)) (tmi) (tmi)))) (hrv))) (cat))) ((cat) (cat)) (drunk)));
(Отправить через Skype).
Вот остальные функции в более простой и естественной форме: var True = (x) => (y) => x;
var False = (x) => (y) => y;
var If = (p) => (t) => (e) => p(t)(e);
// example: If(True)('foo')('bar')
var Zero = (f) => (x) => x;
var Succ = (n) => (f) => (x) => f(n(f)(x));
var IsZero = (n) => n((x) => False)(True);
var Mul = (n) => (m) => (f) => n(m(f));
var Pair = (a) => (b) => (t) => t(a)(b);
var Fst = (p) => p(True);
var Snd = (p) => p(False);
var Pred = (n) => (s) => (z) => Snd(n((p) => Pair(s(Fst(p)))(Fst(p)) )(Pair(z)(z)));
Как это все работает - в оригинальная статья .
Ну, используйте это так: fact(Succ(Succ(Succ(Zero))))(function (x) { return x + 1; })(0); // => 6
(где Succ — добавление единицы).
С праздником всех!
УПД:
Видимо, в этот праздник мысли сходятся: Программирование с помощью смайлов.Теги: #JavaScript #1 апреля #факториал #церковные числа #skype #смайлики #стрелочные функции #Аномальное программирование #JavaScript #Функциональное программирование
-
Выбор Лучшего Гаджета В Подарок
19 Oct, 24 -
Крок Проведет Первую Маркет Ит-Решений
19 Oct, 24 -
Рекламная История Apple
19 Oct, 24 -
Предложение По Улучшению: Переводы
19 Oct, 24 -
Простой Алгоритм Метапоиска На Python
19 Oct, 24