Skip to content

Commit 9af8917

Browse files
committed
Builtins: refactor
1 parent 884e16a commit 9af8917

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/Nix/Builtins.hs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ builtins :: (MonadNix e t f m, Scoped (NValue t f m) m)
124124
=> m (Scopes m (NValue t f m))
125125
builtins =
126126
do
127-
ref <- defer $ (nvSet mempty) <$> buildMap
127+
ref <- defer $ nvSet mempty <$> buildMap
128128
lst <- ([("builtins", ref)] <>) <$> topLevelBuiltins
129129
pushScope (M.fromList lst) currentScopes
130130
where
@@ -883,9 +883,10 @@ catAttrs attrName xs =
883883
n <- fromStringNoContext =<< fromValue attrName
884884
l <- fromValue @[NValue t f m] xs
885885

886-
fmap (nvList . catMaybes) $
887-
forM l $
888-
fmap (M.lookup n) . fromValue <=< demand
886+
nvList . catMaybes <$>
887+
traverse
888+
(fmap (M.lookup n) . fromValue <=< demand)
889+
l
889890

890891
baseNameOf :: MonadNix e t f m => NValue t f m -> m (NValue t f m)
891892
baseNameOf x = do
@@ -1010,7 +1011,7 @@ genList f nixN =
10101011
n <- fromValue @Integer nixN
10111012
bool
10121013
(throwError $ ErrorCall $ "builtins.genList: Expected a non-negative number, got " <> show n)
1013-
(toValue =<< forM [0 .. n - 1] (defer . callFunc f <=< toValue))
1014+
(toValue =<< traverse (defer . callFunc f <=< toValue) [0 .. n - 1])
10141015
(n >= 0)
10151016

10161017
-- We wrap values solely to provide an Ord instance for genericClosure
@@ -1433,17 +1434,17 @@ listToAttrs lst =
14331434
do
14341435
l <- fromValue @[NValue t f m] lst
14351436
fmap
1436-
((nvSet mempty) . M.fromList . reverse)
1437-
(forM l $
1437+
(nvSet mempty . M.fromList . reverse)
1438+
(traverse
14381439
(\ nvattrset ->
14391440
do
1440-
a <- fromValue @(AttrSet (NValue t f m)) nvattrset
1441-
n <- fromValue =<< demand =<< attrsetGet "name" a
1442-
name <- fromStringNoContext n
1441+
a <- fromValue @(AttrSet (NValue t f m)) =<< demand nvattrset
1442+
name <- fromStringNoContext =<< fromValue =<< demand =<< attrsetGet "name" a
14431443
val <- attrsetGet "value" a
14441444

14451445
pure (name, val)
1446-
) <=< demand
1446+
)
1447+
l
14471448
)
14481449

14491450
-- prim_hashString from nix/src/libexpr/primops.cc
@@ -1596,7 +1597,7 @@ fromJSON nvjson =
15961597

15971598
where
15981599
jsonToNValue = \case
1599-
A.Object m -> (nvSet mempty) <$> traverse jsonToNValue m
1600+
A.Object m -> nvSet mempty <$> traverse jsonToNValue m
16001601
A.Array l -> nvList <$> traverse jsonToNValue (V.toList l)
16011602
A.String s -> pure $ nvStr $ makeNixStringWithoutContext s
16021603
A.Number n ->
@@ -1664,7 +1665,7 @@ trace_ msg action =
16641665
traceEffect @t @f @m . Text.unpack . stringIgnoreContext =<< fromValue msg
16651666
pure action
16661667

1667-
-- 2018-09-08: NOTE: Remember of error context is so far not implemented
1668+
-- Please, can function remember error context
16681669
addErrorContext
16691670
:: forall e t f m
16701671
. MonadNix e t f m

0 commit comments

Comments
 (0)