diff options
Diffstat (limited to 'test/pending/pos/unappgadteval.scala')
-rw-r--r-- | test/pending/pos/unappgadteval.scala | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/test/pending/pos/unappgadteval.scala b/test/pending/pos/unappgadteval.scala index 0c22c71dee..007d57d7ea 100644 --- a/test/pending/pos/unappgadteval.scala +++ b/test/pending/pos/unappgadteval.scala @@ -11,21 +11,21 @@ class App[b, c] (val f : Term[b => c], val e : Term[b]) extends Term[c] object Suc{ def unapply(a:Suc) = true } class Suc () extends Term[int => int] // Environments : -abstract class Env { +abstract class Env { def apply[a](v : Var[a]): a - def extend[a](v : Var[a], x : a) = new Env { - def apply[b](w: Var[b]): b = w match { + def extend[a](v : Var[a], x : a) = new Env { + def apply[b](w: Var[b]): b = w match { case _ : v.type => x // v eq w, hence a = b case _ => Env.this.apply(w) }} } -object empty extends Env { - def apply[a](x : Var[a]): a = throw new Error("not found : "+x.name) +object empty extends Env { + def apply[a](x : Var[a]): a = throw new Error("not found : "+x.name) } object Test { // Evaluation : -def eval[a](t : Term[a], env : Env): a = t match { +def eval[a](t : Term[a], env : Env): a = t match { case v : Var[b] => env(v) // a = b case n @ Num(value) => value // a = int case i @ Suc() => { y: int => y + 1 } // a = int=>int |