FS0002: непредвиденная функция

Это сообщение присваивается при передаче лямбда-лямбда-параметра, в котором ожидается значение.

Следующий код демонстрирует ошибку:

let ignoreInt (f: int) = ()

do ignoreInt (fun x -> x + 1)

Этот код приводит к следующим выходным данным:

error FS0002: This function takes too many arguments, or is used in a context where a function is not expected

Здесь тип определяется как функцияint -> unit, но лямбда-тип ignoreIntint -> int передается вместо него. Так как int -> int сообщение не совпадает с int типом сообщения.

Чтобы исправить это сообщение, необходимо изменить код, чтобы нелямбда-аргумент передается функции, как в этом примере:

let ignoreInt (i: int) = ()

do ignoreInt 1