Кажется, что все необходимо скопировать в скобки в clojure. Даже простой мир приветствий!
(println "Hello world!")
В чем преимущество этого синтаксического решения?
Кажется, что все необходимо скопировать в скобки в clojure. Даже простой мир приветствий!
(println "Hello world!")
В чем преимущество этого синтаксического решения?
Основная причина заключается в том, что Clojure был разработан как homoiconic, то есть код выражается в основных структурах данных языка. Все Lisps разделяют это свойство, но мало других языков. В результате на весь языковой дизайн Lisps находится сильное влияние этого решения.
Выбор был сделан в начале дизайна Lisp, чтобы списки использовались для вызова функции в форме:
(function arg1 arg2 arg3) => some result
Это имеет множество преимуществ:
(cons function-symbol list-of-args)
Имя функции могло быть помещено вне круглых скобок:
function (arg1 arg2 arg3) => some result
Но у этого было бы много недостатков:
Как Clojure
(println "Hello world!")
отличный от
println("Hello world!")
других языков? То же количество круглых скобок только в разных положениях.
Параны ограничивают вызов функции (в виде списка). В C-подобных языках параны заключают только параметры, а в LISP -поле языках они включают имя функции.
Lisp используют s-выражения (заключенный в скобки код) в качестве основы для кода и данных. Это очень мощно, поскольку дает Lisp уникально мощную макросистему. См. Также homoiconcity.