This is a really nice blog post!
Your quick tour is very nice and detailed. In general I would say that it's a good read even for programmers who are not familiar with any scientific computing but want to learn more about Nim :)
Submitted it to r/programming: https://www.reddit.com/r/programming/comments/3pns1z/what_is_nim_and_why_it_matters_for_scientific/
Hope you don't mind :)
Hiya, I'm also looking at Nim for scientific computing. I'm curious as to what one can do with Generics and type abstraction in Nim. I quite like the idea of putting matrix dimensions in the type, but I'm wondering if you can do this without knowing the exact matrix dimension at compile time.
So, instead of saying "Matrix(10)", one would say "Matrix(dim)" where dim is unknown but guaranteed not to change during the program after it has first been set. The motivation is similar to the constant matrix dims, i.e. type annotation, type safety and removing the need for runtime checks (e.g. can I iterate over these matrices using the same limits without index checks?), but covers a broader use-case. Is this possible?
BTW I'm not trying to motivate very fancy dependent types, I think it would be enough to assume "dim always == dim" and "dim always != any_other_variable_or_constant". Also, this is mostly idle thought experiments rather than needing it for some killer use-case :-)
Thanks.