diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cd7dd01 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +dist-newstyle +.envrc diff --git a/src/Trace.hs b/src/Trace.hs new file mode 100644 index 0000000..823f9ff --- /dev/null +++ b/src/Trace.hs @@ -0,0 +1,9 @@ +{-# 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