]]> ]]>

Furry Paws

Реализация языка программирования FP

Furry 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 Paws
one = 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

]]>

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