The first idea, as previously mentioned, conflicts with destructuring. Plus, global variables shouldn't be assigned to much, anyway. Local variable assignment already handles this issue pretty well, with "let", "with" and "withs".
As for the second issue, lists are not a primitive type in Lisp: They are made out of cons cells. I think a "cons" symbol should take priority. Once we have that worked out and it proves useful a "list" symbol might make sense.
Yes, but then you can't print hash tables in a way that is also readable, and unambiguous with a list.
Right now:
arc> (= codes (obj "Boston" 'bos "San Francisco" 'sfo "Paris" 'cdg))
#hash(("Boston" . bos) ("Paris" . cdg) ("San Francisco" . sfo))
Sounds like a great recipe for creating a ten year language, like Perl.
Arc is, after all, a philosophical exercise at guessing what a hundred year language might look like (though clearly still falling well short of that goal)
Do you really think you're going to be calling a C++ function through an FFI in 100 years?
That being said, you are absolutely right that a lack of focus on libraries greatly hurts arc's chances at widespread success. I'm not sure if there is any good way to solve this dilemma, though, in the near future.
> Do you really think you're going to be calling a C++ function through an FFI in 100 years?
I think I will be dead in 100 years.
> I'm not sure if there is any good way to solve this dilemma
The only solution is to write libraries. Take some problem you think is generic enough for a library and write code to solve it. I've already written in Arc a library to download files through HTTP and a simple XML parser. They're not complete, but they're something. Talking about libraries' shortage won't solve the problem. We have to write code.
Do you really think you're going to be calling a C++ function through an FFI in 100 years?
I don't think we can imagine how we'll be programming in 100 years - Arc is a bit too easy to imagine - and was just about imagined nearly a half-century ago.
How would you design a language if you knew that you had >2^50 the processing power you have today to compile/interpret it?
The issue is that the variable is at the scope of the "do", which means it can't be a standard macro, but a change to the language implementation. It can definitely be done though- The question is more as to whether this offers enough conceptual advantage over "let"...
This is essentially the same (or very similar at least) to a system I implemented a while back, which you can read about here: http://arclanguage.org/item?id=7485
I added an additional twist that gives it additional advantages that I argue offset the cost of a new language construct.
That is cool though... I keep thinking about how neat it would be to get arc running on Google App Engine, assuming that ever moves to a parrot-based Python...
That is nice that anarki has thread-local storage... I had stability issues with anarki so I've just been using arc2 with some patches lately... but I've definitely been missing thread-local storage...