Реальные применения зигогистоморфных препроморфизмов

Да, эти :

{-#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.

Допустимые ответы должны:

  1. делать что-то, по крайней мере, удаленно и теоретически полезное для вычислений. То есть ответы, которые сводятся к id , отсутствуют.

  2. использовать все функции схемы, без передачи id, const или эквивалента.

  3. не могут быть одинаково хорошо выражены с помощью простой, ванильный или такой, поэтому не следует просто реализовывать продукт извилистым способом.

Бонусные баллы будут присуждаться:

  • Известная проблема или алгоритм

  • решены, соответственно выражены, необычным способом, что получает

  • ясность и / или производительность

  • и / или ценность взлома

  • и / или lulz, примерно в таком порядке, а также

  • высокопоставленных ответов (ура, демократия)

Пожалуйста, обратите внимание Ответ Эдварда ниже. Какую реализацию ZHPM вы используете - это ваш выбор.

155
задан Community 23 May 2017 в 10:31
поделиться