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

时间:2016-11-03 14:20:18

标签: f# visual-studio-code ionide

我在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. 实施文件中的意外标识符

1 个答案:

答案 0 :(得分:2)

第一个错误,“此指令只能用于F#脚本文件(扩展名.fsx或.fsscript)”,告诉您如何解决它。你没有告诉我们你的F#文件的文件名,你收到错误,但我打赌它以.fs结束,对吗? .fs扩展名适用于属于较大项目的文件。一个好的经验法则是,如果你有任何.fs文件,你需要一个项目文件(目前它将是.fsproj格式,这是一个丑陋的XML文件,但VS Code可以帮助你创造它。)

如果要使用#load指令,它必须位于F#脚本文件中,这意味着扩展名为.fsx的文件。 (.fsscript扩展程序也是允许的,但我从未在实践中看到有人使用它。.fsx扩展名是事实上的标准。)

只需将您的.fs文件重命名为.fsx即可解决错误#1。然后错误#2和#3应该自行消失 - 它们正在发生,因为F#编译器没有加载MathNet命名空间,这是因为它忽略了#load中的.fs指令1}}文件。处理完#load指令后,应加载MathNet.Numerics.fsx文件,然后该文件将加载所需的所有命名空间。

所以这只是因为您在需要.fs时将文件另存为.fsx文件。