From 6517b69fd84e4edca8e218a6091a41c5b9511271 Mon Sep 17 00:00:00 2001 From: VegOwOtenks Date: Wed, 20 Aug 2025 16:49:23 +0200 Subject: [PATCH] feat: MonadPlus instance for Extract --- src/Language/Java/Classfile/Extract.hs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Language/Java/Classfile/Extract.hs b/src/Language/Java/Classfile/Extract.hs index d837cc7..607d4b0 100644 --- a/src/Language/Java/Classfile/Extract.hs +++ b/src/Language/Java/Classfile/Extract.hs @@ -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.