2013-04-10 4 views
7

В функциональной парадигме функция является основной «структурой управления». Например, оператор + также рассматривается как функция, и вы можете передавать их, как и любые другие «объекты». Мне было интересно, что если бы мне пришлось реализовать функциональный язык игрушек, я бы выполнил простые функции как истинные функции (например, перевести + в вызываемую процедуру) или перевести их в обычные инструкции, которые будут помещены «inline» в переведенный код. Но тогда, со второй стратегией, я смогу передать их и применить их частично как в haskell? Каковы ваши мысли о реализации/переводе функций как центральной идеи на функциональном языке?Как реализовать функциональный язык программирования?

+0

Что-то вроде этого, я бы предположил: http://mitpress.mit.edu/sicp/ –

+0

Вторая стратегия называется дефункционализацией: http://en.wikipedia.org/wiki/Defunctionalization –

+0

Если вы хотите для реализации функционального языка игрушек с нуля я бы рекомендовал вам следовать рекомендациям здесь: * http://research.microsoft.com/en-us/um/people/simonpj/Papers/pj-lester-book/ Если вы хотите повторное использование времени выполнения Haskell, я бы рекомендовал начать здесь: * http://www.grabmueller.de/martin/www/pub/Transformers.en.html –

ответ

0

Я могу порекомендовать книгу PJL. Я написал компилятор с его помощью (в 1989-1990 годах, в Prolog), и книга - очень хорошее введение в эту тему.

Это может быть датировано (написано в 1987 году, 30 лет назад), но оно все еще очень хорошо охватывает основы. Это, однако, полностью сосредоточено на ленивых языках, таких как Haskell. В то время Haskell не существовало, и книга использует LML или Miranda, язык предшественника, но языки очень близки.

Смежные вопросы