Skip to content

Instantly share code, notes, and snippets.

@amalloy
Last active September 30, 2015 20:28
Show Gist options
  • Save amalloy/d22145a4d2bd6bfea96f to your computer and use it in GitHub Desktop.
Save amalloy/d22145a4d2bd6bfea96f to your computer and use it in GitHub Desktop.
freeVars :: Exp -> [Id]
freeVars (Var v) = [v]
freeVars (Nat _) = []
freeVars (Op _) = []
freeVars (Lam arg body) = delete arg $ freeVars body
-- freeVars (Lam arg body) = filter (/= arg) $ freeVars body
-- freeVars (Lam arg body) = delete arg . nub $ freeVars body
freeVars (App f x) = freeVars f ++ freeVars x
-- freeVars (App f x) = nub $ freeVars f ++ freeVars x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment