Parámetros opcionales y tipos de opciones con F #

Considere el siguiente 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

Mientrasfn1 yfn2 funciona bien,fn4 produce el siguiente error:

init.fsx (6,30): error FS0001: se esperaba que esta expresión tuviera el tipo int pero aquí tiene el tipo 'una opción

MSDN estados:

os parámetros opcionales se interpretan como el tipo de opción F #, por lo que puede consultarlos de la forma habitual en que se consultan los tipos de opciones, utilizando una expresión de coincidencia con Some y None.

Para mí, los parámetros opcionales no se interpretan como el tipo de opción F #, de lo contrario el código se compilaría. Además, no entiendo por qué, cuando paso el mouse sobre?bo infn3 la información sobre herramientas diceval bo: int option pero desde afuera solo esperaint. Esperaría un comportamiento de no aceptar nada, int, Some int y None. Y como última nota, no entiendo por quéfn2 funciona perofn4 no

Gracias por la aclaració

Respuestas a la pregunta(2)

Su respuesta a la pregunta