@@ -245,29 +245,42 @@ reduce (NWith_ ann scope body) =
245245
246246-- | Reduce a let binds section by pushing lambdas,
247247-- constants and strings to the body scope.
248- reduce (NLet_ ann binds body) = do
249- s <- fmap (M. fromList . catMaybes) $ forM binds $ \ case
250- NamedVar (StaticKey name :| [] ) def _pos -> def >>= \ case
251- d@ (Fix NAbs_ {} ) -> pure $ pure (name, d)
252- d@ (Fix NConstant_ {}) -> pure $ pure (name, d)
253- d@ (Fix NStr_ {} ) -> pure $ pure (name, d)
254- _ -> pure Nothing
255- _ -> pure Nothing
256- body' <- pushScope s body
257- binds' <- traverse sequence binds
258- -- let names = gatherNames body'
259- -- binds' <- traverse sequence binds <&> \b -> flip filter b $ \case
260- -- NamedVar (StaticKey name _ :| mempty) _ ->
261- -- name `S.member` names
262- -- _ -> True
263- pure $ Fix $ NLet_ ann binds' body'
264- -- where
265- -- go m [] = pure m
266- -- go m (x:xs) = case x of
267- -- NamedVar (StaticKey name _ :| mempty) def -> do
268- -- v <- pushScope m def
269- -- go (M.insert name v m) xs
270- -- _ -> go m xs
248+ reduce (NLet_ ann binds body) =
249+ do
250+ s <-
251+ M. fromList . catMaybes <$>
252+ traverse
253+ (\ case
254+ NamedVar (StaticKey name :| [] ) def _pos ->
255+ let
256+ defcase =
257+ \ case
258+ d@ (Fix NAbs_ {} ) -> pure (name, d)
259+ d@ (Fix NConstant_ {}) -> pure (name, d)
260+ d@ (Fix NStr_ {} ) -> pure (name, d)
261+ _ -> Nothing
262+ in
263+ defcase <$> def
264+
265+ _ -> pure Nothing
266+
267+ )
268+ binds
269+ body' <- pushScope s body
270+ binds' <- traverse sequence binds
271+ -- let names = gatherNames body'
272+ -- binds' <- traverse sequence binds <&> \b -> flip filter b $ \case
273+ -- NamedVar (StaticKey name _ :| mempty) _ ->
274+ -- name `S.member` names
275+ -- _ -> True
276+ pure $ Fix $ NLet_ ann binds' body'
277+ -- where
278+ -- go m [] = pure m
279+ -- go m (x:xs) = case x of
280+ -- NamedVar (StaticKey name _ :| mempty) def -> do
281+ -- v <- pushScope m def
282+ -- go (M.insert name v m) xs
283+ -- _ -> go m xs
271284
272285-- | Reduce an if to the relevant path if
273286-- the condition is a boolean constant.
0 commit comments