haskell - 中缀数据构造操作符说明
问题描述
我正在阅读一篇名为 Parse 的有趣博客文章,不要验证,其中包括:
为此,我们需要一个表示非空列表的类型。幸运的是,Data.List.NonEmpty 中现有的 NonEmpty 类型正是如此。它有以下定义:
data NonEmpty a = a :| [a]
请注意,NonEmpty a 实际上只是一个 a 和一个普通的、可能为空的 [a] 的元组。这通过将列表的第一个元素与列表的尾部分开存储来方便地建模非空列表:即使 [a] 组件是 [],a 组件也必须始终存在。
我唯一能找到的地方:|
是对这个 SO question的评论,这意味着我需要对该问题/讨论有一些了解并解析格式。
有没有这方面的文档(我的搜索没有结果),是否有简单的使用说明?我不明白,因为我只是有时用 Haskell 将脚趾浸入水中。
任何帮助或见解将不胜感激。
解决方案
类型的全称是Data.List.NonEmpty
.
你可以在这里找到详细信息
有站点https://hoogle.haskell.org/,这是在 haskell 库中搜索函数、类型等的良好起点。
编辑:如果你对什么:|
意思感到困惑,那么这里有一些解释。
在 haskell 中,您可以定义自定义运算符,如.
, $
, <*>
. 同样,您可以使用自定义“名称”创建中缀构造函数。
所以你可以自己定义一个:
data MyType = Integer :++ Integer
并将它们用作
someVal :: MyType
someVal = 1 :++ 2
或者
foo :: MyType -> Integer
foo (a :++ b) = a
请注意,它必须以:
(感谢@Ben)开头
推荐阅读
- javascript - 如何用 Javascript 替换部分文本
- dart - 如何在颤振中提供的照片中使用带有箭头的仪表构建小部件
- android - 如何在 Android Widget 中使用自定义字体?
- common-lisp - 如何通过临时文件将数据传输到其他进程
- javascript - 将 Nodemailer 与 Google OAuth 一起使用
- ruby-on-rails - 无法从主机访问 docker 容器
- html - ::after 中与 div 中相同的线性渐变背景
- outlook - 如何自动执行 Outlook api 调用以读取邮件
- video - 使用 FFMPEG 选择视频过滤器和输入 -ss
- android - src 和背景剪辑图像内容 Android