2010-06-17 13 views

Respuesta

11

Un posible ejemplo de uso puede ser el uso de Conal TypeCompose para componer transformadores monad en estilo libre de puntos.

type MyT = StateT Foo :. MaybeT :. ContT Bar 

(sólo como ejemplo, no tengo idea de lo que se va a hacer con esas Foos y bares ..)

En lugar de:

type MyT m = StateT Foo (MaybeT (ContT Bar m)) 

(esto tendría el mismo resultado aparte de newtype -carpetas)

En la actualidad deberá duplicar el código de los combinadores para diferentes tipos, y esta extensión suprime la repetición y permite el uso una pieza de código para gobernarlos a todos.

1

Son útiles para la definición de funciones que operan sobre constructores de datos con aridad arbitraria, por supuesto!

Un ejemplo concreto podría ser una función que, dado un constructor de datos con aridad arbitraria, devuelve un nuevo constructor de datos que envuelve el constructor dada en Algunos().

+1

¿Puede dar un ejemplo ? – solidsnack

11

Adding Polymorphic Kinds to GHC

El trasfondo de esta cuestión sería el motivation in general for a more expressive kind system.

Es decir, la razón general para agregar tipos polimórficos a Haskell es mejorar la experiencia de tipo de programación de nivel. Actualmente la programación de nivel de tipo en Haskell procede en un nivel "kind esencialmente sin tipo". Un lenguaje amable más rico hará que la programación de nivel de tipo en Haskell, en general, sea más fácil.

Un ejemplo más concreto sería eliminar la (dinámico) tipable limitación de los genéricos del estilo SYB (citation), así como la mejora de la ayuda global para la programación genérica kinded de mayor ..

Cuestiones relacionadas