2012-07-22 24 views
24

Volviendo al menos a finales de la década de 1990 ha habido personas que desean la integración de restricted monads en Haskell de manera amistosa.¿Cuál es el estado actual de las mónadas restringidas?

Por ejemplo, sin mónadas restringidas no se puede hacer una mónada eficiente de Set, Map o probability distributions. Aquí hay un SO question de hace unos años donde alguien más se enfrentó a este problema.

Hay varias soluciones que la gente ha llegado con, entre ellos:

Ninguno de estos enfoques parece ser "canónico" sin embargo. Encontré un comentario de Don Stewart en this blog post, en 2007, donde insinuaba que estábamos "bastante cerca" de tener mónadas restringidas con Indexed types.

¿Cuál es el estado actual? ¿Hay ahora una forma "canónica" de hacer mónadas restringidas? ¿O aún vivimos con soluciones temporales?

+12

Creo que con los tipos de restricciones es tan canónico como es posible, son un poco demasiado nuevos como para ser la solución más común hasta el momento. – leftaroundabout

Respuesta

11

Hay un artículo reciente de Anders Persson, Emil Axelsson y Josef Svenningson que muestra una forma de codificar mónadas restringidas. Olvidé los detalles, pero recuerdo que fue un buen papel.

Persson, A.; Axelsson, E.; Svenningsson, J. (2011). Generic monadic constructs for embedded languages. IFL 2011, el 23 ° Simposio sobre Implementación y Aplicación de Idiomas Funcionales.

+1

Gracias Norman. Para cualquiera que esté interesado, puede obtener una copia del documento en la página de [Josef Svenningson] (http://www.cse.chalmers.se/~josefs/). –

10

En realidad, es posible obtener una mónada Set eficaz como una mónada regular, sin ninguna restricción. De dos maneras distintas. El siguiente artículo explica tanto :

http://okmij.org/ftp/Haskell/set-monad.html

El artículo también señala que las mónadas son en realidad muy restringidas limitado y excluye muchos modismos monádicos. Conjeturo que los métodos de implementación son generales y cualquier mónada restringida puede ser convertida en la habitual, sin perder eficacia. Por lo tanto, puede parecer que no necesitamos mónadas restringidas en absoluto.

+0

De hecho, ya usé la idea detrás de su eficiente mónada Set para construir una mónada de distribución de probabilidad eficiente (consulte https://github.com/chris-taylor/hs-probability/blob/master/src/Control/Probability/Bayes.hs) .. ¡así que gracias! No he pensado en hacer lo mismo para otras mónadas restringidas, pero no puedo ver de inmediato una razón por la que no funcionaría. –

Cuestiones relacionadas