ruin-0.1.0.0: test/MustCompile/PrintAndTime.hs
{-# Language DataKinds #-}
{-# Language FlexibleContexts #-}
{-# Language FlexibleInstances #-}
{-# Language MultiParamTypeClasses #-}
{-# Language ScopedTypeVariables #-}
{-# Language TypeApplications #-}
{-# Language TypeFamilies #-}
{-# Language TypeOperators #-}
{-# Language UndecidableInstances #-}
-- | This is the example from the Haddock on 'MapF'.
module MustCompile.PrintAndTime () where
import qualified System.CPUTime
import Data.Ruin
data PrintAndTime = MkPrintAndTime
instance (Show a,f ~ (a -> IO (a,Integer))) => FPure PrintAndTime s f where
fpure = \_ x -> do
print x
(,) x <$> System.CPUTime.getCPUTime
_printAndTime :: (Show x, Show y) => ("x" :@ x,"y" :@ y) -> IO ("x" :@ (x,Integer),"y" :@ (y,Integer))
_printAndTime = rmapA MkPrintAndTime