Something doesn't sit right: the connection between types and values. Maybe it's time to look at Haskell solutions to this. What is the essence of bridging both stages? This is for later.. Maybe it's going to be possible at some point to just put the array size in a node and use a "pierce trough" to the type annotation. Anyways, I've removed the array size parameterization.