package Mainabstract class Termcase class Var(name: String) extends Termcase class Fun(arg: String, body: Term) extends Termcase class Appli(f: Term, v: Term) extends Termobject TermTest extends App { def printTerm(term: Term) { term match { case Var(n) => print("" + n) case Fun(x, b) => print("^" + x + ".") printTerm(b) case Appli(f, v) => Console.print("(") printTerm(f) print(" ") printTerm(v) print(")") } } def isIdentityFun(term: Term): Boolean = term match { case Fun(x, Var(y)) if x == y => true case _ => false } val id = Fun("x", Var("x")) println("id: " + id) val t = Fun("x", Fun("y", Appli(Var("x"), Var("y")))) println("t: " + t) printTerm(t) println println(isIdentityFun(id)) println(isIdentityFun(t))}