bar*_*oap 155 haskell functional-programming category-theory
是的,这些:
{-#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))
Run Code Online (Sandbox Code Playgroud)
是的,我知道他们是(HHOS)的笑话.我正在寻找一个简单的黑客价值的真实世界的例子,最后,但并非最不重要的是,将它添加到维基说"这是表达XYZ的惯用方式".如果你没有提出解决方案,我会对此表示赏心悦目.如果你完全迷失了他们的意思,爱德华在reddit上发布了一个简短的解释.
符合条件的答案必须:
至少做一些远程的,理论上计算上有用的东西.也就是说,减少的答案id
已经消失.
使用该方案的所有功能,不传入id,const或等效.
不能用简单的香草褶皱等表达,所以不要仅仅product
以蜿蜒的方式实施.
奖励积分将给予:
众所周知的问题或算法
解决,分别表达,以一种不寻常的方式获得
清晰度和/或性能
和/或黑客价值
和/或lulz,大致按此顺序,以及
高级答案(耶和华民主)
请注意爱德华的答案如下.您使用的ZHPM实施是您的选择.
ste*_*ley 52
Sharon Curtis和Shin-Cheng Mu使用zygomorphisms来寻找最大密集区段(最大区段总和的概括).一旦你习惯了它们,Zygomorphisms似乎非常适合滑动窗口问题.
http://www.iis.sinica.edu.tw/~scm/2010/functional-pearl-maximally-dense-segments/
由于他们避免使用定点Mu函子,我会提名作者以获得额外的功劳.
Edw*_*ETT 39
注意,这些的签名已经改变,因为它不够通用,我把它(作为一个笑话)包含在我的递归方案包中.
zygoHistoPrepro
:: (Unfoldable t, Foldable t)
=> (Base t b -> b)
-> (forall c. Base t c -> Base t c)
-> (Base t (EnvT b (Stream (Base t)) a) -> a)
-> t
-> a
Run Code Online (Sandbox Code Playgroud)
实施也得到了简化.
zygoHistoPrepro f = gprepro (distZygoT f distHisto)
Run Code Online (Sandbox Code Playgroud)
从新的实现中,应该明白如何通过使用替代来放宽对流的约束来实现广义的颧骨形态预先形态.(Base t)-Branching
distGHisto
归档时间: |
|
查看次数: |
13237 次 |
最近记录: |