arâmetros opcionais e tipos de opção usando F #

Considere o seguinte código:

type Test () =
  member o.fn1 (?bo) = 1
  member o.fn2 (?bo) = o.fn1 bo

  member o.fn3 (?bo) = 1 + bo.Value
  member o.fn4 (?bo) = o.fn3 bo

Enquantofn1 efn2 funciona muito bem,fn4 produz o seguinte erro:

init.fsx (6,30): erro FS0001: Era esperado que essa expressão tivesse o tipo int, mas aqui o tipo 'a option

MSDN estados:

Parâmetros opcionais são interpretados como o tipo de opção F #, para que você possa consultá-los da maneira regular que os tipos de opção são consultados, usando uma expressão de correspondência com Alguns e Nenhu

Para mim, os parâmetros opcionais não são interpretados como o tipo de opção F #, caso contrário, o código seria compilado. Além disso, não entendo por que, quando passo o mouse sobre?bo emfn3 a dica de ferramenta dizval bo: int option mas de fora espera apenasint. Eu esperaria um comportamento de não aceitar nada, int, Some int e None. E como última nota, não entendo por quefn2 funciona masfn4 não

Obrigado pela clarificaçã

questionAnswers(2)

yourAnswerToTheQuestion