Да, эти :
{-#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
, отсутствуют.
используют все функции схемы, без ввода идентификатора, или константы, или эквивалента.
не в равной степени может быть выражен простой, ванильной складкой или чем-то подобным, так что не просто реализуйте product
извилистым способом.
Бонусные баллы будутдано:
Хорошо известная проблема или алгоритм
решено, соответственно выражено, необычным образом, получая
ясность и / или производительность
и / или значение хака
и / или lulz, примерно в таком порядке, а также
высокопоставленные ответы (ура демократия)
Обратите также внимание ответ Эдварда ниже.Какую реализацию ZHPM вы используете - ваш выбор.