En F #, me gustaría tener lo que veo como un tipo de dato abstracto bastante estándar:F #: ¿No se puede ocultar una abreviatura de tipo en una firma? Por qué no?
// in ADT.fsi
module ADT
type my_Type
// in ADT.fs
module ADT
type my_Type = int
En otras palabras, el código dentro del módulo sabe que my_type es un int, pero el código fuera no lo hace. Sin embargo, F # parece tener una restricción donde las abreviaturas de tipo específicamente no se pueden ocultar con una firma. Este código proporciona un error de compilación y la restricción se describe en here.
Si my_Type fue en su lugar una unión discriminada, entonces no hay error de compilación. Mi pregunta es, ¿por qué la restricción? Me parece recordar que puedo hacer esto en SML y Ocaml, y además, ¿no es una cosa bastante estándar cuando se crea un tipo de datos abstracto?
Gracias
Sí, gracias a Tomas y Ganesh también. Ahora entiendo el problema, y puedo ver que, dada esta estrategia de compilación, este problema es una consecuencia. Es un poco decepcionante ya que estoy trabajando casi por completo en el espacio F #, pero sé que la interoperabilidad es muy importante, ¡así que no me quejaré! :-) –