fork download
  1. /* Example of case class */
  2.  
  3.  
  4. case class Var(name: String) extends Term
  5. case class Fun(arg: String, body: Term) extends Term
  6. case class App(f: Term, v: Term) extends Term
  7.  
  8. object TermTest extends Application {
  9. def printTerm(term: Term) {
  10. term match {
  11. case Var(n) =>
  12. print(n)
  13. case Fun(x, b) =>
  14. print("^" + x + ".")
  15. printTerm(b)
  16. case App(f, v) =>
  17. Console.print("(")
  18. printTerm(f)
  19. print(" ")
  20. printTerm(v)
  21. print(")")
  22. }
  23. }
  24. def isIdentityFun(term: Term): Boolean = term match {
  25. case Fun(x, Var(y)) if x == y => true
  26. case _ => false
  27. }
  28. val id = Fun("x", Var("x"))
  29. val t = Fun("x", Fun("y", App(Var("x"), Var("y"))))
  30. printTerm(t)
  31. println
  32. println(isIdentityFun(id))
  33. println(isIdentityFun(t))
  34. }
  35.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty