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.

Reply via email to