首页 > 解决方案 > 中缀数据构造操作符说明

问题描述

我正在阅读一篇名为 Parse 的有趣博客文章,不要验证,其中包括:

为此,我们需要一个表示非空列表的类型。幸运的是,Data.List.NonEmpty 中现有的 NonEmpty 类型正是如此。它有以下定义:

data NonEmpty a = a :| [a]

请注意,NonEmpty a 实际上只是一个 a 和一个普通的、可能为空的 [a] 的元组。这通过将列表的第一个元素与列表的尾部分开存储来方便地建模非空列表:即使 [a] 组件是 [],a 组件也必须始终存在。

我唯一能找到的地方:|是对这个 SO question的评论,这意味着我需要对该问题/讨论有一些了解并解析格式。

有没有这方面的文档(我的搜索没有结果),是否有简单的使用说明?我不明白,因为我只是有时用 Haskell 将脚趾浸入水中。

任何帮助或见解将不胜感激。

标签: 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)开头


推荐阅读