2015-05-22 1 views
0

Я попытался F # под командной строки, он не признает определение функцииКомандная строка F # (fsi) не распознает функцию, компилирует ошибку, почему?

> 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 в проект F # визуальной студии, он работает нормально.

Но почему сбой командной строки?

+5

Кажется, что вы только что ошиблись: 'ref' вместо' rec'. Проголосовал за закрытие причины «типографской ошибки». – bytebuster

ответ

1

Вы определили функцию с именем ref, но вы пытаетесь вызвать функцию с именем f. Такая функция не была определена (хотя ваша функция ref принимает параметр с именем f), поэтому вы не можете его вызвать.

Возможно, вы определили рекурсивную функцию f, используя ключевое слово rec (с 'c'), вместо определения функции с именем ref.

Я скопировал и вставил определение и использование f в проект F # визуальной студии, он работает нормально.

Это возможно только в том случае, если ваш проект VS уже содержит определение функции с именем f.