> Nim structures code as modules tied to types. By module I mean set of related > functions.
This would be very very nice, but... A module is a set of positive datatypes (tuples, objects, arrays, tables, and not to forget sets themselves) and negative datatypes (functions). They _could_ be bound to a type, therefore the module itself would get typed. But in Nim, this doesn't happen. Modules in Nim are unbound heterogeneous containers of any content, they are files. The majority of them contain generic (unbound) types. Therefore they need to be reevaluated over and over again and separate compilation is not possible.