1. Реализовать на языке Haskell парсер S-выражений
  2. Реализовать на основе написанного парсера интерпретатор простейшей разновидности языка LISP:
    • Стандартная прямая польская запись (см. примеры програм на LISP в интернете)
    • Константы в виде строк в кавычках и целых чисел цифрами, а также null
    • Встроенные функции: if, арифметические, сравнение на равенство/неравенство, конкатенация строк
    • Интерпретатор должен работать в построчном режиме, т.е. пользователь вводит выражение на консоль, ему выдаётся ответ. В случае возникновения ошибки пользователю выдаётся ошибка, но интерпретатор не должен завершаться.
  3. Доп. задание (на дополнительные очки): реализовать конструкцию let и локальные переменные:
    • (let (x 10) (+ 20 x))30
    • (let (x 10) (let (y 20) (* y (+ x 20))))600

В задании можно использовать любые известные вам функции, приёмы и библиотеки, кроме тех, что целиком решают одну из задач.