PLDB
Languages Features Calendar CSV Lists Blog About Sponsor Add Language
GitHub icon

Nim

Nim

Nim is a pl created in 2008 by Andreas Rumpf.

#93on PLDB 14Years Old 19.1kUsers
3Books 0Papers 8kRepos

Try now: Riju · TIO

Nim (formerly named Nimrod) is an imperative, multi-paradigm, compiled programming language designed and developed by Andreas Rumpf. It is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C and compiling to JavaScript, C and C++.. Read more on Wikipedia...


Example from Compiler Explorer:
# Type your code here, or load an example. proc square(num: int): int {.exportc.} = num * num
Example from Riju:
echo "Hello, world!"
Example from hello-world:
echo("Hello World")
Example from the Hello World Collection:
# Hello world in Nim echo "Hello World"
Example from Linguist:
# from: https://github.com/nim-lang/Nim/blob/27b081d1f77604ee47c886e69dbc52f53ea3741f/compiler/nimfix/nimfix.nim.cfg # Special configuration file for the Nim project # gc:markAndSweep hint[XDeclaredButNotUsed]:off path:"$projectPath/.." path:"$lib/packages/docutils" path:"$nim" define:useStdoutAsStdmsg symbol:nimfix define:nimfix cs:partial #define:useNodeIds define:booting define:noDocgen
Example from Wikipedia:
proc printf(formatstr: cstring) {.header: "<stdio.h>", varargs.} printf("%s %d\n", "foo", 5)

Language features

Feature Supported Example Token
Unicode Identifers
let δ = 0.00001
Booleans
 let res = true
true false on off
Strings
"Hello world"
"
Assignment =
MultiLine Comments
#[ A comment
]#
#[ ]#
Print() Debugging echo
Line Comments
# A comment
#
Static Typing
Semantic Indentation
Macros
https://hookrace.net/blog/introduction-to-metaprogramming-in-nim/#macros
Comments
Gotos ϴ

Books about Nim from ISBNdb

title authors year publisher
Mastering Nim Rumpf, Andreas 2022 Independently published
Nim in Action Picheta, Dominik 2017 Manning Publications
Nim in Action Picheta, Dominik 2017 Manning
tcp.html · nim.html · llvmir.html

View source

PLDB - Build the next great programming language · v2022 · Day 33 · Docs · Build · Acknowledgements · Traffic Today · Traffic Trends · Mirrors · GitHub · feedback@pldb.com