0

我在命令行下尝试了 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# 项目中,它运行正常。

但是为什么命令行会失败?

4

1 回答 1

1

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

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

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

只有当您的 VS 项目已经包含一个名为f.

于 2015-05-22T01:22:12.100 回答