clojure-style-guide icon indicating copy to clipboard operation
clojure-style-guide copied to clipboard

Margin (inline) comments allow hanging closing parentheses?

Open shaunlebron opened this issue 1 year ago • 2 comments

I think the rules for margin comments are causing some confusion in the related Standard Clojure Style discussion:

Problem

The Clojure Style Guide’s rules for margin comments states:

  1. Write margin comments with one semicolon.
  2. Avoid using those in situations that would result in hanging closing parentheses.

But the given example seems to break the second rule:

(defn foo [x]
  x ; I'm a line/code fragment comment.
  )

Proposal

The example below from @yuhan0 follows these rules— by not expecting an inline comment to directly follow its referent expression (AST-wise):

(defn classify-squares [n]
  (->> (range n)          ; generate a bunch of numbers
       (map #(* % %))     ; calculate their squares
       (group-by even?))) ; and sort them by parity

This seems more conventional than the other example, which I actually haven’t seen before.

Rationale

One way to formalize this is to treat margin comments as actual sidenotes:

  1. Treat anything after an inline semicolon ; as “in the margin”.
  2. Gather trailing parentheses by ignoring anything in the margin.

shaunlebron avatar Sep 11 '24 02:09 shaunlebron

For visibility, here is a potential counter-example:

(comment
  (foo 1) ;;=> :foo
  (foo 2) ;;=> :bar
 )

imrekoszo avatar Sep 11 '24 10:09 imrekoszo

See also #259 (specifically related to @imrekoszo example).

seancorfield avatar Sep 11 '24 18:09 seancorfield