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 ... } 这本优秀的书说:
编辑 指定特性可折叠[F [_]]时,F [_]是否始终指示较高的类型? F [_]可能是其他什么吗?它可能是一种类型 – F [A]? 解决方法
Scala中的F [_]代表* – >之类的东西. *在Haskell中:这是一种“接收”具体类型的类型(Scala中的_和Haskell中的第一个*)并返回一个新的具体类型(F [A]用于某些具体类型A和具体“容器”F in斯卡拉).
所以是的,F [_]代表一些更高级的类型,如List [_]或Option [_].在特征可折叠[A,F [A]]中定义scala中的遍历是没有用的,因为我们会说可折叠需要用折叠的特定事物(A)来定义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |