(F#,OS X 的单声道)visual studio 代码中发生错误,但成功将文件发送到 fsi(fsi:发送文件)

(F#, mono for OS X) Errors is happened in visual studio code but send file to fsi successfully (fsi:send file)

我在 visual studio 代码中遇到以下代码错误。但是,我能够使用命令 (fsi:send file) 发送文件并且它已成功执行。看来我没有正确设置带有 Ionide 的 VSC。 请随时发表评论。

#load "packages/MathNet.Numerics.FSharp.3.14.0-beta01/MathNet.Numerics.fsx"  

open MathNet.Numerics

SpecialFunctions.Gamma(0.5) // Unexpected identifier in implementation file

open MathNet.Numerics.LinearAlgebra
let m : Matrix<float> = DenseMatrix.randomStandard 50 50
(m * m.Transpose()).Determinant()

vscode中的语法检查错误和错误,但代码可以在fsi中执行

  1. 此指令只能用于 F# 脚本文件(扩展名为 .fsx 或 .fsscript)。删除指令,将此代码移至脚本文件或使用“#if INTERACTIVE”/“#endif”
  2. 分隔指令
  3. 命名空间或模块 'MathNet' 未定义。
  4. 实现文件中有意外的标识符

第一个错误 "This directive may only be used in F# script files (extensions .fsx or .fsscript)" 告诉您如何解决它。您没有告诉我们您的 F# 文件的文件名,但我敢打赌它以 .fs 结尾,对吗? .fs 扩展名适用于属于较大项目的文件。一个好的经验法则是,如果你有任何 .fs 文件,你需要一个项目文件(目前它将是 .fsproj 格式,这是一个丑陋的 XML 文件,但是 VS代码可以帮助您创建它)。

如果要使用 #load 指令,它必须在 F# script 文件中,即具有 .fsx 扩展名的文件。 (.fsscript 扩展名也是允许的,但我从未见过有人在实践中使用它。.fsx 扩展名是 事实上的 标准)。

只需将 .fs 文件重命名为 .fsx 即可解决错误 #1。那么错误 #2 和 #3 应该会自行消失——它们的发生是因为 F# 编译器没有加载 MathNet 命名空间,这是因为它忽略了 [=] 中的 #load 指令10=] 文件。处理 #load 指令后,应加载 MathNet.Numerics.fsx 文件,该文件依次加载所需的所有命名空间。

所以这只是因为您在需要 .fsx.

时将文件另存为 .fs 文件