Access control (public/private)
Tons of primitive numeric datatypes (c++)
Having both nil and false
More than one kind of function (methods, blocks and procs in ruby)
Security levels (Java, Ruby)
People keep saying that it's unicode is a library issue, but it's not! It's a language issue!
If you move unicode to the libraries, you have to move the string type to the libraries too, assuming strings are lists of unicode characters. And if you move the string type to the library, how can you convert a symbol to a string?
That's not an option, so the alternative is that strings are just byte arrays, ignorant of their encoding, and you need libraries to find out what the length of a string is, and you're back in the tar pit where Ruby and PHP were in 1997 and where they pretty much still are today.
I've been down that road before. I know exactly where it ends.
I guess I'm enjoying thinking of characters/strings/whatever in the same way I think of a media stream. I don't reason about media streams in my general programming, but when I need to do so I use a specialized, application-specific library--the language isn't built with any preconceived notion of what music is, or an image, or video. I like a minimal (if even that) built-in notion of what char/text is. I like Arc (so far) and I do hope it avoids premature textualization for a very long time:-)
I'd like to see a separate parser that can be programmatically modified. So people can use {} for macros, or define custom literals.
Javascript has this notation for hashes with symbol keys:
{a: 97, b: 98, c: 99}
Ruby has this notation for lists of strings:
%w(monday tuesday wednesday).
Ruby also has 5 different ways of writing a string literal, all of which are useful.
These things are not cs-research topics, but they make programming so much more pleasant.
I know very few web frameworks which have Arc's style of implementing user actions, and for good reasons: either you've got a huge memory leak, or links have an expiry date. (I got a deadlink-error while clicking on reply...)
I have a hypothesis about bloating memory: it will stop mattering soon. Solid-state non-volatile storage at RAM speeds on a fast bus will allow for terabytes of memory -- and increase with the unimpeded Moore's Law of storage. I know of at least one company, FusionIO, offering this as a product already.
If you can store all but the largest databases in memory, why not use a web framework that doesn't bother with a "real" DB like MySQL? But clearly, I'm talking about memory hungry systems generally, and not memory leaks.
You can set an explicit expiration or have the links gced fifo. I used the latter in the example (and the reply form), but for something more critical (like YC funding applications) I'd add an explicit expiration. It's only one more token.
Never mind + and *, how should polymorphism work in general? Polymorphism means "several functions with the same name, dispatching on type" which implies some kind of objects.
Arc already supports a Javascript-like OO-system (probably every language with first-class functions does), maybe we should experiment with that? See if we can get Prototype running on Arc?
> Polymorphism means "several functions with the same name, dispatching on type" which implies some kind of objects.
I'm assuming that by "some kind of objects", you mean a user-extensible type system.
You can have multiple dispatch on function arguments (by type or even by instance) without providing user-extensible types, so it's not really "imply". Just sayin'...