Forth

Forth

Складна

Вказівки

Реалізуйте обчислювач для дуже простої підмножини Forth.

Forth належить до стекових мов програмування. Реалізуйте дуже простий обчислювач для невеликої підмножини Forth.

Обчислювач має підтримувати такі слова:

  • +, -, *, / (арифметика з цілими числами)
  • DUP, DROP, SWAP, OVER (операції зі стеком)

Обчислювач також має підтримувати визначення нових слів за допомогою звичного синтаксису: : word-name definition ;.

Задля простоти потрібно підтримувати лише один тип даних: знакові цілі числа розміром щонайменше 16 біт.

Для синтаксису діють такі правила: число - послідовність з однієї або більше (ASCII) цифр, а слово - послідовність з однієї або більше літер, цифр, символів або розділових знаків, яка не є числом. (Forth, імовірно, використовує дещо інші правила, але це досить близько.)

Слова не чутливі до регістру.

Підказки

Щоб виконати цю вправу, створіть тип даних ForthState і реалізуйте такі функції:

  • emptyState повертає порожній ForthState.
  • evalText обчислює вхідний Text і повертає новий стан.
  • toList повертає поточний стек як масив, де елемент на вершині стека є найправішим (останнім) елементом.

Заготовка оголошення типу даних і сигнатури функцій уже є, але функції потрібно визначити самостійно, як і створити змістовний тип даних, newtype або синонім типу.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Haskell Exercism

Час розпочати Forth?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Haskell, а також 107 вправ та справжнє наставництво від людей, і все це безкоштовно.