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

Scala和Haskell中更高的键控类型

发布时间:2020-12-16 18:41:31 所属栏目:安全 来源:网络整理
导读:Data.Foldable显示以下代数数据类型: 数据树a =空|叶a |节点(树a)a(树a) 它的种类是* – *.它需要一种类型. Prelude :k TreeTree :: * - * 现在让我们看看特质可折叠[_],来自Scala的“更高级的类型”Functional Programming in Scala: trait Foldable[F[_]
Data.Foldable显示以下代数数据类型:

数据树a =空|叶a |节点(树a)a(树a)

它的种类是* – > *.它需要一种类型.

Prelude> :k Tree
Tree :: * -> *

现在让我们看看特质可折叠[_],来自Scala的“更高级的类型”Functional Programming in Scala:

trait Foldable[F[_]] {
  def foldRight[A,B](as: F[A])(z: B)(f: (A,B) => B): B
  ...
}

这本优秀的书说:

Just like values and functions have types,types and type constructors
have kinds. Scala uses kinds to track how many type arguments a type
constructor takes,…

编辑

指定特性可折叠[F [_]]时,F [_]是否始终指示较高的类型? F [_]可能是其他什么吗?它可能是一种类型 – F [A]?

解决方法

Scala中的F [_]代表* – >之类的东西. *在Haskell中:这是一种“接收”具体类型的类型(Scala中的_和Haskell中的第一个*)并返回一个新的具体类型(F [A]用于某些具体类型A和具体“容器”F in斯卡拉).

所以是的,F [_]代表一些更高级的类型,如List [_]或Option [_].在特征可折叠[A,F [A]]中定义scala中的遍历是没有用的,因为我们会说可折叠需要用折叠的特定事物(A)来定义.

(编辑:李大同)

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

    推荐文章
      热点阅读