Почему нельзя использовать функции с необязательными аргументами для функций без них?
У меня есть следующие простые функции:
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
, Если так, то почему это принуждение типа терпит неудачу?