2012-02-27 13 views
13

Parece que Haskell ha establecido varias convenciones de nomenclatura alrededor de las mónadas.¿Cuáles son todas las convenciones de nomenclatura de mónadas?

Ejemplos:

  • adjuntas T hasta el final para obtener el nombre del transformador mónada (por ejemplo Reader ->ReaderT)
  • usando runXXX para llevar a cabo un cálculo mónada (por ejemplo runST, runReader)
  • liftXXX para varios valores de XXX

¿Hay otras convenciones de nomenclatura?

Respuesta

13
  • runX m donde m :: X a se ejecutará la mónada X y devolver el "efecto secundario", junto con el resultado mónada, a.

  • evalX m ejecutará el cálculo y devolverá el resultado, a.

  • execX m ejecutará el cálculo y devolverá el "efecto secundario" pero no el resultado.

  • Los ascensores vienen en varios sabores que pueden ser un poco complicados para que yo quiera explicarlos en una respuesta SO. Probablemente deberías saber lift y liftIO y estar atento/eventualmente buscar otras variantes como liftWith y liftBaseWith. Ver, por ejemplo, la publicación de EZYang sobre el tema.

  • añadiendo un T después de que el nombre de la mónada implica transformador. Agregar un M después de un nombre de función implica que es monádico. Agregar un _ implica que el resultado se ignora.

  • Todas las demás letras con sufijo significan "utilizar hoogle".

+7

Como una breve adición http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Monad.html#g:2 describe algunas de las convenciones de nomenclatura con combinador Respecto a cuando el sufijo M en oposición al prefijo m es apropiado. –

Cuestiones relacionadas