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 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
import Data.ByteString.Lazy (ByteString)
import qualified Data.ByteString.Lazy as ByteString
import Control.Applicative (Alternative (empty, (<|>)))
import Control.Monad (MonadPlus)
import Data.ByteString.Lazy (ByteString)
import Data.Text (Text)
import qualified Data.Text as Text
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.
newtype Extract a = Extract (Continuation a)
deriving (Functor)
deriving anyclass MonadPlus
-- | Functions work wonders when defining monads.