Nim is really extensible. Features like async/await, `->` style anonymous 
functions, and string interpolation are defined in the stdlib, with little to 
no language level support. I have a lot of Ruby experience, a language know for 
its metaprogramming capabilities, and Nim is significantly more extensible.

Nim metaprogramming happens at compile time, which is very different from Ruby 
or Python. You can generate types based on the contents of a database, or the 
results of an http request, but once the program is built it isn't changing 
until you rebuild it. You can't introduce new types or functions at runtime 
(technically you could with the VM, but most people don't use Nim that way).

Can it support any programming paradigm? Who knows. It really depends on what 
level of support you're looking for, and how much work you're willing to do. 
You could write a Nim macro that imports and compiles code written in a 
completely different language if you wanted to, but at that point you're 
basically writing a new compiler inside of a macro, which is going to be a lot 
more trouble than it's worth most of the time.

If you give more details on what you're hoping to do you'll probably get more 
useful answers. Whatever it is, I'd say it's pretty likely that you could do it 
with Nim, but it could be a big undertaking. Or it could be a 5 line template 
that takes 2 minutes to write.

Reply via email to