Is it possible for Clojure to add an "obj#method" or “obj.method” syntactic sugar?

clojure

#1

Is it possible for Clojure to add an “obj#method” or “obj.method” syntactic sugar?

If you add the syntactic sugar of “obj#method” like “class/staticMethod”, it will make the auto-complete better implementation.

“#” has analytical semantics, generally does not appear in the middle of the symbol, it is better on compatibility.

Currently, in notepad++, It can only use “obj.method” to implement retrieval and auto-completion, and then cut “obj” to the back of “.method”.

ClojureBoxNpp


#2

I believe Cursive has auto-completion on object methods – I think if you type (obj .met... then it offers suggestions based on the type of obj and when the method is selected, it rewrites the expression to (.method obj …

So any editor can provide a syntax for this sort of context-dependent code-assist if it wants to. There’s no need for Clojure itself to make any changes.


#3

Interesting, I just tried that and can confirm that Cursive does rewrite it after autocompletion.

This is also valid syntax:

(let [name "Shaun"]
  (. name toUpperCase))
=> "SHAUN"

I haven’t seen it used much, but it gives you the order you’d want for autocompletion.

https://clojure.org/reference/java_interop#dot

(macroexpand '(.toUpperCase "shaun"))
=> (. "shaun" toUpperCase)