News for hackers. Stuff that matters.
Re:A few tips for writing macros in Clojure by nilliams on Sunday May 08, 2016 @07:14PM (#11656477)
What aspect do you dearly miss? (Honest question, I've never understood the S-expr trade-off, especially if macros are off the table).
Re:A few tips for writing macros in Clojure by pka on Sunday May 08, 2016 @07:35PM (#11656563)
Probably paredit. It's really so much better than non-structured editing. That said, there are structured editing plugins/modes/editors for other languages too.

However, looking back at Lisp/Clojure now I really don't like the syntax anymore. I don't care about the brackets, it's absolutely true that you learn to look past them in a matter of days, but the homogeneity and the "denselesness" really impact my ability to quickly parse an expression. Infix syntaxes make reading code much easier, imo.

Re:A few tips for writing macros in Clojure by roboguy12 on Monday May 09, 2016 @10:48PM (#11664862)
I thought that at first too about infixes being better (I've only been using Clojure for a few months), but I'm beginning to find the opposite. The only times when I miss an infix syntax is when doing math

    1 + (2 * 10) - (12 / 3)
is so much easier for me to read to read than

    (- (+ 1 (* 2 10) (/ 12 3)))
But when working with functions, I much prefer the standard Clojure syntax.
Re:A few tips for writing macros in Clojure by malloryerik on Tuesday May 10, 2016 @06:26AM (#11666154)
I believe the parens are off by one in the Clojure example and that it should be:

    (- (+ 1 (* 2 10)) (/ 12 3))   ;=> 17
I've found the threading operator can help in these cases.

    (-> (+ 1) (+ (* 2 10) (- (/ 12 3)))) 

Or, line breaks can clarify:

    (- (+ 1 (* 2 10))
       (/ 12 3))
or at the risk of overdoing it:

    (- 
      (+ 1 (* 2 10))
      (/ 12 3))
Now I know at first glance that I'm subtracting the results of those two lines from each other. Indeed the last two might be almost as clear as the infix, and are without any order of operations rules.

Also some don't like colored parens but I find them very clarifying.

Re:A few tips for writing macros in Clojure by pka on Wednesday May 11, 2016 @02:33PM (#11677942)
I have to disagree.

    f x . g
reads just so much easier than

    (comp (partial f x) g)
Re:A few tips for writing macros in Clojure by aaron-santos on Sunday May 08, 2016 @09:11PM (#11656936)
I took some time to think about this because it started off as a feeling and not a list of reasons.

For me it's mostly centered around control structures - if, for, switch, case (scala's pattern matching). Clojure's control structures are syntactically composed of ()'s and []'s. Scala's aren't. They are a coded into the language's grammar[1][2]. Clojure's ns forms parallel Scala's package and import statements, but are again Clojure's are syntactically composed of ()'s and []'s. I know it's a relatively small point, but control structures make up a significant portion of programs.

As a side note, I took a look at a Clojure grammar also specified for antlr[3]. My initial thought would be that Clojure's grammar would be appreciably smaller. It is, but not by as much as I was expecting. There are a lot of very little additions to the reader that add up [4][5][6].

[1] - Scala's syntax http://www.scala-lang.org/files/archive/spec/2.11/13-syntax-...

[2] - Examples https://github.com/lrlucena/grammars-v4/blob/master/scala/sc...

[3] - https://github.com/laurentpetit/ccw/blob/3738a4fd768bcb03996...

[4] - http://clojure.org/reference/reader#macrochars

[5] - https://yobriefca.se/blog/2014/05/19/the-weird-and-wonderful...

[6] - See "Special Characters" http://clojure.org/api/cheatsheet

Re:A few tips for writing macros in Clojure by d_t_w on Sunday May 08, 2016 @07:41PM (#11656585)
Structural editing, paredit, 100%.

I say that not being particularly accomplished with it. 15 years of programming Java, now 3 in Clojure, would dearly miss slurp and barf, the lesser appreciated virtues of homoiconicity.