Skip to content

Commit 33fd571

Browse files
committed
treewide: use traverseM
1 parent 9dc602d commit 33fd571

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

src/Nix/Convert.hs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ class FromValue a m v where
7171
fromValue :: v -> m a
7272
fromValueMay :: v -> m (Maybe a)
7373

74+
traverseToMValue
75+
:: ( Applicative m
76+
, Traversable t
77+
, FromValue b m a
78+
)
79+
=> t a
80+
-> m (Maybe (t b))
81+
traverseToMValue = traverseM fromValueMay
7482

7583
-- Please, hide these helper function from export, to be sure they get optimized away.
7684
fromMayToValue
@@ -277,7 +285,7 @@ instance ( Convertible e t f m
277285
=> FromValue [a] m (Deeper (NValue' t f m (NValue t f m))) where
278286
fromValueMay =
279287
\case
280-
Deeper (NVList' l) -> sequenceA <$> traverse fromValueMay l
288+
Deeper (NVList' l) -> traverseToMValue l
281289
_ -> stub
282290

283291

@@ -301,7 +309,7 @@ instance ( Convertible e t f m
301309

302310
fromValueMay =
303311
\case
304-
Deeper (NVSet' _ s) -> sequenceA <$> traverse fromValueMay s
312+
Deeper (NVSet' _ s) -> traverseToMValue s
305313
_ -> stub
306314

307315
fromValue = fromMayToDeeperValue TSet
@@ -326,7 +334,7 @@ instance ( Convertible e t f m
326334

327335
fromValueMay =
328336
\case
329-
Deeper (NVSet' p s) -> fmap (, p) . sequenceA <$> traverse fromValueMay s
337+
Deeper (NVSet' p s) -> (, p) <<$>> traverseToMValue s
330338
_ -> stub
331339

332340
fromValue = fromMayToDeeperValue TSet
@@ -345,13 +353,15 @@ instance ( Convertible e t f m
345353
class ToValue a m v where
346354
toValue :: a -> m v
347355

348-
instance (Convertible e t f m, ToValue a m (NValue' t f m (NValue t f m)))
356+
instance (Convertible e t f m
357+
, ToValue a m (NValue' t f m (NValue t f m))
358+
)
349359
=> ToValue a m (NValue t f m) where
350360
toValue v = Free <$> toValue v
351361

352362
instance ( Convertible e t f m
353-
, ToValue a m (Deeper (NValue' t f m (NValue t f m)))
354-
)
363+
, ToValue a m (Deeper (NValue' t f m (NValue t f m)))
364+
)
355365
=> ToValue a m (Deeper (NValue t f m)) where
356366
toValue v = Free <<$>> toValue v
357367

@@ -395,8 +405,7 @@ instance Convertible e t f m
395405
=> ToValue StorePath m (NValue' t f m (NValue t f m)) where
396406
toValue = toValue @Path . coerce
397407

398-
instance ( Convertible e t f m
399-
)
408+
instance Convertible e t f m
400409
=> ToValue SourcePos m (NValue' t f m (NValue t f m)) where
401410
toValue (SourcePos f l c) = do
402411
f' <- toValue $ mkNixStringWithoutContext $ fromString f
@@ -410,7 +419,9 @@ instance Convertible e t f m
410419
=> ToValue [NValue t f m] m (NValue' t f m (NValue t f m)) where
411420
toValue = pure . nvList'
412421

413-
instance (Convertible e t f m, ToValue a m (NValue t f m))
422+
instance (Convertible e t f m
423+
, ToValue a m (NValue t f m)
424+
)
414425
=> ToValue [a] m (Deeper (NValue' t f m (NValue t f m))) where
415426
toValue l = Deeper . nvList' <$> traverse toValue l
416427

src/Nix/Eval.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ assembleString
465465
-> m (Maybe NixString)
466466
assembleString = fromParts . stringParts
467467
where
468-
fromParts xs = (mconcat <$>) . sequenceA <$> traverse go xs
468+
fromParts xs = mconcat <<$>> traverseM go xs
469469
go =
470470
runAntiquoted
471471
"\n"

src/Nix/Utils.hs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module Nix.Utils
2626
, mapPair
2727
, both
2828
, readFile
29+
, traverseM
2930
, lifted
3031
, loebM
3132
, adi
@@ -244,4 +245,14 @@ pass = stub
244245
readFile :: Path -> IO Text
245246
readFile = Text.readFile . coerce
246247

247-
248+
traverseM
249+
:: ( Applicative m
250+
, Applicative f
251+
, Traversable t
252+
)
253+
=> ( a
254+
-> m (f b)
255+
)
256+
-> t a
257+
-> m (f (t b))
258+
traverseM f x = sequenceA <$> traverse f x

0 commit comments

Comments
 (0)