Командная строка 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,

Другие вопросы по тегам