Командная строка 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#, он работает нормально.
Но почему командная строка не работает?
1 ответ
Вы определили функцию с именем ref
, но вы пытаетесь вызвать функцию с именем f
, Такая функция не была определена (хотя ваш ref
функция принимает параметр с именем f
), так что вы не можете назвать это.
Вы, вероятно, намеревались определить рекурсивную функцию f
с использованием rec
ключевое слово (с 'c') вместо определения функции с именем ref
,
Я скопировал и вставил определение и использование f в проект Visual Studio F#, он работает нормально.
Это возможно, только если ваш VS проект уже содержит определение функции с именем f
,