Skip to content

Commit 03f9cbc

Browse files
committed
move Fix1{,T} instances to the type class parent
Since type class is up the structure - move instances there.
1 parent 849fd1e commit 03f9cbc

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

src/Nix/Effects.hs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
{-# LANGUAGE TypeFamilies #-}
1010
{-# LANGUAGE DataKinds #-}
1111
{-# LANGUAGE TypeApplications #-}
12+
{-# LANGUAGE StandaloneDeriving #-}
13+
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
14+
{-# LANGUAGE UndecidableInstances #-}
1215

1316
module Nix.Effects where
1417

@@ -26,6 +29,7 @@ import qualified Data.Text.Encoding as T
2629
import Network.HTTP.Client hiding ( path, Proxy )
2730
import Network.HTTP.Client.TLS
2831
import Network.HTTP.Types
32+
import Nix.Utils.Fix1
2933
import Nix.Expr
3034
import Nix.Frames hiding ( Proxy )
3135
import Nix.Parser
@@ -287,3 +291,21 @@ addPath p = either throwError return =<< addToStore (T.pack $ takeFileName p) p
287291

288292
toFile_ :: (Framed e m, MonadStore m) => FilePath -> String -> m StorePath
289293
toFile_ p contents = addTextToStore (T.pack p) (T.pack contents) HS.empty False
294+
295+
-- All of the following type classes defer to the underlying 'm'.
296+
297+
deriving instance MonadPutStr (t (Fix1 t)) => MonadPutStr (Fix1 t)
298+
deriving instance MonadHttp (t (Fix1 t)) => MonadHttp (Fix1 t)
299+
deriving instance MonadEnv (t (Fix1 t)) => MonadEnv (Fix1 t)
300+
deriving instance MonadPaths (t (Fix1 t)) => MonadPaths (Fix1 t)
301+
deriving instance MonadInstantiate (t (Fix1 t)) => MonadInstantiate (Fix1 t)
302+
deriving instance MonadExec (t (Fix1 t)) => MonadExec (Fix1 t)
303+
deriving instance MonadIntrospect (t (Fix1 t)) => MonadIntrospect (Fix1 t)
304+
305+
deriving instance MonadPutStr (t (Fix1T t m) m) => MonadPutStr (Fix1T t m)
306+
deriving instance MonadHttp (t (Fix1T t m) m) => MonadHttp (Fix1T t m)
307+
deriving instance MonadEnv (t (Fix1T t m) m) => MonadEnv (Fix1T t m)
308+
deriving instance MonadPaths (t (Fix1T t m) m) => MonadPaths (Fix1T t m)
309+
deriving instance MonadInstantiate (t (Fix1T t m) m) => MonadInstantiate (Fix1T t m)
310+
deriving instance MonadExec (t (Fix1T t m) m) => MonadExec (Fix1T t m)
311+
deriving instance MonadIntrospect (t (Fix1T t m) m) => MonadIntrospect (Fix1T t m)

src/Nix/Standard.hs

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
{-# LANGUAGE DeriveTraversable #-}
77
{-# LANGUAGE FlexibleContexts #-}
88
{-# LANGUAGE FlexibleInstances #-}
9-
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
109
{-# LANGUAGE MultiParamTypeClasses #-}
1110
{-# LANGUAGE ScopedTypeVariables #-}
12-
{-# LANGUAGE StandaloneDeriving #-}
1311
{-# LANGUAGE TypeApplications #-}
1412
{-# LANGUAGE TypeFamilies #-}
13+
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1514
{-# LANGUAGE UndecidableInstances #-}
1615

1716

@@ -53,23 +52,6 @@ import Nix.Value
5352
import Nix.Value.Monad
5453
import Nix.Var
5554

56-
-- All of the following type classes defer to the underlying 'm'.
57-
58-
deriving instance MonadPutStr (t (Fix1 t)) => MonadPutStr (Fix1 t)
59-
deriving instance MonadHttp (t (Fix1 t)) => MonadHttp (Fix1 t)
60-
deriving instance MonadEnv (t (Fix1 t)) => MonadEnv (Fix1 t)
61-
deriving instance MonadPaths (t (Fix1 t)) => MonadPaths (Fix1 t)
62-
deriving instance MonadInstantiate (t (Fix1 t)) => MonadInstantiate (Fix1 t)
63-
deriving instance MonadExec (t (Fix1 t)) => MonadExec (Fix1 t)
64-
deriving instance MonadIntrospect (t (Fix1 t)) => MonadIntrospect (Fix1 t)
65-
66-
deriving instance MonadPutStr (t (Fix1T t m) m) => MonadPutStr (Fix1T t m)
67-
deriving instance MonadHttp (t (Fix1T t m) m) => MonadHttp (Fix1T t m)
68-
deriving instance MonadEnv (t (Fix1T t m) m) => MonadEnv (Fix1T t m)
69-
deriving instance MonadPaths (t (Fix1T t m) m) => MonadPaths (Fix1T t m)
70-
deriving instance MonadInstantiate (t (Fix1T t m) m) => MonadInstantiate (Fix1T t m)
71-
deriving instance MonadExec (t (Fix1T t m) m) => MonadExec (Fix1T t m)
72-
deriving instance MonadIntrospect (t (Fix1T t m) m) => MonadIntrospect (Fix1T t m)
7355

7456
type MonadFix1T t m = (MonadTrans (Fix1T t), Monad (t (Fix1T t m) m))
7557

0 commit comments

Comments
 (0)