function.(x,y,z)
(function x y z)
(function x y z)
let a = 123, b = 456, c = 789;
# more code
vs: (let ((a 123)
(b 456)
(c 789))
; more code
)
In many cases outside of function calls, there are more parens. {
let a = 123, b = 456, c = 789;
# more code
}
Because Lisp let explicitly defines its scope, while the first example inherits the scope from whatever it is embedded in. (let [a 123
b 456
c 789]
...)
Clojure syntax was designed with a clear and deliberate attempt to remove many of the parenthesis from lisp syntax. This is just a part of the greater design goal of offering very concise and elegant syntax in general, which is one of the reasons I keep coming back to it.I can create a great tool in Ruby for example, but asking a computer illiterate to run it in Windows isn't going to happen.
You can however hand that person a .jar from Clojure and ask them to run it.
On Linux, you’re even able to compile most of it into a single binary.
My example has 2 parens.
Even if you're not excited about the JVM, ClojureScript is particularly productive for front end development, where I genuinely love it tremendously.