technomancy, EN one thing that I appreciate in #fennel is the ability to learn from the history of lisps
#clojure made a big splash and gathered criticism from the Old Guard of lispers by using parens a lot more sparingly than Common Lisp or Scheme; for example
let
bindings are done inside square brackets instead of a double-layer of parens:(let [x 1 y 2] ...)
vs
(let ((x 1) (y 2)) ...)
apart from just being tidier, this had the benefit of greater consistency: in Clojure, when you saw an open paren, it usually meant a call to a function or macro, instead of ... some other structure in the language
however, Clojure still had plenty of exceptions to this; I think last I counted there were 7 or 8 distinct things an open paren could mean
in Fennel, we decided that wasn't what we wanted; parens always mean a call to a function/macro ... or in a binding context it could mean binding multiple values:
(local (ok val) (pcall my-function x y z))
but could we do better?
Add comment