Skip to main content
2 of 2
deleted 3 characters in body

What are the practical benefits of LISP like syntax which Clojure uses over Java like syntax of Scala?

I spent couple of months learning Scala and got overwhelmed by number of different constructs it had, After looking at partial functions, partially-applied functions, pattern matching, actor syntax, I gave a thought to learning Clojure which doesn't have too much in terms of syntax but looking at the how Java inter-operability is handled, it looks very difficult to get use to.

for example: things like doto, new and .

Every time I start typing a function, there are times I write (1 + 2) instead of (+ 1 2).

It looks like I will have to completely forget how I write regular programs to get use to this syntax.

Also finding it difficult to deal with side-effects that do and let form have. Aren't they similar to what functions with void type are ?

Things like registering a callback,things normal I/O, how can such things be side-effects free.

Till now all I really liked about Functional Programming is that, immutability makes concurrency easier when dealing with shared data, functions as first class objects and having higher-order functions, apply,map and reduce with functions and lists .

I wanted to know, are there practical benefits I will get once I am use to this syntax ? I f I continue to learn Scala and avoid using var, and always use recursion instead of loops. I can do all the above things and still write understandable code.