January 2018

S M T W T F S
  123456
78910111213
14151617181920
21222324252627
28293031   

Style Credit

Expand Cut Tags

No cut tags
Wednesday, January 30th, 2008 11:04 am
http://arclanguage.org/

Well, that makes the "which language shall I learn next" question rather easier...

First impressions (based on reading the tutorial rather than playing with it): I like it. It embodies PG's philosophy that a language should get out of your way and let you shoot yourself in the foot because one day, you might need to do tarsal surgery and only have a pistol to hand. In many respects, it's the anti-Haskell: it encourages you to put off the decision of how to represent your data as long as possible. Here's a feature along those lines that I liked: indexes into data-structures are indistinguishable from function calls. So if I write
(foo 0)
you have no way of knowing if foo is a list, a string or a function. Evaluation is strict by default, which I think is a net loss (but you've got macros, so it's swings and roundabouts, I suppose). The anaphoric (pronoun-introducing) macros from On Lisp are included by default - I've found pronouns to be very useful in Perl, so this can only be a Good Thing. I was amused to see that most of the language is defined in Arc, and that PG seems to think that this is a bold and novel experiment :-)
Wednesday, January 30th, 2008 03:01 pm (UTC)
Of course, now that I'm looking more closely into actually trying out those two languages, I notice that one is actually built on top of the other...
Thursday, January 31st, 2008 11:24 pm (UTC)
Yep :-)

There's been a lot of criticism of Arc, much of it saying "he hasn't done anything really new, all this stuff has been done in Lisp dialects before!" But I think it was probably a good idea to explicitly not be a Scheme, so Arc can grow in non-Schemey directions.

I dunno what PLT Scheme's like, but I hear good things about it :-) Arc looks cool, but it's very much a version 0 at the moment.
Friday, February 1st, 2008 03:12 pm (UTC)
The challenge for me here (as someone whose only lisp experience is a smattering of the widely decried emacs-lisp), is figuring out which bits of arc are just lisp, and which bits are genuinely new.

So far as I can tell, at the moment, arc is just PLT scheme without so many libraries, with shorter names for several things, some syntactic sugar (the function composition operator for example) and some new looping constructs.

There's almost certainly more to it than that, but I'm having trouble finding it without learning PLT first. Given those first impressions, I'm thinking that maybe my time would actually be better spent learning PLT first...

Oh yes - and with strings as lists - I certainly approve of that.

I dunno - does anyone with more knowledge have an opinion on which is worth spending time on first?
Monday, February 4th, 2008 05:04 pm (UTC)
I think that Arc is meant to be like Scheme, but more conducive to metaprogramming. It's hard to tell right now, of course, because there's so little there - it is, after all, version 0 :-)
Friday, February 1st, 2008 10:01 am (UTC)
Further thoughts: the problem with Scheme is basically the same as the problem with Pascal. They're both great teaching languages, with simple, orthogonal cores that can be easily grasped by students, so they can concentrate on learning the actual material without getting distracted by learning all the weird exceptions and special cases. But, because they're intended for teaching, only the core is standardised. Lots of things which are crucial to practical programming but inessential for teaching are left out. Hence, any distribution that aspires to practicality has to make choices of what to do about the bits that aren't in the standard. This is particularly bad in Scheme's case, because it's designed to teach a class in programming language design and implementation - there's no standard module system, for instance (but plenty of advice on how to whip up your own out of lambdas...). This in turn makes it very hard to develop a standard library of code that's portable across distributions - everyone has their own idea of what a module is, or of how to talk to the operating system, etc.
Friday, February 1st, 2008 03:02 pm (UTC)
That's just the thing - PLT Scheme is a whole system, complete with some fairly big looking standard libraries, and also a cpan-like community thing called PLaneT.

In their recommended implementation (the GHC of the PLT world?), they also don't feel the need to restrict themselves to only allowing text in program source...

My first impression is that I'm quite impressed with the whole package. I'll have to add "play with drScheme" to my tuit-list.