Nim 静态编译

问题描述 投票:0回答:1

我对 Nim 完全陌生。

Nim 会在编译过程中自动尝试做所有它能做的事情吗? 文档讨论了很多关于在编译时计算静态内容的内容,这似乎是该语言的指导思想。

我有一个Python程序,它通过一堆嵌套循环来计算一些东西,每个循环生成一个数组,然后根据数组中的值计算启发式。 除了在最后将启发式写入文件或控制台之外,运行期间没有任何 I/O。

输出是 100% 确定性的,并且原则上在程序运行之前是已知的,但是 Python 当然会在运行时计算输出,即使在启用多处理之后,这也可能需要很长时间(因为问题是 CPU 和内存限制的) ).

如果我用 Nim 重写 Python 程序,编译器是否足够聪明,可以在编译时计算出输出? 因此,运行时只会将最终输出写入文件。

我可以将 Nim 中的 Python 程序简化为:

var x: int
for i in 1..10:
    x += i
echo x

退货:

55

这里几乎不可读的 C 输出在

nimAddInt(...)
内部有一个
NimMainModule
调用,所以我猜测在这种特殊情况下该操作发生在运行时。 我如何强制它在编译时进行? 宏?

static nim-lang
1个回答
0
投票

Nim 不会在编译时自动执行操作。你必须明确地告诉它。幸运的是,这就像在编译时上下文中使用结果一样简单。例如,将其分配给

const
或明确地将所有内容放入
static
块中。

© www.soinside.com 2019 - 2024. All rights reserved.