问题标签 [nim-lang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
896 浏览

templates - 模板和宏中的类型化 vs 非类型化 vs expr vs stmt

我最近一直在使用模板和宏,但我不得不说我几乎没有找到关于这些重要类型的信息。这是我肤浅的理解:

  • typed/expr 是以前必须存在的东西,但您可以使用 .immediate。克服它们。
  • untyped/stmt 是之前没有定义的东西/一个或多个语句。

这是一个非常模糊的类型概念。我想对它们有更好的解释,包括哪些类型应该用作返回。

0 投票
1 回答
210 浏览

nim-lang - 数组上的 MD5,array[0..63, uint8] 到 cstring 的转换

我正在尝试对数组 [0..63, uint8] 执行 md5Update 但我得到了

似乎它想要一个 cstring 输入而不是一个缓冲区。那么如何对二进制数据执行 md5Update() 呢?(我不希望最后有一个空字符......)

0 投票
2 回答
426 浏览

c++ - 将以下 C++ 代码翻译成 Nim

我试图通过转换不同的代码来学习 Nim,但我偶然发现了一些我以前从未见过的东西。

我了解三元运算符是什么以及它是如何工作的,但我不太了解变量“t”和“cnt”(都是整数)和数组“​​p”(整数数组)的情况。使用增量作为“p”的索引如何工作?

然后是 sort 函数,我完全放弃了它,因为我找不到任何关于它的作用的文档(事实上它将整数添加到数组中显然没有帮助)。

0 投票
1 回答
677 浏览

generic-programming - 如何在 Nim 模板中获取 expr 的字符串表示

是否有可能在 a 中获取表达式(或标识符)的字符串表示形式template?例如,有下一个代码:

name是否可以在模板中获取表达式的字符串表示形式?

0 投票
2 回答
377 浏览

profiling - 如何使用 nimprof?

在我的一个 Nim 项目中,我遇到了性能问题。我现在正在尝试使用nimprof以查看发生了什么。我的主源文件中有一个import nimprof,我正在使用--profiler:on. 当我运行程序时,我可以看到以下消息:

但是,profile_results.txt仅包含以下内容:

运行时间大约是 1 分钟——所以我认为这还不足以对任何东西进行采样。有什么办法可以从中得到更有意义的东西nimprof吗?

0 投票
1 回答
144 浏览

nim-lang - Nim:在 mac 上,无法打开标准导入

我在 Mac 上使用 nim,但遇到了以下问题:

尝试编译时出现此错误:

csvx.nim(1, 6) 错误:无法打开“strutils”~/dev/polyglot/csvx/

我使用“基于生成的 C 代码安装”选项安装了 nim。

0 投票
4 回答
2200 浏览

nim-lang - 从序列中解压缩多个变量

我期待下面的代码打印chr7

相反,它打印@[chr7, 127471196, 127472363].

有没有办法同时从序列中解压缩多个值?

如果元素不连续,那么执行上述操作的最简单方法是什么?例如:

给出错误:

0 投票
1 回答
2382 浏览

nim-lang - Nim:如何证明不为零?

对我来说,Nim 最有趣的特性之一是not nil注释,因为它基本上允许在编译器的帮助下完全排除各种 NPE / 访问冲突错误。但是,我在实践中很难使用它。让我们考虑一个最基本的用例:

这里的一个直接陷阱是,即使实例化这样的 aSafeSeq也不是那么容易。尝试

因错误而失败cannot prove 'newSeq(100)' is not nil,这令人惊讶,因为人们可能会认为 anewSeq不是 nil。一种解决方法似乎使用这样的助手:

尝试使用SafeSeq. 例如,人们可能期望当您映射 a 时SafeSeq,结果不应再次为 nil。但是,这样的事情也会失败:

一般的问题似乎是,一旦返回类型变为普通类型seq,编译器似乎就会忘记该not nil属性并且无法再证明它。

我现在的想法是引入一个小的(可以说是丑陋的)辅助方法,让我能够实际证明not nil

但是,编译器在这里也无法证明not nil。我的问题是:

  • 在这种情况下,我应该如何帮助编译器进行推断not nil

  • 此功能的长期目标是什么,即是否有计划使推理not nil功能更强大?手册的问题proveNotNil在于它可能不安全,并且与编译器负责证明它的想法背道而驰。但是,如果proveNotNil仅在极少数情况下才需要它,那不会有太大伤害。

注意:我知道seq尝试nil不可知论,即即使在这种情况下一切正常nil。但是,这只适用于 Nim 内部。在连接 C 代码时,nil-hiding-principle 成为错误的危险来源,因为nil序列仅在 Nim 方面是无害的......

0 投票
1 回答
620 浏览

nim-lang - 错误:表达式没有地址

错误:

编译器想要什么?

0 投票
3 回答
5032 浏览

nim-lang - 将 seq[char] 转换为字符串

我的情况是,我有一个seq[char],像这样:

转换s回字符串(即"abc")的最佳方法是什么?Stringifying with$似乎给"@[a, b, c]",这不是我想要的。