Вы можете использовать оператор :?
для проверки по типу. Я поместил его в коробку, потому что (int -> int)
это запечатанный тип.
F # Почему я не могу использовать:? оператор в F # интерактивный?
> let f = box (fun x -> x*x);;
val f : obj
> f :? (int -> int);;
val it : bool = true
Если вы хотите создать свою функцию проверки типов, вы можете использовать это. «Т и вещь типа Т», они всегда будут иметь один и тот же тип, поэтому я сделал здесь объект х, и вы можете пометить его, прежде чем смотреть на него. Однако вам, вероятно, не нужно этого делать, поэтому, если вы новичок в F #, вы можете работать усерднее, чем нужно.
let typeCheck<'T> (x: obj) =
x :? 'T
//which is the same as
x :? (int -> int)
//so you probably don't need to define your own :)