feat: MonadPlus instance for Extract

This commit is contained in:
vegowotenks 2025-08-20 16:49:23 +02:00
parent 831d7a5787
commit 6517b69fd8

View file

@ -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.