是的,这些:
{-#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))
是的,我知道他们是(HHOS)的笑话。我正在寻找一个简单的黑客价值的真实示例,最后但并非最不重要的一点是,将其添加到Wiki中,并说“这是表达XYZ的惯用方式”。如果您无法提出解决方案,我将对此予以奖励。如果您完全不了解他们的意思,那么Edward会在reddit上发布简短说明。
合格答案必须:
至少在理论上和远程上做一些有用的事情。也就是说,减少到的答案
id
就消失了。使用方案的所有功能,不传入id或const或等效值。
不能简单地通过简单的香草褶皱等表达出来,所以不要仅仅
product
以曲折的方式实现。
奖励积分将给予:
众所周知的问题或算法
以不寻常的方式解决或表达了
清晰度和/或性能
和/或骇客价值
和/或lulz,大致按此顺序,以及
高阶答案(是的,民主制)
另请注意以下爱德华的答案。您使用哪种ZHPM实现是您的选择。
好吧,
—
barsoap 2011年
a
可以是任何东西,因此可以随意构建一个IO值,该IO值可以根据对输入数据的评估来战略性地发射导弹。
我点击了这个问题,因为我不知道你在说什么。+1好先生,+ 1
—
Drew
希望使用所有组件的人会很好地手动写出一个纯合子预形递归扩展到的内容,然后寻找需要所有这些模式的问题。命令式循环往往会进行任意复杂的跟踪,因此它们可能是一个很好的观察对象。
—
Edward Z. Yang
更重要的是-它会融合吗?(非常抱歉,无法抗拒)
—
n00b
IO
在堆栈中,则可以使用SimonPJ的著名launchMissles
功能。但是我想所有超纯抽象废话的全部要点是避免发生这种情况。