У меня есть следующие простые функции:
type t = unit -> unit
let f () = ()
let g ?opt:_ () = ()
С этими определенными функциями (f :> t)
завершается успешно, но (g :> t)
завершается с ошибкой:
Ошибка:Это выражение не может быть приведено к type t = unit -> unit
;он имеет тип
?opt:'a -> unit -> unit
, но здесь используется с type t = unit -> unit
Кажется, что тип g
должен быть подтипом t
.Если да, то почему этот тип принуждения терпит неудачу?