是的,这些:
{-#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))
是的,我知道他们是一个(居屋计划)笑话。我正在寻找一个真实的例子,简单的黑客价值和最后,但不是最不重要的,添加到维基说: “这是表达 XYZ 的惯用方法”。如果你想不出解决办法,我 威尔悬赏这个。如果你完全不知道它们是关于什么的,爱德华在 Reddit 上发布了一个 简短的解释。
合资格答案必须:
至少做一些远程和理论上有用的计算。也就是说,答案减少到 id
。
使用方案的所有特性,不传入 id、 const 或等价物。
不能用简单的、普通的折叠或类似的方式同样好地表达,所以不要仅仅以一种迂回的方式实现 product
。
以下人士可获加分:
著名的问题或算法
解决,分别表示,以一种不寻常的方式,收益
清晰度及/或表现
和/或黑客价值
和/或 Lulz,大致按照这个顺序,以及
高级答案(民主万岁)
请注意下面的 爱德华的回答。您使用的 ZHPM 实现是您的选择。