Sounds like a reasonable syntax. Would the value in a container in a container be accessed with ((foo))? It fits, but it might get old after a while.
Also, how similar would these "containers" be to pointers? It doesn't seem like it would be as useful, because I doubt you can increment/decrement a container.
So, what are the problems we might encounter if we actually use this?
The value pointed to by the container would be accessed with (foo), just a single layer of parens. The container's pointer would be mutated as (= (foo) ...) though. Oh well.
Edit: Oh, you said "container in a container". Yes, ((foo)) it is.
> It doesn't seem like it would be as useful, because I doubt you can increment/decrement a container
This functionality would be in a scanner, although a scanner, technically, would be just an iterator.
For instance, I fully intend to implement string scanners and input file scanners on the C++-side in SNAP; they would be somewhat "safe" wrappers around C++ iterators, which are just a generalization on the pointer. so (car foo) would be *foo and (cdr foo) would be (foo + 1).
> what are the problems we might encounter if we actually use this?
None at all, if you're talking about just containers and scanners. A container is just a reference to an Arc object. A scanner would just be an Arc-safe wrapper around an iterator.