Thursday, February 14, 2008

Meaningless First Impressions of Arc

Almost posted on comp.lang.lisp:

> I think porting Cells is a very good test of Arc as a practical
> language (even at this early stage),

Yep, but it occurred to me that Mr. Graham would protest that transliterating a project however interesting is about as far as one can get from exploratory programming and he would be right. Hell, even someone working from a system spec still has to come up with the code.

> I appreciate you jumping in
> as the guinea pig.

I must confess, it is more like guinea frog (inside cll joke). But this dry material probably will not make me the next Imus in the Morning.

> I think it's much more informative than the "I
> wrote a wiki in 10 lines" that we've been seeing. What's your
> impression so far? Is there anything that really stands out, good or
> bad, while you've been working on the Cells port?

With 1% of the polls reporting, I miss my mud (the forty-six page index of Common Lisp the Language). No matter whether I reach for the #3 Torx driver or the articulating socket wrench extender I come up with the same vice-grip. I doubt I will ever get over this.

As for the brevity, that feels more like friction than grease, and I cannot even touch type.

But most of all I feel like I was right: it will be hard to tell until I have done a lot more Arc coding, because the brevity might feel like friction only because I have not gotten used to it. Especially fun is stuff that newly appeared in Arc 1 (click only to download) such as a hashtable lookup normally coded thus:
 (my-table sought-key)

...which can now be coded thus:
 my-table.sought-key

...and when the key is a literal we can rewrite:
  (oed 'peloria) as oed!peloria

This notation is generally applicable where one has a one-parameter function:
  abs.-42 -> 42

So the potential for code obfuscation is terrific. :) To get Cells to work I will have to write readers and writers, so you might see code like:
 (pressure my-boiler)

...which could as well be:
 pressure.my-boiler

...and since the boiler will be a hashtable, one would normally read the hashtable like this:
 my-boiler!pressure

My head is spinning. With Cells that would be a backdoor which would bypass the Cells mechanism entirely a la slot-value in Common Lisp. Bad client! Bad!

If Lisp is a local maximum in language design, all-sexprs-all-the-time might be the knife-edge ridge on which it stands. See we will.

No comments: