Interactive FP
Реализация языка программирования FPИнтерактивная онлайн реализация на Java, которую можно найти по ссылке.
Ссылки:
Примеры:
Факториал:
Пример для версий Interactive FPЭтот пример определяет четыре функции — две по необходимости, и две для читабельности. Все они принимают на вход скалярные значения; seq возвращает последовательность скаляров, остальные три — скаляры.
-
zeroпроверяет, равен ли ее аргумент нулю; -
decуменьшает аргумент на единицу; -
seqвозвращает<0>, если ее аргументxравен нулю, и результат примененияseqк(x-1)с присоединенным справаxиначе (если мы развернем это рекурсивное определение, мы получим просто последовательность<0 1 … x>) . -
factorialвозвращает 1, если ее аргументxравен нулю, и результат примененияfactorialк(x-1), умноженный наx, иначе.
Последняя строка примера применяет factorial к каждому элементу последовательности, полученной применением seq к входному параметру — 16. Следует отметить, что все матеметические операции возвращают числа с плавающей запятой, поэтому результат выполнения программы будет иметь следующий вид:
< 1 1.0 2.0 6.0 24.0 120.0 720.0 5040.0 40320.0 362880.0 3628800.0 3.99168E7 4.790016E8 6.2270208E9 8.7178289E10 1.30767428E12 2.09227885E13 >
{ zero ( = @ [id, %0] ) }
{ dec ( - @ [id, %1] ) }
{ seq ( zero -> %<0> ; apndr @ [ seq @ dec , id ] ) }
{ factorial ( zero -> %1 ; * @ [id, factorial @ dec ] ) }
&factorial @ seq:16
Числа Фибоначчи:
Пример для версий Interactive FPЭтот пример работает так же, как пример факториала, но без добавления функций для читабельности.
{ seq ( = @ [id, %1] -> %<1> ; concat @ [ seq @ - @ [id, %1] , [id] ] ) }
{ fibonacci ( < @ [id, %3] -> %1 ; + @ [ fibonacci @ - @ [id, %1], fibonacci @ - @ [id, %2] ] ) }
&fibonacci @ seq:16
Комментарии
]]>blog comments powered by Disqus
]]>