我对 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
,所以我猜测在这个特定情况下,操作发生在运行时。我如何强制在编译时执行此操作?宏?