The following code does not compile.
type A(?arg) =
member __.Arg : string option = arg
type B(?arg) =
inherit A(arg) //ERROR expected type string but has t
F# spec 8.13.5 Optional arguments to method members
Callers may specify values for optional arguments by using the following techniques:
By using normal, unnamed arguments matched by position.
type A(?arg) =
member __.Arg : string option = arg
type B(?arg) =
inherit A(?arg = arg)
printfn "1. %A" (B()).Arg // None
printfn "2. %A" (B("1")).Arg // Some "1"
printfn "3. %A" (A()).Arg // None
printfn "4. %A" (A("1")).Arg // Some "1"