Re: symbols - perhaps it's better to leave them in UTF-8, then only convert them to UTF-32 if and only if they are coerced to strings.
I suggest making tables work first before the really weird numbers ^^
Edit: there's also the problem of making I/O ports redirect to strings under construction. 'tostring is pretty much the idiomatic way of creating strings in Arc.
Edit2: As an aside, here's what I intend to do with ac.scm built-ins:
1) Remove ac.scm xdef'ed functions from the mac* stuff in xe.arc
2) Create a special lib-ac.scm.arc, where we can access primitives:
(set car
(fn (x)
(%car x))) ;will access primitive %car, but only in lib-ac.scm.arc
Code that isn't in lib-ac.scm.arc will not be able to access the primitives %foo.
The above will of course allow code like:
(map car (pair lst))
3) Finish up my inliner, so that user code of the form:
Yep. I left symbols encoded in UTF-8. When a string is output to anything (included when transformed to a symbol) it is translated to UTF-8. And I was planning to implement tables before the numeric tower. I think there's more fun in tables rather than in numbers :)