I didn't see the later part of your message! Did you add that in or did I just miss it.
> And yeah, re: question 3 I couldn't convince the compiler to accept an > expression there, I got: "Error, cannot generate code for: M" and wrote an > omfg proc in frustration. This is, also, part of pushing the type system to > the edges. Yeah maybe related to the known bug ElegantBeef pointed out? > proc `[]=`(c:var ComplexBase,i:range[1..c.typeof.N], v:c.typeof.T) = This is very interesting tho, and related to my question, how did you "know" typeof would work there, or that '.T' works to access the generic parameter(??). I've tried similar things, but that's often when I get super confusing error messages and have no idea what is possible. Like some kind of solid spec info on what is possible semantically (regardless of bugs, but kind of what the language's intention is): proc name[A: Foo](x: Bar, # at this point in the declaration, # what "is" x (and A), and to what extend can I use them to derive new types in other parameters / return type / etc. Is the intention that they're just as if there was a `type x = ...` (or `let x: typedesc[..] = ..` tho typedescs seem to be dirty black magic). # if Bar is a typeclass, is the intention that x.P can be used to access concrete generic params? And the intention is that P is also fully reified, so inner parameters work, x.P.Q? # if Bar is an alias for some static[T], is the intention that I should be able to use x just as I would a T at this point? (modulo bugs) # similar questions about A, if the intention is that I can use it as if it's a fully reified type of Foo, etc. Run That kind of stuff.