> bitsets - why are these even in the language and not a library?

Because they're **SUPER USEFUL** in game development, and from what I can tell 
lots of people use Nim for game development.

You need resistances in you RPG?
    
    
    type
      Element* = enum
        eFire, eWater, eEarth, eAir
    
    var myCharacterResistances: set[Element]
    
    myCharacterResistances.incl eFire
    
    if enemyAttack.element notin myCharacterResistances:
      echo "PREPARE YOUR ANUS"
    

You need to make a tile-based game?
    
    
    type
      OverworldTileProperty* = enum
        otpWater, otpLava
    
    if otpWater in tiles[playerPosition + playerMovement]:
      echo "Dude, only Jesus can walk on water"
    elif otpLava in tiles[playerPosition + playerMovement]:
      echo "FEEL THE BURN!"
    

Some even use them for game options, intrinsics, key items, etc. etc. As a game 
developer, this is actually one of the things that made me love Nim. Instead of 
using macro voodoo to get bitarrays (like in C) or needing an external 
dependency (like in most other languages), Nim's system.set is everywhere, it's 
simple and extremely fast.

Also, Nim takes a lot of inspiration from Pascal and if I remember correctly 
bitsets are a native type there too.

Regarding the other points, they're all very reasonable. I personally almost 
never use exceptions, so if Araq wants to go the Rust/Go route is fine by me.

Reply via email to