加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何将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) }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读