Advertisement
Guest User

Untitled

a guest
Mar 30th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.71 KB | None | 0 0
  1. abstract class Nat {
  2.     def isZero: Boolean;
  3.     def predecessor: Nat;
  4.     def succesor: Nat = new Succ(this)
  5.     def + (that: Nat): Nat;
  6.     def - (that: Nat): Nat;
  7.     override def toString: String = {
  8.       var i = 0;
  9.       var n: Nat = this;
  10.       while(n != Zero){
  11.         n = n.predecessor
  12.         i = i + 1
  13.       }
  14.       i + ""
  15.     }
  16. }
  17. object Zero extends Nat{
  18.   def isZero = true
  19.   def predecessor = throw new Error("negative number")
  20.   def + (that: Nat) = that;
  21.   def - (that: Nat) = if(that == Zero) this else throw new Error("Negative number")
  22. }
  23. class Succ(n: Nat) extends Nat{
  24.   def isZero = false
  25.   def predecessor = n;
  26.   def + (that: Nat) = new Succ(n + that)
  27.   def - (that: Nat) = if(that.isZero) this else n - that.predecessor
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement