@@ -48,39 +48,35 @@ freeVars e = case unFix e of
4848 (NLiteralPath _ ) -> mempty
4949 (NEnvPath _ ) -> mempty
5050 (NUnary _ expr ) -> freeVars expr
51- (NBinary _ left right ) -> Set. union (freeVars left) ( freeVars right)
51+ (NBinary _ left right ) -> ( (<>) `on` freeVars) left right
5252 (NSelect expr path orExpr) ->
5353 Set. unions
5454 [ freeVars expr
5555 , pathFree path
5656 , maybe mempty freeVars orExpr
5757 ]
58- (NHasAttr expr path) -> Set. union ( freeVars expr) ( pathFree path)
58+ (NHasAttr expr path) -> freeVars expr <> pathFree path
5959 (NAbs (Param varname) expr) -> Set. delete varname (freeVars expr)
6060 (NAbs (ParamSet set _ varname) expr) ->
61- Set. union
62- -- Include all free variables from the expression and the default arguments
63- (freeVars expr)
64- -- But remove the argument name if existing, and all arguments in the parameter set
61+ -- Include all free variables from the expression and the default arguments
62+ freeVars expr <>
63+ -- But remove the argument name if existing, and all arguments in the parameter set
64+ Set. difference
65+ (Set. unions $ freeVars <$> mapMaybe snd set)
6566 (Set. difference
66- (Set. unions $ freeVars <$> mapMaybe snd set)
67- (Set. difference
68- (maybe mempty one varname)
69- (Set. fromList $ fmap fst set)
70- )
67+ (maybe mempty one varname)
68+ (Set. fromList $ fmap fst set)
7169 )
7270 (NLet bindings expr ) ->
73- Set. union
74- (freeVars expr)
75- (Set. difference
76- (bindFreeVars bindings)
77- (bindDefs bindings)
78- )
71+ freeVars expr <>
72+ Set. difference
73+ (bindFreeVars bindings)
74+ (bindDefs bindings)
7975 (NIf cond th el ) -> Set. unions $ freeVars <$> [cond, th, el]
8076 -- Evaluation is needed to find out whether x is a "real" free variable in `with y; x`, we just include it
8177 -- This also makes sense because its value can be overridden by `x: with y; x`
82- (NWith set expr ) -> Set. union (freeVars set ) (freeVars expr)
83- (NAssert assertion expr ) -> Set. union (freeVars assertion) ( freeVars expr)
78+ (NWith set expr ) -> ( (<>) `on` freeVars) set expr
79+ (NAssert assertion expr ) -> ( (<>) `on` freeVars) assertion expr
8480 (NSynHole _ ) -> mempty
8581
8682 where
@@ -100,7 +96,7 @@ freeVars e = case unFix e of
10096 bind1Free :: Binding NExpr -> Set VarName
10197 bind1Free (Inherit Nothing keys _) = Set. fromList $ mapMaybe staticKey keys
10298 bind1Free (Inherit (Just scope) _ _) = freeVars scope
103- bind1Free (NamedVar path expr _) = Set. union ( pathFree path) ( freeVars expr)
99+ bind1Free (NamedVar path expr _) = pathFree path <> freeVars expr
104100
105101 staticKey :: NKeyName r -> Maybe VarName
106102 staticKey (StaticKey varname) = pure varname
0 commit comments