{-# LANGUAGE NoImplicitPrelude #-}
module Headroom.PostProcess.Types
( PostProcess(..)
)
where
import RIO
newtype PostProcess env = PostProcess (Text -> Reader env Text)
instance Semigroup (PostProcess env) where
PostProcess Text -> Reader env Text
fnX <> :: PostProcess env -> PostProcess env -> PostProcess env
<> PostProcess Text -> Reader env Text
fnY = (Text -> Reader env Text) -> PostProcess env
forall env. (Text -> Reader env Text) -> PostProcess env
PostProcess ((Text -> Reader env Text) -> PostProcess env)
-> (Text -> Reader env Text) -> PostProcess env
forall a b. (a -> b) -> a -> b
$ Text -> Reader env Text
fnX (Text -> Reader env Text)
-> (Text -> Reader env Text) -> Text -> Reader env Text
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Text -> Reader env Text
fnY
instance Monoid (PostProcess env) where
mempty :: PostProcess env
mempty = (Text -> Reader env Text) -> PostProcess env
forall env. (Text -> Reader env Text) -> PostProcess env
PostProcess ((Text -> Reader env Text) -> PostProcess env)
-> (Text -> Reader env Text) -> PostProcess env
forall a b. (a -> b) -> a -> b
$ \Text
input -> Text -> Reader env Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
input