2012-05-03 21 views

Respuesta

38

No, no es una mónada, sino una comadre! Gira una función que toma un objeto envuelto y devuelve un valor normal en una función que toma y devuelve un objeto envuelto. Como un tipo de firma que Haskell sería:

(Wrapped a -> b) -> (Wrapped a -> Wrapped b) 

El tipo de firma de value es:

Wrapped a -> a 

Estos son precisamente lo que necesita para una comonad. La primera función generalmente se llama extend y la segunda extract.

Puede pensar en un comonad como un valor con un contexto adicional. Y eso es, por supuesto, exactamente lo que chain hace.

Ver this Stackoverflow question para más información sobre comonads.

+8

Me gusta esta respuesta; Creo que sería más inmediatamente aparente lo que quieres decir si explicaras el mapeo de los métodos de los objetos de subrayado en los tipos. Si entiendo correctamente, los métodos son normalmente 'Wrapped a -> b's pero that' chain' devuelve un objeto cuyos métodos (excepto 'value') son todos' Wrapped a -> Wrapped b's. Conozco un poco a Haskell, pero la pregunta original no estaba etiquetada Haskell por lo que las explicaciones de cómo su respuesta se asigna a la biblioteca JS podrían ser útiles. – ellisbben

Cuestiones relacionadas