Joy (язык программирования)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:02, 2 июня 2016.
Joy
Парадигма мультипарадигмальный: функциональный, конкатенативный, стековый
Разработчики Manfred von Thunf
Первый   появившийся 2001
Печать дисциплины сильная, динамическая
Под влиянием
Scheme, C
Влияние
Factor, Cat, V, Trith

Joy - чисто функциональный язык программирования, который был создан Манфред фон Тунoм в La Trobe в Мельбурне, Австралия. Joy основан на композиции функций, а не лямбда-исчислениях. Оказалось, что он имеет много общего с Forth. Он также был вдохновлен стилем программирования функции уровня Бакуса FP. .

Содержание

Пример

Функция возведения в квадрат определяется как:

DEFINE square == dup * .

В Joy всё является функцией, принимающей стек как аргумент, и возвращающей стек в качестве результата. К примеру, цифра «5» не целая константа, а короткая программа, помещающая число 5 в стек.

  • Оператор dup просто дублирует верхний элемент в стеке, помещая туда его копию.
  • Оператор * берёт со стека два верхних элемента и помещает туда их произведение.Таким образом функция возведения в квадрат просто дублирует верхний элемент, а затем перемножает его на самоё себя, формальные параметры не нужны. Это делает Joy лаконичным.

Определение быстрой сортировки:

 DEFINE qsort ==
   [small]
   []
   [uncons [>] split]
   [[swap] dip cons concat]
   binrec .

«binrec» — один из многих существующих в Joy рекурсивных комбинаторов, реализующий бинарную рекурсию. Он ожидает наличие на стеке четырёх программных литералов, которые представляют собой:

  • условие прекращения (если список «мал» (1 или 0 элементов) он уже отсортирован),
  • что делать, если условие прекращения выполняется,
  • что делать по умолчанию (разделить список на две половины путём сравнения каждого элемента с опорной точкой),
  • что делать в конце.

Ссылки

  1. joy
  2. joy mirror