Skip to content

Latest commit

 

History

History
46 lines (39 loc) · 3.23 KB

File metadata and controls

46 lines (39 loc) · 3.23 KB

Lisp интерпретатор

Напишете gem, който интерпретира подмножество на езика Scheme.

Функционалности

Минимално подмножество

  • Придържайте се към духа на езика
    • Префиксен синтаксис, много кръгли скоби
    • Immutability is king
    • First class функции
  • Булеви стойности
    • #t и #f
    • not, equal?
  • Числа
  • Низове
    • string-length, substring, string-upcase, string-contains?, string->list, string-split (без регулярни изрази)
    • Още 5 по ваш избор
  • Списъци/двойки
  • Функции/процедури
    • lambda, apply, compose
    • Рекурсия (главен способ за итериране)
    • Не забравяйте, че нещата, приличащи на оператори (+/-/...), са обикновени функции
  • Общи
    • Литерален синтаксис за различните типове.
    • define

Забележки

  • Опитайте се да имплементирате истинско подмножество на езика, а не негов диалект. Би следвало да се държи възможно най-близо до реален Scheme. Неща като произволно позиционирани whitespace-и не трябва да объркват интерпретатора.
  • Добавете адекватни съобщения при често срещани синтактични грешки (например небалансирани скоби) и при извикване на функция от стандартната библиотека с невалидни аргументи (например (/ '42' 6)).
  • Не използвайте eval и други средства за изпълняване на Ruby код от низ.
  • Прочетете тази тема от форума.

Помощни материали

The Racket Reference