Почему пробелы в моем коде F # вызывают ошибки? - PullRequest
6 голосов
/ 23 сентября 2011

Я возился с F # Interactive.

Я продолжаю получать странные результаты, но вот один, который я не могу объяснить:

Следующий код возвращает 66, что является значениемЯ ожидаю.

> let f x = 2*x*x-5*x+3;;
> f 7;;

Следующий код выдает синтаксическую ошибку:

> let f x = 2*x*x - 5*x +3;;

stdin(33,21): error FS0003: This value is not a function and cannot be applied

Как видите, единственное отличие состоит в том, что во втором примере между символами есть пробелы.

Почему первый пример кода работает, а второй приводит к синтаксической ошибке?

Ответы [ 2 ]

12 голосов
/ 23 сентября 2011

Проблема здесь заключается в использовании +3.При работе с префиксом +/- в числовом выражении пробел имеет значение

  • x+3: x плюс 3
  • x +3: синтаксическая ошибка: x, за которым следует положительныйзначение 3

Я сам сталкивался с этим несколько раз (чаще всего с -).Сначала это немного расстраивает, но в конце концов вы научитесь это замечать.

Это не особенность без смысла.Необходимо разрешить применение отрицательных значений к функциям

  • myFunc x -3: вызвать функцию myFunc с параметрами x и -3
3 голосов
/ 23 сентября 2011

В сообщении об ошибке говорится, что вы пытаетесь вызвать функцию x с аргументом +3 (унарный + на 3) и, поскольку x не является функцией, следовательно, This value is not a function and cannot be applied

...