ghc-exactprint-0.3: tests/examples/Unicode.hs
{-# LANGUAGE UnicodeSyntax #-}
module Unicode where
import Control.Monad.Trans.State.Strict
-- | We'll start off with a monad in which to manipulate ABTs; we'll need some
-- state for fresh variable generation.
--
newtype M α
= M
{ _M ∷ State Int α
}
-- | We'll run an ABT computation by starting the variable counter at @0@.
--
runM ∷ M α → α
runM (M m) = evalState m 0
-- | To indicate that a term is in normal form.
--
stepsExhausted
∷ Applicative m
⇒ StepT m α
stepsExhausted = StepT . MaybeT $ pure Nothing
stepsExhausted2
∷ Applicative m
=> m α
stepsExhausted2 = undefined