/* Example of case class */
def printTerm
(term
: Term
) { print(n)
print("^" + x + ".")
printTerm(b)
Console.print("(")
printTerm(f)
print(" ")
printTerm(v)
print(")")
}
}
def isIdentityFun
(term
: Term
): Boolean
= term
match { }
val id
= Fun
("x", Var
("x")) val t
= Fun
("x", Fun
("y", App
(Var
("x"), Var
("y")))) printTerm(t)
println
println(isIdentityFun(id))
println(isIdentityFun(t))
}
LyogRXhhbXBsZSBvZiBjYXNlIGNsYXNzICovCgphYnN0cmFjdCBjbGFzcyBUZXJtCgpjYXNlIGNsYXNzIFZhcihuYW1lOiBTdHJpbmcpIGV4dGVuZHMgVGVybQpjYXNlIGNsYXNzIEZ1bihhcmc6IFN0cmluZywgYm9keTogVGVybSkgZXh0ZW5kcyBUZXJtCmNhc2UgY2xhc3MgQXBwKGY6IFRlcm0sIHY6IFRlcm0pIGV4dGVuZHMgVGVybQoKb2JqZWN0IFRlcm1UZXN0IGV4dGVuZHMgQXBwbGljYXRpb24gewogICAgZGVmIHByaW50VGVybSh0ZXJtOiBUZXJtKSB7CiAgICAgICAgdGVybSBtYXRjaCB7CiAgICAgICAgICAgIGNhc2UgVmFyKG4pID0+CiAgICAgICAgICAgICAgICBwcmludChuKQogICAgICAgICAgICBjYXNlIEZ1bih4LCBiKSA9PgogICAgICAgICAgICAgICAgcHJpbnQoIl4iICsgeCArICIuIikKICAgICAgICAgICAgICAgIHByaW50VGVybShiKQogICAgICAgICAgICBjYXNlIEFwcChmLCB2KSA9PgogICAgICAgICAgICAgICAgQ29uc29sZS5wcmludCgiKCIpCiAgICAgICAgICAgICAgICBwcmludFRlcm0oZikKICAgICAgICAgICAgICAgIHByaW50KCIgIikKICAgICAgICAgICAgICAgIHByaW50VGVybSh2KQogICAgICAgICAgICAgICAgcHJpbnQoIikiKQogICAgICAgIH0KICAgIH0KICAgIGRlZiBpc0lkZW50aXR5RnVuKHRlcm06IFRlcm0pOiBCb29sZWFuID0gdGVybSBtYXRjaCB7CiAgICAgICAgY2FzZSBGdW4oeCwgVmFyKHkpKSBpZiB4ID09IHkgPT4gdHJ1ZQogICAgICAgIGNhc2UgXyA9PiBmYWxzZQogICAgfQogICAgdmFsIGlkID0gRnVuKCJ4IiwgVmFyKCJ4IikpCiAgICB2YWwgdCA9IEZ1bigieCIsIEZ1bigieSIsIEFwcChWYXIoIngiKSwgVmFyKCJ5IikpKSkKICAgIHByaW50VGVybSh0KQogICAgcHJpbnRsbgogICAgcHJpbnRsbihpc0lkZW50aXR5RnVuKGlkKSkKICAgIHByaW50bG4oaXNJZGVudGl0eUZ1bih0KSkKfQo=