是的,这些:
{-#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 )笑话。但我正在寻找一个现实世界的例子,用于简单的黑客价值,并且最后,但并非最不重要的一点,将其添加到维基中并说明“这是表达XYZ的惯用方法”。如果你无法提供解决方案,我会为此设置悬赏。如果你对它们完全不了解,Edward在Reddit上发布了简短的解释。
符合条件的答案必须:
至少具有某种程度上的理论计算实用性。也就是说,归约为
id
的答案不行。使用方案的所有功能,不能传递id、const或等效物。
不能同样适用于简单的、普通的fold或类似方法,因此不要用曲折的方式来实现
product
等。
加分项:
著名问题或算法
用不同寻常的方式解决或表达
在清晰度和/或性能以及/或黑客价值和/或乐趣方面获得加分,大致按此顺序,以及
高排名答案(民主万岁)
请注意下面的Edward's answer。你可以选择使用哪个ZHPM实现。
a
可以是任何东西,因此可以构造一个 IO 值,根据对输入数据的评估来策略性地发射导弹。 - barsoap