Как вы получили этот вывод? В ФСИ?
Val просто указывает на определение значения.
например. если вы написали следующее в C #
private void Foo(int i);
вы бы написали это на F #
val Foo : int -> unit
Относительно type -> type -> type
: это функция с двумя параметрами (типом), возвращающая `type´
* 1014 Е.Г. *
let plus a b = a + b
имеет подпись int -> int -> int
.
Ваша идея с функцией, которая возвращает функцию, на самом деле верна. Это очень интересная техника во многих функциональных языках, называемая curry