155 votos

Aplicaciones del mundo real de zygohistomorphic prepromorphisms

Sí, estos:

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

Sí, yo sé que eres un (HHOS) broma. Estoy buscando un ejemplo de la vida real para simple hack valor y por último, pero no menos importante, para agregarlo a la wiki dice : "Este es el idiomáticas manera de expresar XYZ". Me va a poner una recompensa, en este caso de que no pueda llegar a una solución. Si usted está completamente perdido en lo que somos, Edward publicado una breve explicación en reddit.

Elegible Respuestas:

  1. hacer algo, al menos de forma remota y, en teoría, computacionalmente útil. Es decir, respuestas que reducir a id están fuera.

  2. utilizar todas las características de la estafa, no pasando de identidad, o de const, o equivalente.

  3. no igual de bien ser expresable por una simple vainilla veces o tal, así que no se limitan a implementar product en un serpenteante camino.

Los puntos de bonificación se dará a:

  • Conocido problema o algoritmo

  • resuelto, respectivamente, expresaron, de una manera inusual que las ganancias de los

  • la claridad y/o el rendimiento de

  • y/o hack valor

  • y/o lulz, aproximadamente en ese orden, así como

  • de alto rango de respuestas (yay democracia)

Por favor, también tenga en cuenta que Edward la respuesta a continuación. Lo ZHPM aplicación que utiliza es de su elección.

52voto

stephen tetley Puntos 3622

Sharon Curtis y Shin-Cheng Mu tener un sistema Funcional de la Perla utilizando zygomorphisms para encontrar el máximo densa segmentos (una generalización de un máximo de segmento de sumas). Zygomorphisms aparentemente son una buena opción para ventana corredera de problemas una vez que se acostumbre a ellos.

http://www.iis.sinica.edu.tw/~scm/2010/functional-pearl-maximally-dense-segments/

Me gustaría nombrar a los autores de extra crédito que ha evitado el uso de la de punto fijo Mu functor.

39voto

Edward Kmett Puntos 18369

Nota, la firma de estos ha cambiado, porque no era lo suficientemente general, y que lo incluye (como broma) en mi recursividad-esquemas de paquete.

zygoHistoPrepro 
  :: (Unfoldable t, Foldable t) 
  => (Base t b -> b) 
  -> (forall c. Base t c -> Base t c) 
  -> (Base t (EnvT b (Stream (Base t)) a) -> a) 
  -> t
  -> a

La aplicación se ha simplificado así.

zygoHistoPrepro f g t = gprepro (distZygoT f distHisto) g t

Y de la nueva implementación es obvio cómo implementar una generalizada zygohistomorphic prepromorphism, relajando la restricción de que usted tiene un (Base t)-Branching flujo, a través de la utilización de distGHisto lugar.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X