Guest User

Untitled

a guest
Nov 21st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.26 KB | None | 0 0
  1. get' :: Maybe a -> a
  2. get' (Just x) = x
  3. get' Nothing = undefined
  4.  
  5. reduce :: Expr -> Expr
  6. reduce e = get' ((reduce <$> reduceOnce e) <|> Just e)
  7.  
  8. nf :: Expr -> Expr
  9. nf (Var x) = Var x
  10. nf e@(e1 :@ e2) = reduce ((nf e1) :@ (nf e2))
  11. nf e@(Lam s e1) = reduce (Lam s (nf e1))
Add Comment
Please, Sign In to add comment