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.