10 lines
274 B
Haskell
10 lines
274 B
Haskell
|
{-# LANGUAGE DerivingVia #-}
|
||
|
module Trace where
|
||
|
|
||
|
import Data.Functor.Contravariant (Op(..), Contravariant)
|
||
|
import Data.Monoid (Ap(..))
|
||
|
|
||
|
newtype Trace m a = Trace { trace :: a -> m () }
|
||
|
deriving Contravariant via Op (m ())
|
||
|
deriving (Semigroup, Monoid) via Op (Ap m ()) a
|