{-# LANGUAGE TypeApplications #-} module Spec.Data where import Data.Typeable (Proxy(Proxy), TypeRep, typeRep) import Managed hiding (typeRep) data MyData = A | B | C deriving (Show, Read, Eq) nullary :: MyData nullary = A probeN :: Probe SR probeN = toProbe nullary unary :: MyData -> MyData unary _ = B probeU :: Probe SR probeU = toProbe unary binary :: MyData -> MyData -> MyData binary _ _ = C probeB :: Probe SR probeB = toProbe binary unaryIO :: MyData -> IO MyData unaryIO = return probeIO :: Probe SR probeIO = toProbe unaryIO probeIntCharStr :: Probe SR probeIntCharStr = toProbe (replicate :: Int -> Char -> [Char]) int :: TypeRep int = typeRep (Proxy @Int) char :: TypeRep char = typeRep (Proxy @Char) intChar :: TypeRep intChar = typeRep (Proxy @(Int -> Char)) intCharChar :: TypeRep intCharChar = typeRep (Proxy @(Int -> Char -> Char))