Да, эти:
{-#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". Я поставлю щедрость на это, если вы не придумаете решение. Если вы полностью проиграли, о чем они говорят, Эдвард опубликовал короткое объяснение в reddit.
Подходящие ответы должны:
-
делать что-то хотя бы удаленно и теоретически полезно для вычислений. То есть ответы, которые сводятся к
id
, отсутствуют. -
используйте все функции схемы, не проходящие в id, или const, или эквивалентные.
-
не одинаково хорошо выражаться простой, ванильной складкой или таковой, поэтому не просто реализуйте
product
меандрирующим способом.
Бонусные баллы будут присвоены:
-
Известная проблема или алгоритм
-
решил, соответственно выраженный, необычным способом, который получает
-
Ясность и/или производительность
-
и/или взломать значение
-
и/или lulz, примерно в этом порядке, а также
-
высокопоставленные ответы (yay-демократия)
Также обратите внимание на ответ Эдварда ниже. Какая реализация ZHPM вы используете, это ваш выбор.