Creo que entiendo cómo funcionan los funtores aplicativos en Haskell y los estoy usando para tipos de datos básicos (Tal vez, O bien ...). Sin embargo, encontré this question con el siguiente ejemplo:¿Qué functor aplicativo se usa para pasar parámetros compartidos?
withPool pool = bracket (takeConn pool) (putConn pool)
puede reescribirse en estilo aplicativo:
withPool = bracket <$> takeConn <*> putConn
Me sorprendió que compila y de hecho funciona como se esperaba, pero podría alguien me cuales Aplicativo decirle Functor se usa para esto y ¿cómo se define?
Actualización: Creo que descubrí cómo funciona, pero no tengo idea de dónde está definido.
Por lo que vale, esta es de hecho la mónada del lector, menos un envoltorio 'newtype' - el" parámetro compartido "aquí es el mismo que el" entorno "para' Reader'. De manera similar, 'Either err' es la mónada de error y' (,) w' es writer. –
@ C.A.McCann Vale la pena señalar, y lo olvidé. Gracias por agregar eso. – Carl