Pregunta

continuaciones se puede decir que sea mónadas? ¿Son un subconjunto de mónadas o son simplemente una forma de implementar las mónadas?

Editar: O tal vez me equivoqué y mónadas es un concepto más abstracto que continuaciones ? (Así que estoy realmente comparar manzanas con naranjas aquí)

¿Fue útil?

Solución

En pocas palabras, ya que el 'bind' de una mónada toma una continuación eficaz (un lambda de la 'resto de la computación') como un argumento, mónadas son continuaciones en ese sentido. Por otro lado, el estilo de continuación que pasa se puede implementar de manera efectiva en un idioma que no sea el uso de azúcares CPS sintaxis monádicos, según lo sugerido por una serie de enlaces misceláneos abajo.

Desde el 'todo sobre mónadas' Tutorial en Haskell:

https://www.haskell.org/haskellwiki/All_About_Monads#The_Continuation_monad

Un F # mónada continuación, se utiliza para poner en práctica 'break' y 'continuar' para fines de estilo bucles

http://cs.hubfs.net/forums/thread/9311.aspx

Y el ejemplo de la aplicación de una mónada continuación a un problema en Fa #:

http://lorgonblog.spaces.live.com/blog /cns!701679AD17B6D310!256.entry

Otros consejos

No sólo son continuaciones mónadas, sino que son una especie de mónada universal en el sentido de que si usted tiene consecuencias y de estado, puede simular cualquier mónada funcional. Este resultado impresionante, pero muy técnico viene de la mente impresionante y altamente técnica de Andrzej Filinski , quien escribió en 1994 o por ahí:

  

Se demuestra que cualquier mónada, cuya unidad de extensión y las operaciones se pueden expresar como términos puramente funcionales se pueden incrustar en una lengua llamada por valor con “continuaciones componibles”.

Pueden ser, a pesar de que no tienen que ser. Yo invierto su pregunta un poco y decir en cambio que las mónadas son una forma de implementar continuaciones. Pero se puede aplicar continuaciones de muchas maneras - que puede hacer una modesta pero limitado facsímil de CPS en C #, sin demasiado esfuerzo, por ejemplo . Echar un vistazo a La continuación Mónada desde el sitio Haskell para un tratamiento muy completo.

Un artículo muy agradable en ese tema: http://blog.sigfpe.com/2008/12/ madre-de-todo-monads.html

A continuación es una función particular en un programa. Mónadas son constructores de tipos.

A de tipo constructor Cont<T> para continuaciones teniendo tipo T no sería una mónada.

Sin embargo, Cont<Cont<T>> es una mónada, y esto es lo que comúnmente se llama "la mónada continuación".

(que tiene callcc en un idioma es equivalente a ser capaz de convertir de <=> a <=>.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top