
To read all comments associated with this story, please click here.
I think a lot of people are underwhelmed by the description in the tutorial, because feature-wise there don't seem to be many changes. The compact block syntax is new, but using data structures as functions really isn't. In Common Lisp, you can use the meta-object protocol to define a method that should be called if your object is called as a function. From there you can implement lookup semantics or whatever you want really. Of course, the notation isn't as compact in Common Lisp because you have to use FUNCALL or APPLY to call an object as a function.
That said, I think the focus of Arc is in concision, and the benefits of that are going to be hard to show in a tutorial. The way the built-in features interact with each other can have a huge impact on the size and clarity of the code. Ironically enough, this is much the same problem Common Lisp has. It's hard to tell just by reading the Hyperspec how elegantly CL's standard library meshes with itself. Little things like the ordering of parameter names or little extra features added via keyword arguments can pay big dividends in real code.
Member since:
2006-07-30
The first part of the tutorial looked pretty much like ordinary Scheme/Lisp to me. Writing [... _ ...] for (fn (_) (... _ ...)) seems new to me although I think he already mentioned this idea in a previous article about Arc.
Is making ("foobar" 0) return 'f' his invention or does the same concept of using data structures like functions also exist in Scheme/Lisp?
Overall this doesn't seem to be as revolutional as I had imagined after reading his articles. He got rid of some parentheses, granted.
I'd love to hear a professional Scheme/Lisp programmer's opinion about Arc and in how far it brings something new to the table...