Arc Forumnew | comments | leaders | submitlogin
Arc, a Comedy of Errors: Part I
3 points by ehird 6176 days ago | 7 comments

    arc> ()
    ()
    arc> '()
    nil


3 points by elibarzilay 6176 days ago | link

You can also evaluate #f and get MzScheme's #f.

But that shouldn't matter, since they all behave in the same way as booleans. (Try to use each one in an `if' and see that it works.)

-----

1 point by ehird 6176 days ago | link

Does that make a difference? For a start, if () evaluates to anything it should evaluate to itself (I don't think we have any disagreement here), and 'x should certainly be x. Now, this implies that when you put a quote before (), it's read in as a different object. This is obviously nonsense: it's the Arc evaluator's `quote' that does this, as a way to work around the underlying Scheme. But missing that () by itself would evaluate to the underlying Scheme's () is just shoddy.

Paul Graham, you had years to do this. Why did you have to make something so incomplete and hacky? I didn't even expect Jesus, like most people - I thought it would be nothing too great. But this is just ridiculous.

-----

5 points by pg 6176 days ago | link

This is a trivial sort of ridiculous, though. Nil and the empty list are logically undistinguishable.

The reason I made something so incomplete in superficial respects like this is that I focused instead on things that mattered. Particularly, making programs shorter-- which I deliberately phrase in that low-key way, but which is in fact pretty near identical with what programming languages are for. In that respect Arc seems from my experience to be significantly better than CL or Scheme.

-----

1 point by kennytilton 6175 days ago | link

The funny thing is that just as you did this with Arc I have been trying to push somethinganything out the door on my own product (it too is pretty far along, it too has a ways to go) just to motivate me with user feedback. Seriously reconsidering...

-----

1 point by ehird 6176 days ago | link

I think your focus entirely on shortness is a bit misguided. If that's your goal, you should give up and just use Perl or similar. But of course that isn't you're entire goal, so you're being (unintentionally) misleading. I'm sure a goal isn't inconsistency like this.

-----

7 points by pg 6176 days ago | link

Perl programs for doing common things to strings are short in characters. They're not so short in tokens. But more importantly, Perl doesn't have the kind of brevity you can get from having macros.

-----

1 point by sjs 6176 days ago | link

What's wrong with that?

    arc> (is () '())
    t
    arc> (cons 1 ())
    (1)
    arc> (cons 1 '())
    (1)

-----