Guest User

Untitled

a guest
Oct 21st, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.53 KB | None | 0 0
  1. class Expr(f: Function1[Map[Symbol,Int], Int]) {
  2. def apply(env: Map[Symbol, Int]): Int = f(env)
  3. }
  4.  
  5. object Lambda extends App {
  6. val number: Int => Expr = num => new Expr(env => num)
  7. val variable = (id: Symbol) => new Expr(env => env(id))
  8. val add = (a: Expr, b: Expr) => new Expr(env => a(env) + b(env))
  9. val multiply = (a: Expr, b: Expr ) => new Expr(env => a(env) * b(env))
  10.  
  11. val environment = Map('a -> 1, 'b -> 2, 'c -> 3)
  12. val expr_tree = add(variable('a), multiply(number(2), variable('b)))
  13.  
  14. println(expr_tree(environment))
  15. }
Add Comment
Please, Sign In to add comment