Типовое испытание проводится только для эталонных типов. Поэтому:
let print x =
match box x with
| :? int -> printf "INT"
| _ -> ()
или
let print (x: obj) =
match x with
| :? int -> printf "INT"
| _ -> ()
будет работать.
Обратите внимание, что ваша функция не проверяет тип, поскольку None
имеет тип option
, который отличается от типа unit
типа printf "INT"
.