Recordemos la transformación de paso de continuación (transformación CPS) que lleva a β A : = R R A (donde R está fijo) yf : A → B a β f : β A → β B definido por β De hecho, tenemos lamónada de continuacióncon la unidad η A : A → β A definida por η A x : = λ r . r
Ahora vamos a pensar acerca de cómo podemos transformar una binaria mapa , es decir, queremos γ f : β A → β B → β C . A uno se le ocurre rápidamente γ Esto también tiene sentido desde el punto de vista de la programación.
Aquí está mi pregunta: ¿hay una razón más profunda para , además del hecho de que se ve bien desde el punto de vista de la programación? Por ejemplo, ¿hay una razón teórica de categoría u otra razón "teórica" para pensar que γ tiene sentido? Por ejemplo, ¿podemos cocinar γ de la mónada de manera sistemática?
Estoy buscando una idea de las transformaciones CPS de las funciones -ary.
fuente
liftM2
o generalizacionesApplicative
? Puede derivar una versión n-aria de lo que describe (en un lenguaje que le permite hablar sobre funciones polimórficas n-arias) directamente de la estructura aplicativa de continuación.Applicative
. TieneliftA2
cuál es mi , consulte hackage.haskell.org/packages/archive/base/4.2.0.0/doc/html/…liftA2
era parte de lo que estaba sugiriendo. La noción de "soporte idiomático" ((| f x y z ... |)
traducido apure f <*> x <*> y <*> z <*> ...
)Applicative
parece ser la forma sistemática de obtener la forma n-ary de su pregunta. Conozco el CT, pero me pareció más simple hablar sobre él en términos de programación estándar. Si no se hubiera encontradoApplicative
antes, es posible que desee ver los functores monoidales laxos (aunque la declaración de Haskell sobre esto también<*>
involucra exponenciales). De todos modos, no tengo una respuesta para ti, pero estaba tratando de entender mejor a qué teRespuestas:
fuente
Aumentando la respuesta de Noam:
Si instanciamos esto a la mónada de continuación, obtenemos su construcción.
Pero todavía no creo que esto realmente te dé la respuesta que estás buscando ...
fuente