我在命令行下尝试了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
的函数定义时才有可能。