作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我想使用模式匹配实现列表的长度函数,那么我可以这样做:
length' :: (Num b) => [a] -> b
length' [] = 0
length' (_:xs) = 1 + length' xs
Vector
做类似的事情吗?年代?
最佳答案
vector
图书馆的各种Vector
类型是不透明类型,不公开其数据构造函数,因此您无法对它们进行模式匹配。
有一些方法可以解决这个问题,例如 ViewPatterns
(正如 user2407038 的评论所提到的),但您当然不想将这些与向量一起使用,因为您可能会放弃使用向量的优势。vector
的亮点库是它是基于两个概念实现的:
ViewPatterns
要将向量视为有效的单链表,为什么不将向量转换为列表?
vector
你真的想尽可能地坚持
the operations provided by the library itself ,因为它们将利用库的性能特性。
example :: Vector something -> Vector somethingElse
example as
| Vector.null as = ...
| otherwise = ...
as
被具体化以便我们可以测试它是否为空,如果测试可以被消除或移动到其他地方,那么“...”位中的操作可能会与
example
的上下文融合。用来。
关于haskell - 如何在 Haskell 中对空向量进行模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627318/
我是一名优秀的程序员,十分优秀!