Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Expr(f: Function1[Map[Symbol,Int], Int]) {
- def apply(env: Map[Symbol, Int]): Int = f(env)
- }
- object Lambda extends App {
- val number: Int => Expr = num => new Expr(env => num)
- val variable = (id: Symbol) => new Expr(env => env(id))
- val add = (a: Expr, b: Expr) => new Expr(env => a(env) + b(env))
- val multiply = (a: Expr, b: Expr ) => new Expr(env => a(env) * b(env))
- val environment = Map('a -> 1, 'b -> 2, 'c -> 3)
- val expr_tree = add(variable('a), multiply(number(2), variable('b)))
- println(expr_tree(environment))
- }
Add Comment
Please, Sign In to add comment