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