gadts.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 20 行
SCALA
20 行
abstract class Term[T];case class Lit(x: int) extends Term[int];case class Succ(t: Term[int]) extends Term[int];case class IsZero(t: Term[int]) extends Term[boolean];case class If[T](c: Term[boolean], t1: Term[T], t2: Term[T]) extends Term[T];object Test extends Application { def eval[T](t: Term[T]): T = t match { case Lit(n) => n case Succ(u) => eval(u) + 1 case IsZero(u) => eval(u) == 0 case If(c, u1, u2) => eval(if (eval(c)) u1 else u2) } Console.println( eval(If(IsZero(Lit(1)), Lit(41), Succ(Lit(41)))))}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?