feat: MonadPlus instance for Extract
This commit is contained in:
parent
831d7a5787
commit
6517b69fd8
1 changed files with 9 additions and 3 deletions
|
@ -2,19 +2,25 @@
|
||||||
|
|
||||||
{-# LANGUAGE DeriveFunctor #-}
|
{-# LANGUAGE DeriveFunctor #-}
|
||||||
{-# LANGUAGE InstanceSigs #-}
|
{-# LANGUAGE InstanceSigs #-}
|
||||||
|
{-# LANGUAGE DerivingStrategies #-}
|
||||||
|
{-# LANGUAGE DeriveAnyClass #-}
|
||||||
module Language.Java.Classfile.Extract (Extract(), bytes, runExtract, expectRaw, expectEqual, traceType, traceConstructor, traceField, traceIndex, Reason(..), Trace(..), Expected(..), Actual(..), TypeName(..)) where
|
module Language.Java.Classfile.Extract (Extract(), bytes, runExtract, expectRaw, expectEqual, traceType, traceConstructor, traceField, traceIndex, Reason(..), Trace(..), Expected(..), Actual(..), TypeName(..)) where
|
||||||
|
|
||||||
import Data.ByteString.Lazy (ByteString)
|
|
||||||
import qualified Data.ByteString.Lazy as ByteString
|
|
||||||
import Control.Applicative (Alternative (empty, (<|>)))
|
import Control.Applicative (Alternative (empty, (<|>)))
|
||||||
|
import Control.Monad (MonadPlus)
|
||||||
|
|
||||||
|
import Data.ByteString.Lazy (ByteString)
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import qualified Data.Text as Text
|
|
||||||
import Data.Typeable (Typeable, typeOf)
|
import Data.Typeable (Typeable, typeOf)
|
||||||
|
|
||||||
|
import qualified Data.ByteString.Lazy as ByteString
|
||||||
|
import qualified Data.Text as Text
|
||||||
|
|
||||||
-- | Extractor Monad. Computations running in this monad will automatically keep track of used resources and backtrack arbitrarily.
|
-- | Extractor Monad. Computations running in this monad will automatically keep track of used resources and backtrack arbitrarily.
|
||||||
|
|
||||||
newtype Extract a = Extract (Continuation a)
|
newtype Extract a = Extract (Continuation a)
|
||||||
deriving (Functor)
|
deriving (Functor)
|
||||||
|
deriving anyclass MonadPlus
|
||||||
|
|
||||||
-- | Functions work wonders when defining monads.
|
-- | Functions work wonders when defining monads.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue