Skip to content

Commit 7bd2568

Browse files
committed
Type.Infer: demand(F->)
1 parent dab609f commit 7bd2568

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/Nix/Type/Infer.hs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -583,17 +583,25 @@ instance MonadInfer m
583583
toValue (xs, _) =
584584
Judgment
585585
<$> foldrM go As.empty xs
586-
<*> (concat <$> traverse (demandF (pure . typeConstraints)) xs)
587-
<*> (TSet True <$> traverse (demandF (pure . inferredType)) xs)
588-
where go x rest = demandF (\x' -> pure $ As.merge (assumptions x') rest) x
586+
<*> (concat <$> traverse ((pure . typeConstraints) <=< demand ) xs)
587+
<*> (TSet True <$> traverse ((pure . inferredType) <=< demand) xs)
588+
where
589+
go x rest =
590+
do
591+
x' <- demand x
592+
pure $ As.merge (assumptions x') rest
589593

590594
instance MonadInfer m => ToValue [Judgment s] (InferT s m) (Judgment s) where
591595
toValue xs =
592596
Judgment
593597
<$> foldrM go As.empty xs
594-
<*> (concat <$> traverse (demandF (pure . typeConstraints)) xs)
595-
<*> (TList <$> traverse (demandF (pure . inferredType)) xs)
596-
where go x rest = demandF (\x' -> pure $ As.merge (assumptions x') rest) x
598+
<*> (concat <$> traverse ((pure . typeConstraints) <=< demand) xs)
599+
<*> (TList <$> traverse ((pure . inferredType) <=< demand) xs)
600+
where
601+
go x rest =
602+
do
603+
x' <- demand x
604+
pure $ As.merge (assumptions x') rest
597605

598606
instance MonadInfer m => ToValue Bool (InferT s m) (Judgment s) where
599607
toValue _ = pure $ Judgment As.empty mempty typeBool

0 commit comments

Comments
 (0)