Inspirado por this question:tipo de recursión explícita en Fa #
es explícito recursividad tipo posible en C#?
type 'a Mu = In of 'a Mu 'a
let unIn (In x) = x
Este código da por desgracia "parámetro Tipo no se puede utilizar como tipo de constructor
Observaciones:. Este constructo se utiliza en el documento Functional Programming with Overloading and Higher-Order Polymorphism, por ejemplo
Ejemplo de uso (. tomado de here):
type ('a, 'b) ListX =
| Nil
| Cons of 'a * 'b
type 'a List = ListX Mu
Las clases de tipo Haskell también funcionan en cosas de tipo '*' y, de hecho, las clases en tipos de alto grado se llamaron originalmente 'clases de constructor', aunque la distinción se ignora en este momento. –