Ошибка компиляции типа с кортежем - PullRequest
0 голосов
/ 20 февраля 2011

Этот код составлен:

let swap_tuple (a, b) = (b, a)

let result = swap_tuple ("one", "two") 
printfn "%A" result

Этот код выдает ошибку компиляции:

let swap_tuple (a, b) = (b, a)

printfn "%A" swap_tuple ("one", "two") 
error FS0001: Type mismatch. Expecting a     'a -> 'b -> 'c     but given a     'a -> unit     The type ''a -> 'b' does not match the type 'unit'

Что не так во второй версии?

Ответы [ 2 ]

6 голосов
/ 20 февраля 2011

Во второй версии ваша строка формата имеет только один спецификатор формата, но в оператор printfn добавлено два. Вы должны использовать () для группировки swap_tuple с его аргументами в один аргумент.

let swap_tuple (a, b) = (b, a)

printfn "%A" (swap_tuple ("one", "two") )
3 голосов
/ 20 февраля 2011

В качестве альтернативы ответу Джимми вы также можете использовать операторы конвейера:

printfn "%A" <| swap_tuple ("one", "two")

или

("one", "two")
|> swap_tuple
|> printfn "%A"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...