Да, эти:
{-#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
извилистым способом.
Бонусные баллы будут начислены:
Известная проблема или алгоритм
решено, соответственно выражено, необычным способом, который
ясность и / или производительность
и / или взломать ценность
и / или лулз, примерно в таком порядке, а также
высокопоставленные ответы (ура демократия)
Также обратите внимание на ответ Эдварда ниже. Какую реализацию ZHPM использовать - решать вам.
IO
в свой стек, мы могли бы использовать знаменитую функцию SimonPJlaunchMissles
. Но я полагаю, что весь смысл всей этой сверхчистой абстрактной чепухи состоит в том, чтобы избежать возможности таких вещей. - person Yitz   schedule 20.02.2011a
может быть любым, поэтому не стесняйтесь создавать значение IO, которое стратегически запускает ракеты, на основе оценки ваших входных данных. - person barsoap   schedule 20.02.2011