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.
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.
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...
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.
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.
MzScheme has a better profiling facility (the errortrace collection), but using it without source information is not too helpful.
It is possible to do that (and I have a patch that does it), but it's not a quick solution.
This cannot be done in a quick patch. If you want mutation in 3.99, you have to use mpairs -- but then you run against rest arguments being the usual immutable pairs.
Yes. Architecturally Arc is like a skin on MzScheme, in the sense that we made MzScheme do as much of the work as we could. Semantically it's not especially like Scheme.
So you should just judge Arc for itself. Its main disadvantages over other Lisp dialects are that it's slow and lacks libraries. Its main advantage is that programs come out shorter.
Not sure if this is the proper thread for you to address this, but I'm curious as to whether you think there would be in value to something like Arc -> C/Java/?
for libraries/frameworks/speed
Arc is intended to not be attached to any other language or VM. That's not to say you couldn't implement your own Arc runtime on top of a language of your choice. In fact, since there are already Schemes that run on top of both C and Java, you could do so simply by porting the Scheme parts to an appropriate Scheme. It's under 1000 lines of Scheme.