Содержание
- JS-подобные объекты
- Ассоциативные массивы и прототипы
- Свойства
- Методы
- Конструкторы
- Наследование
- Java-объекты
- Интерфейсы
- Реализация
- Изменяемые поля
- Работа с Java-классами
- Изменяемое состояние
- Динамические переменные
- Локальные переменные
- Ссылки
Домашнее задание 11. Объектные выражения на Clojure
-
Разработайте конструкторы
Constant,Variable,Add,Subtract,Multiply,DivideиNegateдля представления арифметических выражений.-
Пример описания выражения
2x-3:(def expr (Subtract (Multiply (Constant 2) (Variable "x")) (Constant 3))) -
Функция
(evaluate expression vars)должна производить вычисление выраженияexpressionдля значений переменных, заданных отображениемvars. Например,(evaluate expr {"x" 2})должно быть равно 1. -
Функция
(toString expression)должна выдавать запись выражения в стандартной для Clojure форме. -
Функция
(parseObject "expression")должна разбирать выражения, записанные в стандартной для Clojure форме. Например,(parseObject "(- (* 2 x) 3)")
должно быть эквивалентноexpr.
-
Пример описания выражения
- Сложный вариант.
-
Конструкторы
Add,Subtract,MultiplyиDivideдолжны принимать произвольное число аргументов. Парсер так же должен допускать произвольное число аргументов для+,-,*,/. -
Функция
(diff expression "variable")должна возвращать выражение, представляющее производную исходного выражения по заданной переменной. Например,(diff expression "x")должен возвращать выражение, эквивалентное(Constant 2), при этом выражения(Subtract (Constant 2) (Constant 0))и(Subtract (Add (Multiply (Constant 0) (Variable "x")) (Multiply (Constant 2) (Constant 1))) (Constant 0))так же будут считаться правильным ответом.
-
Конструкторы
- При выполнении задания можно использовать любой способ представления объектов.
- При выполнении задания можно использовать функции, для определения JS-like объектов, приведённые на лекции.
Библиография
- Clojure
- Clojure Cheat Sheet
- Daniel Higginbotham Clojure for the Brave and True (Chapters 10, 12)