Наиболее распространенный случай, когда вы можете получить эту ошибку, это когда вы пишете привязку let
, за которой не следует выражение для вычисления результата.В F # все является выражением, которое возвращает некоторый результат, поэтому, если вы пишете let a = 10
, оно обычно не является допустимым выражением.Чтобы сделать его действительным, вам нужно что-то вернуть:
let foo () =
let a = 10
() // return unit value (which doesn't represent any information)
Единственное исключение, где вы можете написать просто let a = 10
- это глобальная область видимости исходного файла F # - например,внутри объявления модуля или в файле сценария F #.(Вот почему объявление foo
выше действительно).
Трудно дать какой-либо совет, не видя ваш код, но у вас, вероятно, есть объявление let
, за которым не следует выражение F #.
Из любопытства следующий пример показывает, что let
действительно может использоваться внутри выражения (где оно должно возвращать какой-либо значимый результат):
let a = 40 + (let a = 1
a + a)