Skip to content

Margin (inline) comments allow hanging closing parentheses? #258

Open
@shaunlebron

Description

@shaunlebron

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions