Furry Paws
Реализация языка программирования FPFurry Paws — интерпретатор для языка, являющегося расширением FP. Он написан на FP, но на самом деле программный код транслируется на C и после этого должен быть скомпилирован в исполняемый файл с использованием gcc (т.к. интерпретатор использует специфику этого компилятора).
Эта реализация предоставляет возможности обработки строк и файлового ввода/вывода. Ее синтаксис отличается от того, который используется при описании языка в основной статье, но принцип использования остается тем же.
Ссылки:
Примеры:
Hello, World!:
Пример для версий Furry Paws~x
— функция-константа (обозначенная как % в Interactive FP). emit
— стандартная функция, выводящая свой аргумент в стандартный поток вывода. main
— функция, наличие которой в программах на Furry Paws обязательно, т.к. при выполнении программы она вызывается первой.
main = emit.(return ~"Hello, World!\n")
Факториал:
Пример для версий Furry PawsЭтот пример работает точно так же, как пример для Interactive FP, за исключением отсутствия определения функции zero
, являющейся встроенной. Следует отметить, что здесь все операции выполняются в пределах стандартного целочисленного типа, и 13! вызывает ошибку переполнения, поэтому программа может быть вызвана только для факториалов до 12!. show
— альтернативный способ вывода информации.
dec = sub.[id, ~1]
seq = zero -> [id] ; cat.[seq.dec, [id]]
factorial = zero -> ~1 ; mul.[id, factorial.dec]
main = show.(return @factorial.(seq.~12))
Числа Фибоначчи:
Пример для версий Furry Pawsone = eq.[id, ~1]
dec = sub.[id, ~1]
seq = one -> [~1] ; cat.[seq.dec, [id]]
fibonacci = lt.[id, ~3] -> ~1 ; add.[fibonacci.sub.[id, ~1], fibonacci.sub.[id, ~2]]
main = show.(return @fibonacci.(seq.~16))
Комментарии
]]>blog comments powered by Disqus
]]>