packages feed

pandora-0.5.3: Pandora/Paradigm/Primary/Transformer/Jet.hs

{-# LANGUAGE UndecidableInstances #-}
module Pandora.Paradigm.Primary.Transformer.Jet where

import Pandora.Pattern.Category ((<------))
import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|--), (<-|-|-), (<-|-)))
import Pandora.Pattern.Functor.Traversable (Traversable ((<<-)), (<<-<<-))
import Pandora.Paradigm.Algebraic ((<-*--))

data Jet t a = Jet a (Jet t (t a))

instance Covariant (->) (->) t => Covariant (->) (->) (Jet t) where
	f <-|- Jet x xs = Jet
		<------ f x
		<------ f <-|-|- xs

instance Traversable (->) (->) t => Traversable (->) (->) (Jet t) where
	f <<- Jet x xs = Jet <-|-- f x <-*-- (f <<-<<- xs)