Sorry, I seem to have been wrong. Nothing/nothing works that way with arrays, so I assumed it worked the same way with types. It seems like it does not and uses a lower bound of 8 for empty immutables.
It is probably simple to fix, I'll open an issue. Ivar kl. 13:29:48 UTC+2 onsdag 27. august 2014 skrev Magnus Lie Hetland følgende: > > Yeah, I've been thinking about this – and I'm actually using it for one of > my fields at the moment. Some of the other fields have type parameters > themselves, such as NTuples with lengths, etc., so this would be a > two-level thing, then. I couldn't supply the size of a tuple in this type > if there is no declared tuple – i.e., if that comes in as a parameter. (On > a side note, I could ensure that the relevant type parameter would be a > subtype of NTuple of the given size, I guess.) > > There's also the issue of checking that the fields have the right type – > *if* they're present. (Also doable, of course.) > > Now, I might not want to keep it all immutable – but I guess I could live > with/work with that. > > However … one reason I was a bit wary of going all-out on this was that > despite my intuition, which coincides with your statements above, Julia > does *not* report zero size for Nothing. If I instantiate your type above, > for example, with only nothing-parameters, sizeof() reports a size of 40. I > guess this is "canonical", and that it'll be optimized away – but why > doesn't sizeof() report 0, I wonder? >
