はい、これらのもの:
{-#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 を表現する慣用的な方法です」と言って wiki に追加します。解決策が見つからない場合は、報奨金を出します。彼らが何について話しているのか完全にわからない場合は、Edwardが redditに短い説明を投稿しました。
適格な回答は次の条件を満たす必要があります。
少なくともリモートで理論的に計算上有用なことを行います。つまり、 に還元される答え
id
はアウトです。スキームのすべての機能を使用し、id、const、または同等のものを渡さないでください。
単純なバニラ フォールドなどで同じように表現できるわけではないため、単純に
product
蛇行した方法で実装しないでください。
ボーナス ポイントは次の場合に付与されます。
よく知られた問題またはアルゴリズム
それぞれ得られる異常な方法で解決され、表現された
明快さおよび/またはパフォーマンス
および/またはハック値
および/またはlulz、おおよそその順序で、
上位の回答 (yay 民主主義)
以下のエドワードの回答にも注意してください。どの ZHPM 実装を使用するかは、あなたの選択です。