He mirado varias fuentes: no parece posible declarar una definición de tipo de ala F # Haskell:F # Tipo de declaración posible ala Haskell?
' haskell type def:
myFunc :: int -> int
me gustaría utilizar este tipo de estilo definición en Fa # - FSI es feliz para hacerme eco:
fsi> let myType x = x +1;;
val myType : int -> int
Me gustaría ser explícito sobre el tipo de firma def en F # como en Haskell. ¿Hay alguna forma de hacer esto? Me gustaría escribir en Fa #:
//invalid F#
myFunc : int -> int
myFunc x = x*2
@ Jon: posición interesante. ¿Por qué es esto 'conocido-ser-basura'? Es totalmente opcional en Haskell, y personalmente me resulta bastante útil como una forma de esbozar cómo quiero que mis tipos se alineen. Me interesa lo que ve el problema con el tipo Defs. –
@ Kevin: Recurrir a escribir anotaciones casi siempre refleja una deficiencia en el sistema de tipos, por lo general que las características avanzadas de otro modo dar lugar a mensajes de error ofuscado. Eso sucede cuando rebasas el punto óptimo que alcanzó ML al agregar formas de inferencia más avanzadas al sistema de tipos. La solución en OCaml era agregar anotaciones de tipo a las definiciones de argumento cuando se usaban variantes u objetos polimórficos. La solución en Haskell consistía en hacer que las anotaciones de tipos fueran ubicuas debido a la ubicuidad de las clases de tipos (y la ausencia de alternativas). –
@Jon: Gracias por la aclaración. Sin embargo, creo que estamos hablando de dos razones diferentes para estas anotaciones. No quiero anotaciones de tipo para el compilador: ¡lo quiero para mí! En otras palabras, les resulta útil aclarar en términos inequívocos lo que necesito que hagan las diferentes funciones.Me parece que simplemente resolviendo las firmas de tipo puedo avanzar mucho para resolver el problema. –