multipass-0.1: Data/Pass/Calculation.hs
module Data.Pass.Calculation
( Calculation(..)
) where
import Data.Binary
import Data.Monoid
import Data.Typeable
import Data.Pass.Calc
import Data.Pass.Class
import Data.Pass.Eval
import Data.Pass.Fun
import Data.Pass.Thrist
import Data.Pass.Type
class Calculation t where
calc :: (Eval k, Typeable b, Binary b, Monoid b) => t k a b -> Calc k a b
instance Calculation Fun where
calc = calc . pass
instance Calculation Thrist where
calc = calc . pass
instance Calculation Pass where
calc p = p :& Stop
instance Calculation Calc where
calc = id