在 nim 中传递函数

passing functions in nim

我在 Nim(版本 0.10.2)中传递数学函数 (procs) 时遇到问题。

import math

var s1 = @[1.1, 1.2, 1.3, 1.4]
var s2 = map(s1, math.sqrt)

我收到错误

Error: 'sqrt' cannot be passed to a procvar

如果我为 sqrt 编写一个包装函数,它就可以正常工作。

proc fxn(x: float): float = math.sqrt(x)
var s2 = map(s1, fxn)

我使用平方根和地图作为示例,但最终我会将 sqrt(和其他数学过程)传递给另一个过程。有没有不用编写包装函数就可以做到这一点的方法?

有计划通过默认启用 procvar pragma 并为 C 导入的 proc 制作包装 procvar 来使它默认工作:https://github.com/nim-lang/Nim/issues/2172