module Pinch where
import Control.Applicative
import Data.Array
import PinchDef
pinchServer :: MonadPinchSim m => Array Int Integer -> m ()
pinchServer arr = error “TODO”
instance Functor PinchTrace where
fmap f p = p >>= return . f
instance Applicative PinchTrace where
pure = Pure
pf <*> pa = pf >>= \f -> pa >>= \a -> pure (f a)
instance Monad PinchTrace where
return a = error “TODO”
Pure a >>= k = error “TODO”
Step msg arr next >>= k = error “TODO”
instance MonadPinchSim PinchTrace where
askPinch msg arr = error “TODO”