]]> ]]>
Править | Обсудить | История

Unlambda

Язык программирования

Unlambda — пример чистого функционального языка, основанного на комбинаторной логике. Единственный тип данных в языке — это функции от одного аргумента. Язык поддерживает ленивые вычисления.

Текущая версия Unlambda поддерживает 12 стандартных функций: k,i,v,s,d,c,e,r,.,?,@ и | . Применение функции обозначается обратной кавычкой (которую здесь будем обозначать как обычную) , например, запись ‘FA обозначает, что F применяется к A , или же F(A). В общем-то, для достижения полноты по Тьюрингу достаточно только двух функций: k и s.

  • k принимает два аргумента (так как Unlambda признает только унарные функции, “обман” происходит с помощью карринга) и возвращает первый. Для примера: ‘kxy будет возвращать x
  • s принимает три аргумента. Запись ‘sxyz будет эквивалентна ”xz’xy
  • .x — данная функция принимает некий аргумент x, печатает символ “x” и возвращает его неизменным.
  • r — печатает новую строку.
  • d — функция для ленивых вычислений. Обычно для вычисления выражения ‘xy Unlambda сначала вычисляет x, потом y , а затем уже применяет x к y. Но если же вместо x поставить d , то есть будет выражение вида ‘dy , то y будет вычисляться только тогда, когда выражение применяется к аргументу z.
  • v — функция, которая принимает аргумент, игнорирует его и возвращает v.
  • В Unlambda так же есть функции для ввода-вывода. Функция @ считывает символ с устройства ввода и применяет аргумент x к i. Функция | печатает текущий символ.
  • e — функция возвращает аргумент x и прерывает работу программы.

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам