如何将Scala案例类定义转换为Haskell?
发布时间:2020-12-16 19:11:40 所属栏目:安全 来源:网络整理
导读:我和 Scala一起学习Haskell.我试图在Haskell中定义以下Scala类型,但失败了: sealed trait Exprcase class Value(n: Int) extends Exprcase class Add(e1: Expr,e2: Expr) extends Exprcase class Subtract(e1: Expr,e2: Expr) extends Expr 有人能举个例子
我和
Scala一起学习Haskell.我试图在Haskell中定义以下Scala类型,但失败了:
sealed trait Expr case class Value(n: Int) extends Expr case class Add(e1: Expr,e2: Expr) extends Expr case class Subtract(e1: Expr,e2: Expr) extends Expr 有人能举个例子吗? 解决方法
在scala中,联合类型使用密封的类/特征进行模拟,其中包含多个包含各个案例的子类.这些可以直接在Haskell中定义:
data Expr = Value Int | Add Expr Expr | Subtract Expr Expr 这与scala的不同之处在于,Value,Add和Subtract是Expr类型的构造函数,而在Scala中,各个案例类也有自己的类型,可以直接引用,例如: def printValue(v: Value): Unit = { println(v.n) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |