Sim, estes :
{-#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))
Sim, eu sei que eles são uma piada ( HHOS ). Estou procurando um exemplo do mundo real para um valor simples de hack e, por último, mas não menos importante, para adicioná-lo ao wiki dizendo "Esta é a maneira idiomática de expressar XYZ". I vai colocar uma recompensa por isso você deve deixar de chegar a uma solução. Se você está completamente perdido, Edward postou uma breve explicação no reddit.
As respostas elegíveis devem:
faça algo pelo menos remotamente e teoricamente computacionalmente útil. Ou seja, respostas que reduzem a
id
estão fora.use todos os recursos do esquema, sem passagem de id, ou const ou equivalente.
não seja igualmente bem expressável por uma simples dobra de baunilha ou algo assim; portanto, não apenas implemente de
product
maneira sinuosa.
Pontos de bônus serão dados a:
Problema ou algoritmo conhecido
resolvidos, respectivamente expressos, de uma maneira incomum que ganha
clareza e / ou desempenho
e / ou valor de hack
e / ou lulz, aproximadamente nessa ordem, bem como
respostas de alto escalão (democracia yay)
Observe também a resposta de Edward abaixo. Qual implementação de ZHPM você usa é sua escolha.
a
pode ser qualquer coisa, portanto, sinta-se à vontade para construir um valor de IO que estrategicamente atire mísseis com base em uma avaliação dos dados de entrada.
IO
na sua pilha, poderíamos ter usado a famosalaunchMissles
função do SimonPJ . Mas acho que o objetivo de toda essa bobagem abstrata super pura é evitar a possibilidade de tais coisas.