阅读 Array2D 模块的源代码,我在许多核心功能的实现中偶然发现了这个有趣的结构,例如:
[<CompiledName("Get")>]
let get (array: 'T[,]) (n:int) (m:int) = (# "ldelem.multi 2 !0" type ('T) array n m : 'T #)
我只能假设这是内联 CIL 的语法,并且在这里使用显然是为了获得性能优势。但是,当我尝试在我的程序中使用此语法时,我收到一个错误:
warning FS0042: This construct is deprecated: it is only for use in the F# library
这究竟是什么?有详细的文档吗?
最佳答案
我认为这有两个目的:
Add
以 F# 类型系统难以实现的高性能方式运行。 您实际上可以使用它,但您必须指定
--compiling-fslib
(未记录)和 --standalone
代码中的标志。
关于f# - 在 F# 标准库实现中看到的 (# ... #) 语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968054/