複数の言語からインスピレーションを得ているため、
Nim のシンタックスは理解が容易あり、
コードの修正は非常に効率的なものとなります。
インデントに意味を持たせたシンタックス
Python に影響を受けた多重コンストラクタ
複数行ラムダ
Oberon に影響を受けた可視性マーカー
Pascal に影響を受けた効率的な定義ができる型階層 (type sections)
importstrformattypePerson=objectname*:string# フィールドは `*` でエクスポートします。age:Natural# Natural 型の age を正数として確保します。varpeople=[Person(name:"John",age:45),Person(name:"Kate",age:30)]forpersoninpeople:# 型安全の文字列補完。echo(fmt"{person.name} is {person.age} years old")
各種オペレーティング・システムへのサポート
Nim はプラットホームとして、すべての主要オペレーティングシステム、および様々なニッチプラットホームにも
サポートしています。三大オペレーティング・システムを
完全サポートしていることを誇りに思います。
Nim のメタプログラミング機能はジェネリック、テンプレートとマクロなどに対応しています。
これにより、各種プログラミング・パラダイムに対応することで Nim の拡張を可能にし、
開発者はボイラープレートを書かなくて済むようになります。
標準ライブラリ async await (非同期待機)
はメタプログラミング機能を用いて実装しております。
また、 Nim コミュニティでは様々なプログラミング・パラダイムを
実装してパッケージを色々と開発しています。
importmacros,strutilsmacrotoEnum(words:static[string]):untyped=result=newTree(nnkEnumTy,newEmptyNode())forwinsplitWhitespace(words):result.addident(w)typeColor=toEnum"Red Green Blue Indigo"varcolor=Indigo
分散パッケージ管理
Nim パッケージマネージャの名前は Nimble です。
パッケージは Git と Mercurial リポジトリで配布されており、
バージョン情報を決定するためにネット経由でタグを照会します。