баловство со скалой
Mar. 13th, 2016 03:50 pm
scala> sealed trait Nat
defined trait Nat
scala> case object Z extends Nat { override def toString = "0" }
defined module Z
scala> case class S(n:Nat) extends Nat { override def toString = (n.toString.toInt + 1).toString }
defined class S
scala> def pred(n:Nat) = n match {
     | case Z => Z
     | case S(x) => x
     | }
pred: (n: Nat)Nat
scala> pred(S(S(S(S(Z)))))
res3: Nat = 3
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)

