Skip to content

Nomad192-student-projects-ct-itmo/Functional-Expression-clj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Functional Expression in Clojure

Обьектные выражения на Clojure:
1 Часть - Функциональные выражения (текущая)
2 Часть - Объектные выражения

Функциональные выражения на Clojure

  • Разработайте функции constant, variable, add, subtract, multiply, divide и negate для представления арифметических выражений.

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


Сложный вариант.

Функции add, subtract, multiply и divide должны принимать произвольное число аргументов. Разборщик так же должен допускать произвольное число аргументов для +, -, *, /.


  • При выполнении задания следует обратить внимание на:
    • Выделение общего кода для операций.

Модификации

  • MeanVarn. Дополнительно реализовать поддержку:
    • операций произвольного числа аргументов:
      • mean – математическое ожидание аргументов, (mean 1 2 6) равно 3;
      • varn – дисперсия аргументов, (varn 2 5 11) равно 14;
  • SumexpSoftmax. Дополнительно реализовать поддержку:
    • операций произвольного числа аргументов:
      • sumexp – сумма экспонент, (sumexp 8 8 9) примерно равно 14065;
      • softmaxsoftmax первого аргумента, (softmax 1 2 3) примерно равно 0.09;
  • PowLog. Дополнительно реализовать поддержку:
    • бинарных операций:
      • pow – возведение в степень, (pow 2 3) равно 8;
      • log – логарифм абсолютной величины по основанию абсолютной величины, (log -2 -8) равно 3.
  • ExpLn. Дополнительно реализовать поддержку:
    • унарных операций:
      • exp – экспонента, (exp 8) примерно равно 2981;
      • ln – натуральный логарифм абсолютной величины, (ln -2981) примерно равно 8.
+ SinCos
+ SinhCosh
+ SumAvg

+ MeanVarn 
+ SumexpSoftmax 
+ PowLog 
+ ExpLn 

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published