F#命令行(fsi)无法识别函数,编译错误,为什么?



我在命令行下尝试了f#,它不识别函数定义

> let ref f n=
-  if(n<=2)then 1
-  else f(n-1)+f(n-2)
- ;;
val ref : f:(int -> int) -> n:int -> int
> printf "%i" (f 10)
- ;;
  printf "%i" (f 10)
  -------------^
stdin(9,14): error FS0039: The value or constructor 'f' is not defined

问题:我的程序有错误吗?我将f的定义和用法复制粘贴到visual studio的f#项目中,它运行正常。

但是为什么命令行失败?

您定义了一个名为ref的函数,但是您试图调用一个名为f的函数。没有定义这样的函数(尽管您的ref函数接受一个名为f的参数),因此您不能调用它。

您可能打算使用rec关键字(带'c')定义递归函数f,而不是定义名为ref的函数。

我将f的定义和用法复制粘贴到visual studio的f#项目中,它运行正常。

只有当你的VS项目已经包含一个名为f的函数定义时才有可能。

相关内容

  • 没有找到相关文章