Today I read the 2012 Honu paper:
http://www.cs.utah.edu/~rafkind/papers/honu-2012.pdf
Some impressions and a question:
- Well it's pretty obvious where I stand on my preference for lisp
syntax. But! I'll say the Honu paper is beautifully written and is
maybe the nicest non-s-expression approach to macros to date. (Not
as nice or (heh) expressive as if you use s-expressions, but it's
great to have this contribution for when you can't.)
- I was confused a bit by the $ foo ... $ delimiting. Why $ for both
the start and end? I would have thought to do `$( foo ... $)` or
`^ foo ... $` or something. Then it hit me: is this the same reason
we can't do two ellipses at the same level in pattern matching?
That's my guess, would love confirmation/denial.
- The design overall seems to make a lot of sense to me, except for one
big red flag for me: infix prioritization levels. Yikes! Is this a
good idea? So many hours wasted trying to make sense of arbitrary
ordering properties from standard algebraic notations, and now we're
adding the ability for users to add *new* complications? It seems to
me that SRFI 105 had the right idea: a "universal" infix notation
without ambiguity: {x + {y * z}}
My friend Lee Spector is more bold about it than I am:
On the first day of my presidency I will sign an executive order
banning infix notation, thereby preventing the senseless
squandering of so many of our precious mathematical and
computational resources.
--
https://twitter.com/leespector/status/1159155362957877249
Overall though, I want to say that even though I remain cautiously
skeptical about moving to a new surface syntax (but am more satisfied by
what I think the process for exploring it), it's hard to imagine a
better design for a non-s-expression syntax than what Honu has done,
assuming it isn't an "invisible parentheses" approach (like
Sweet-Expressions or Wisp). Good stuff, thanks to those who worked on
it.
- Chris