Содержание

  1. Ввод-вывод
    1. Простейший ввод-вывод
    2. Работа с последовательностями событий
    3. Разбор ввода
  2. Разбор и гомоиконность
    1. Стандартный парсер
    2. Операции с кодом
    3. Исполнение сгенерированного кода
    4. Гомоиконность
  3. Подрядки вычисления
    1. Аппликативный
    2. Нормальный
    3. Ленивый
  4. Потоки
    1. Основные определения
    2. Операции с потоками
    3. Конечные потоки
    4. Бесконечные потоки
    5. Ленивые опследовательности
  5. Отображения и множества
    1. Литералы
    2. Создание
    3. Проверки
    4. Операции

Домашнее задание 13. Функциональные выражения на Clojure

Функциональные выражения на Clojure
  1. Разработайте функции constant, variable, add, subtract, multiply и divide для представления арифметических выражений.
    1. Пример описания выражения 2x-3:
                              (def expr 
                                (subtract
                                  (multiply 
                                    (constant 2) 
                                    (variable "x")) 
                                  (constant 3)))
    2. Выражение должно быть функцией, возвращающей значение выражение при подстановке элементов, заданных отображением. Например, (expr {"x" 2}) должно быть равно 1.
  2. Разработайте разборщик выражений, читающий выражения в стандартной для Clojure форме. Например,
    (parseFunction "(- (* 2 x) 3)")
    должно быть эквивалентно expr.
  3. Усложненный вариант. Функции add, subtract, multiply и должны принимать произвольное число аргументов. Разборщик так же должен допускать произвольное число аргументов для +, -, *.
  4. При выполнение задания следует обратить внимание на:
    • Выделение общего кода для операций.