👑 Nim
Компилируемый язык с Python-подобным синтаксисом: типы, циклы, процедуры, макросы.
Шпаргалки · Программирование · #nim #systems
IDE и запуск
VS Code + расширение Nim, IntelliJ. nim c -r app.nim, nimble init, nimble install pkg, nimble test. Компилируется в C / C++ / JS.
Типы данных
let n: int = 1 # let неизменяемо, var изменяемо, const на этапе компиляции
var s = "a"; var f = 1.5; var b = true; var c = 'c'
var arr: array[3, int] = [1, 2, 3]
var sq: seq[int] = @[1, 2, 3] # динамический массив
var t = (1, "a"); var tbl = {"a": 1}.toTable
type User = object
id: int
name: string
type Color = enum red, green, blue
Операторы
+ - * /, div, mod, == !=, and or not, & (склейка), $ (в строку), in, .. / ..<, shl shr.
Циклы
for i in 0 ..< 3: echo i
for i, x in sq: echo i, x
while cond: discard
Процедуры
proc add(a, b: int): int = a + b
func pure(x: int): int = x * x # без побочных эффектов
let r = sq.mapIt(it * 2) # sequtils
Встроенные
echo, len, add, contains, parseInt, strutils.split, sequtils.filter, algorithm.sort, os.fileExists.
Асинхронность
import asyncdispatch
proc work(): Future[int] {.async.} =
await sleepAsync(100); return 1
echo waitFor work()
Коллекции
seq, array, Table, HashSet, CountTable, Deque (std/tables, std/sets, std/deques).
Библиотеки по задачам
Jester, Prologue (веб), Karax (UI на JS), nimpy (мост с Python), unittest (тесты), cligen (CLI).