Композиция функций (f >> g) v
означает g (f (v))
, поэтому вы на самом деле звоните box<int>
в конце (и вызов unbox<int>
не требуется):
> box<int> (unbox<int> 42);;
val it : obj = 42
> box<int> 42;;
val it : obj = 42
Типы:box : 'T -> obj
и unbox : obj -> 'T
, поэтому функции конвертируются между коробочными (объекты) и типами значений (int).Вы можете вызвать unbox<int> 42
, потому что F # автоматически вставляет преобразование из int
в obj
при вызове функции.