@@ -32,26 +32,39 @@ module Nix.Reduce
3232
3333import Control.Applicative
3434import Control.Arrow ( second )
35- import Control.Monad
36- import Control.Monad.Catch
35+ import Control.Monad ( MonadPlus
36+ , join
37+ )
38+ import Control.Monad.Catch ( MonadCatch (catch ) )
3739#if !MIN_VERSION_base(4,13,0)
40+ import Prelude hiding ( fail )
3841import Control.Monad.Fail
3942#endif
40- import Control.Monad.Fix
41- import Control.Monad.IO.Class
42- import Control.Monad.Reader
43+ import Control.Monad.Fix ( MonadFix )
44+ import Control.Monad.IO.Class ( MonadIO (liftIO ) )
45+ import Control.Monad.Reader ( MonadReader (local )
46+ , ReaderT (runReaderT )
47+ , asks
48+ )
4349import Control.Monad.State.Strict ( MonadState
4450 , StateT
4551 , gets
4652 , modify
4753 , evalStateT
4854 )
4955import Data.Bifunctor ( first )
50- import Data.Fix ( Fix (.. ), foldFix , foldFixM )
56+ import Data.Fix ( Fix (.. )
57+ , foldFix
58+ , foldFixM
59+ )
5160import Data.HashMap.Lazy ( HashMap )
5261import qualified Data.HashMap.Lazy as M
5362import qualified Data.HashMap.Strict as MS
54- import Data.IORef
63+ import Data.IORef ( IORef
64+ , newIORef
65+ , readIORef
66+ , writeIORef
67+ )
5568import Data.List.NonEmpty ( NonEmpty (.. ) )
5669import qualified Data.List.NonEmpty as NE
5770import Data.Maybe ( fromMaybe
@@ -74,12 +87,25 @@ import System.Directory
7487import System.FilePath
7588
7689newtype Reducer m a = Reducer
77- { runReducer :: ReaderT (Maybe FilePath , Scopes (Reducer m ) NExprLoc )
78- (StateT (HashMap FilePath NExprLoc , MS. HashMap Text Text ) m ) a }
79- deriving (Functor , Applicative , Alternative , Monad , MonadPlus ,
80- MonadFix , MonadIO , MonadFail ,
81- MonadReader (Maybe FilePath , Scopes (Reducer m) NExprLoc ),
82- MonadState (HashMap FilePath NExprLoc , MS. HashMap Text Text ))
90+ { runReducer ::
91+ ReaderT
92+ ( Maybe FilePath
93+ , Scopes (Reducer m ) NExprLoc
94+ )
95+ ( StateT
96+ ( HashMap FilePath NExprLoc
97+ , MS. HashMap Text Text
98+ )
99+ m
100+ )
101+ a
102+ }
103+ deriving
104+ ( Functor , Applicative , Alternative
105+ , Monad , MonadPlus , MonadFix , MonadIO , MonadFail
106+ , MonadReader (Maybe FilePath , Scopes (Reducer m ) NExprLoc )
107+ , MonadState (HashMap FilePath NExprLoc , MS. HashMap Text Text )
108+ )
83109
84110staticImport
85111 :: forall m
0 commit comments