Linked by Thom Holwerda on Tue 29th Jan 2008 23:06 UTC, submitted by rayiner
General Development "This site is about Arc, a new dialect of Lisp. It's unfinished, but usable, so we decided to release what we have so far. The current version compiles into MzScheme and structurally is as much a skin on MzScheme as a separate language. For example, Arc's read is MzScheme's, and so are Arc's numbers and math operations. But from the average programmer's point of view, Arc is no more similar to Scheme than any two Lisp dialects are to one another. Arc is designed above all for exploratory programming: the kind where you decide what to write by writing it. A good medium for exploratory programming is one that makes programs brief and malleable, so that's what we've aimed for. This is a medium for sketching software."
Thread beginning with comment 298333
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE: How much of this is new?
by rayiner on Wed 30th Jan 2008 01:46 UTC in reply to "How much of this is new?"
Member since:

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.

Reply Parent Score: 4