1.6๋ ์ ๊ฐ๋ฐ ๋์ ์ ์ ํ์ดํ์ ์ฌ์ฉํ๊ณ Pascal, C++, Python ๋ฐ Lisp๋ฅผ ์ผ๋์ ๋๊ณ ๋ง๋ค์ด์ง ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด Nim XNUMX์ด ์ถ์๋์์ต๋๋ค. Nim ์์ค ์ฝ๋๋ C, C++ ๋๋ JavaScript ํํ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. ๊ทธ ํ, ๊ฒฐ๊ณผ C/C++ ์ฝ๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํ์ผ๋ฌ(clang, gcc, icc, Visual C++)๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ํ์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์คํ ๋น์ฉ์ ๊ณ ๋ คํ์ง ์์ผ๋ฉด C์ ๊ฐ๊น์ด ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค. ๊ฐ๋น์ง ์ปฌ๋ ํฐ. Python๊ณผ ์ ์ฌํ๊ฒ Nim์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๋ธ๋ก ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ฌ์ฉํฉ๋๋ค. ๋๋ฉ์ธ๋ณ ์ธ์ด(DSL) ์์ฑ์ ์ํ ๋ฉํํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ ๋ฐ ๊ธฐ๋ฅ์ด ์ง์๋ฉ๋๋ค. ํ๋ก์ ํธ ์ฝ๋๋ MIT ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ์ ๊ณต๋ฉ๋๋ค.
์ ๋ฆด๋ฆฌ์ค์ ์ฃผ๋ชฉํ ๋งํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฐ๋ณต๊ธฐ์ ๋ํ ์ ํ ๊ตฌํ์ด ํฌํจ๋ iterable[T] ํด๋์ค๋ฅผ ์ถ๊ฐํ์ต๋๋ค. template sum[T](a: iterable[T]): T = var result: T for ai in a: result += ai resultassert sum(iota(3)) == 0 + 1 + 2 # ๋๋ 'iota( 3).ํฉ'
- ์ ํ์ ์ผ๋ก ํจ๊ณผ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ". EffectsOf" ์ฃผ์์ ๋ํ ์คํ์ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ ์๋ ๊ฒฝ์ฐ(nimHasEffectsOf): {.experimental: "strictEffects".} else: {.pragma: effectOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {. effectsOf: cmp. }
- ์๋ก์ด ๊ฐ์ ธ์ค๊ธฐ ๊ตฌ๋ฌธ "import foo {.all.}"์ด ์ ์๋์ด ๊ณต๊ฐ ๊ธฐํธ๋ฟ๋ง ์๋๋ผ ๋น๊ณต๊ฐ ๊ธฐํธ๋ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ฐ์ฒด์ ๋น๊ณต๊ฐ ํ๋์ ์ก์ธ์คํ๊ธฐ ์ํด std/importutils ๋ชจ๋๊ณผ privateAccess API๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ์์คํ {.all.}์์ system2 import nil echo system2.ThisIsSystem import os {.all.} echo ์ด์ํ ํ๊ฒ
- ๋์ ํ๋๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ํธ ์ฐ์ฐ์์ ๋ํ ์คํ์ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. import std/json template '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] let j = %*{โa1โ: {โa2โ: 10}} ์ด์ค์ j.?a1.?a2.getInt == 10
- ๋ธ๋ก ์ธ์์ ์ถ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ํ ํ๋ฆฟ fn(a = 1, b = 2, body1, body2) = fn(a = 1) ํ๊ธฐ: bar1 do: bar2
- ์ฌ์ฉ์ ์ ์ ๋ฆฌํฐ๋ด์ ๋ํ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค(์: "-128'bignum'"). func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} ์ฃผ์ฅ 0xffffffffffffff'big == (1'big shl 64'big) - 1'big
- ์ปดํ์ผ๋ฌ๋ ๋ช ๋ น์ค์์ Nim ๋ช ๋ น์ ์ง์ ์คํํ๊ธฐ ์ํด "โeval:cmd" ๋ช ๋ น์ ๊ตฌํํฉ๋๋ค(์: 'nim โeval:"echo 1โณ').
- nimscript ๋ฐฑ์๋์ ๋ํ ์์ ๋ง์ ํ์ฅ์ ์์ฑํ๊ธฐ ์ํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ์ค๋ฅ์ ๊ด๋ จ๋ ์ปจํ ์คํธ๋ฅผ ํ์ํ๊ธฐ ์ํด ์ค๋ฅ ๋ฉ์์ง๊ฐ ํฌ๊ฒ ํ์ฅ๋์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ฅผ ๊ตฌํํ์ต๋๋ค.
- "--gc:arc" ๋ฐ "--gc:orc" ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋์์ต๋๋ค.
- ๋ชจ๋ ๋ฐฑ์๋์์ ์ ์ ๋ฐ ๋ถ๋ ์์์ ์ซ์๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ์ฝ๋์ ์ ํ์ฑ๊ณผ ์ฑ๋ฅ์ด ํฅ์๋์์ต๋๋ค.
- ์ด์ ์๋ C ๋ฐฑ์๋์์๋ง ์๋ํ๋ ๋ชจ๋(์: std/prelude ๋ชจ๋)๊ณผ JS, VM ๋ฐ nimscript ๋ฐฑ์๋์ ํธํ์ฑ์ด ํฅ์๋์์ต๋๋ค. C, JS ๋ฐ VM ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ stdlib ๋ชจ๋ ํ ์คํธ๊ฐ ํ๋ฆฝ๋์์ต๋๋ค.
- Apple Silicon/M1 ์นฉ, 32๋นํธ RISC-V, armv8l ๋ฐ CROSSOS ์์คํ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- std/jsbigints, std/tempfiles ๋ฐ std/sysrand ๋ชจ๋์ ์ถ๊ฐํ์ต๋๋ค. ์์คํ , ์ํ, ๋ฌด์์, json, jsonutils, os, typetraits, Wrapnils, ๋ชฉ๋ก ๋ฐ ํด์ ๋ชจ๋์ด ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru