Si, estos :
{-#LANGUAGE TypeOperators, RankNTypes #-}
import Control.Morphism.Zygo
import Control.Morphism.Prepro
import Control.Morphism.Histo
import Control.Functor.Algebra
import Control.Functor.Extras
import Control.Functor.Fix
import Control.Comonad.Cofree
zygohistomorphic_prepromorphism
:: Functor f
=> Algebra f b
-> GAlgebra f (ZygoT (Cofree f) b) a
-> (f :~> f)
-> FixF f
-> a
zygohistomorphic_prepromorphism f
= g_prepro (distZygoT (liftAlgebra f) (distHisto id))
Sí, sé que son una broma ( HHOS ). Estoy buscando un ejemplo del mundo real para el valor de pirateo simple y, por último, pero no menos importante, agregarlo a la wiki diciendo "Esta es la forma idiomática de expresar XYZ". Me voy a poner una recompensa en este caso de que no llegar a una solución. Si estás completamente perdido en lo que se trata, Edward publicó una breve explicación en reddit.
Las respuestas elegibles deben:
hacer algo al menos remota y teóricamente computacionalmente útil. Es decir, las respuestas que se reducen a
id
están fuera.use todas las características del esquema, sin pasar de id, o const, o equivalente.
no se puede expresar de la misma manera con un simple pliegue de vainilla o algo así, así que no lo implemente simplemente de
product
manera serpenteante.
Se otorgarán puntos de bonificación a:
Problema o algoritmo bien conocido
resuelto, respectivamente expresado, de una manera inusual que gana
claridad y / o rendimiento
y / o piratear el valor
y / o lulz, más o menos en ese orden, así como
respuestas de alto rango (yay democracia)
Tenga en cuenta también la respuesta de Edward a continuación. La implementación de ZHPM que use es su elección.
a
puede ser cualquier cosa, así que siéntase libre de construir un valor IO que lance estratégicamente misiles en función de una evaluación de sus datos de entrada.
IO
en su pila, podríamos haber utilizado la famosalaunchMissles
función de SimonPJ . Pero supongo que el punto de todas esas tonterías abstractas súper puras es evitar la posibilidad de tales cosas.