Skip to content

Commit d97a8a0

Browse files
committed
Standard: {StdCited, StdThunk} rm newtype accessor
With the removal it becomes pretty strongly (but still probably) apparent that maybe these "Standard" abstractions & instances are superflous and probably they can be just type aliases, which would allow to dismantle the suprtflous type class instances for them (since what they do - they do nothing, just do already isomorphic type case (coerse)) & so to skip making this type class & module jump
1 parent 9f25658 commit d97a8a0

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

src/Nix/Standard.hs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import Control.Monad.Catch ( MonadThrow
1919
#if !MIN_VERSION_base(4,13,0)
2020
import Control.Monad.Fail ( MonadFail )
2121
#endif
22-
import Control.Monad.Free ( Free(Pure, Free) )
22+
import Control.Monad.Free ( Free(Pure,Free) )
2323
import Control.Monad.Reader ( MonadFix )
2424
import Control.Monad.Ref ( MonadRef(newRef)
2525
, MonadAtomicRef
@@ -47,7 +47,7 @@ import Nix.Value.Monad
4747

4848
newtype StdCited m a =
4949
StdCited
50-
{ _stdCited :: Cited (StdThunk m) (StdCited m) m a }
50+
(Cited (StdThunk m) (StdCited m) m a)
5151
deriving
5252
( Generic
5353
, Typeable
@@ -59,13 +59,18 @@ newtype StdCited m a =
5959
, ComonadEnv [Provenance m (StdValue m)]
6060
)
6161

62-
newtype StdThunk (m :: Type -> Type) =
62+
newtype StdThunk m =
6363
StdThunk
64-
{ _stdThunk :: StdCited m (NThunkF m (StdValue m)) }
64+
(StdCited m (NThunkF m (StdValue m)))
6565

6666
type StdValue' m = NValue' (StdThunk m) (StdCited m) m (StdValue m)
6767
type StdValue m = NValue (StdThunk m) (StdCited m) m
6868

69+
-- | Type alias:
70+
--
71+
-- > Cited (StdThunk m) (StdCited m) m (NThunkF m (StdValue m))
72+
type CitedStdThunk m = Cited (StdThunk m) (StdCited m) m (NThunkF m (StdValue m))
73+
6974
instance Show (StdThunk m) where
7075
show _ = toString thunkStubText
7176

@@ -126,34 +131,34 @@ instance
126131
thunkId
127132
:: StdThunk m
128133
-> ThunkId m
129-
thunkId = thunkId . _stdCited . _stdThunk
134+
thunkId = thunkId @(CitedStdThunk m) . coerce
130135
{-# inline thunkId #-}
131136

132137
thunk
133138
:: m (StdValue m)
134139
-> m (StdThunk m)
135-
thunk = fmap (StdThunk . StdCited) . thunk
140+
thunk = fmap coerce . thunk @(CitedStdThunk m)
136141

137142
query
138143
:: m (StdValue m)
139144
-> StdThunk m
140145
-> m (StdValue m)
141-
query b = query b . _stdCited . _stdThunk
146+
query b = query @(CitedStdThunk m) b . coerce
142147

143148
force
144149
:: StdThunk m
145150
-> m (StdValue m)
146-
force = force . _stdCited . _stdThunk
151+
force = force @(CitedStdThunk m) . coerce
147152

148153
forceEff
149154
:: StdThunk m
150155
-> m (StdValue m)
151-
forceEff = forceEff . _stdCited . _stdThunk
156+
forceEff = forceEff @(CitedStdThunk m) . coerce
152157

153158
further
154159
:: StdThunk m
155160
-> m (StdThunk m)
156-
further = fmap (StdThunk . StdCited) . further . _stdCited . _stdThunk
161+
further = fmap coerce . further @(CitedStdThunk m) . coerce
157162

158163

159164
-- * @instance MonadThunkF@ (Kleisli functor HOFs)
@@ -175,31 +180,31 @@ instance
175180
-> m r
176181
-> StdThunk m
177182
-> m r
178-
queryF k b = queryF k b . _stdCited . _stdThunk
183+
queryF k b = queryF @(CitedStdThunk m) k b . coerce
179184

180185
forceF
181186
:: ( StdValue m
182187
-> m r
183188
)
184189
-> StdThunk m
185190
-> m r
186-
forceF k = forceF k . _stdCited . _stdThunk
191+
forceF k = forceF @(CitedStdThunk m) k . coerce
187192

188193
forceEffF
189194
:: ( StdValue m
190195
-> m r
191196
)
192197
-> StdThunk m
193198
-> m r
194-
forceEffF k = forceEffF k . _stdCited . _stdThunk
199+
forceEffF k = forceEffF @(CitedStdThunk m) k . coerce
195200

196201
furtherF
197202
:: ( m (StdValue m)
198203
-> m (StdValue m)
199204
)
200205
-> StdThunk m
201206
-> m (StdThunk m)
202-
furtherF k = fmap (StdThunk . StdCited) . furtherF k . _stdCited . _stdThunk
207+
furtherF k = fmap coerce . furtherF @(CitedStdThunk m) k . coerce
203208

204209

205210
-- * @instance MonadValue (StdValue m) m@

0 commit comments

Comments
 (0)