通用数据函数以下为:将熟悉的函数提升为通用数据类型

[数据,泛型,图书馆,麻省理工学院,序列化][建议标签]
版本[RSS(RSS)] 0.1.0,0.1.1,0.2.0,0.3.0,0.3.1,0.4.1,0.5.0,0.5.1,0.6.0
更改日志 CHANGELOG.md公司
依赖关系 基础(>=4.16 && <5),逆变的(>=1.5.5 && <1.6)[详细信息]
许可证 麻省理工学院
作者 本·乌节(Ben Orchard)
维护人员 本·乌节(Ben Orchard)<thefirstmuffinman@gmail.com>
类别 数据,泛型
主页 https://github.com/raehik/generic-data-functions#自述文件
Bug跟踪器 https://github.com/raehik/generic-data-functions/issues
源回购 头部:git克隆https://github.com/raehik/generic-data-functions网站
已上传 通过瑞希克2024-06-15T17:35:54 Z
分配 尼克斯(NixOS):0.5.1,堆叠:0.6.0
反向依赖关系 1直接,1间接[详细信息]
下载 总计231人(过去30天内有54人)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 用户上传的文档
生成状态未知[还没有报告]

通用数据功能自述文件-0.6.0

[返回包描述]

通用数据函数

近似于熟悉的术语级函数的泛型函数。泛型处理产品表示的总和,并为基本情况设置“孔”,必须由用户通过类型类填充。也许你也会想到这些是“可重用”或“通用”泛型。

最适用于简单的解析和打印/序列化/减少任务,其中对于给定的数据类型,唯一需要做的“工作”是机械字段排序。如果您需要更多的逻辑(并且不能将其放在types/newtypes中)将无法使用此库。

重点是类型安全和性能。值得注意的是,对于和类型泛型,我们允许在类型级别上解析构造函数名称(通过有症状的). 对于您为了实现您自己的高性能和类型处理,我们提供通用。数据。FOnCstr公司.

理论基础

有许多相互竞争的解析和序列化Haskell库。大多数都有一个用于枚举允许类型的类型类,以及一些简单的泛型使用该类型类作为基本案例。除了基本情况,每个人正在编写大致相同的通用代码。

在编写自己的库时,我意识到如果其他开发人员想要使用我的序列化程序,他们可能需要为base编写自己的类型类案例(由于某些特定的库设计)。唉,这意味着他们必须复制我的泛型并交换类型类。非常愚蠢。但事实证明我的泛型在其他方面非常通用,所以我将它们拆分到这个库中。现在,您可以通过填充一些洞来交换类型类。

设计说明

Sum类型是通过在Sum标记前面加上前缀来处理的

除非另有规定,否则这就是我们消除构造函数歧义的方法。如何从构造函数解析sum标记取决于用户(可以在如果愿意,可以输入level)。

功能

foldMap(折叠地图)(左->右)

foldMap::(可折叠t,单体m)=>(a->m)->ta->m

用户提供a->米字典通过一个特殊的类型类实例。构造函数字段从左到右进行映射和组合。总和表示法通过用户提供的映射挂起构造函数来处理字符串->m第一。

适用于:

  • 只将字段连接在一起的简单二进制序列化程序
  • 减少为数值

导线(L->R)

遍历::(可遍历t,适用f)=>(a->f b)->t a->f(t b)

用户提供财务报表字典通过一个特殊的类型类实例。构造函数字段操作从左到右运行。总和表示是通过首先运行构造函数操作来处理的(因此需要莫纳德f).

适用于:

  • 可以解析泛型的简单二进制解析器foldMap(折叠地图)输出

对立面

我不知道这到底是什么。就像是对映?

笔记

孤立实例

此库设计用于使用现有库和类型类。因此,你很可能会遇到孤儿。实例,就是这样生活,吉姆。

时髦的泛型

我在这个图书馆里做了一些奇怪的设计选择。这里有一些基本原理。

处理类型和术语级别的不良

我不喜欢在配置不良的泛型用法上默默地出错,例如询问对于空数据类型的泛型函数。最初是我做的类型错误,就是这样。但这意味着我会写同样的实例一次又一次。这个需求隐藏在一个类型类实现中。真的,如果我能把这些需求直接放在具有它们的函数。

我做到了。现在,毫无疑问表示错误例如,您尝试使用sum类型上的非sum泛型,我们运行时出错。然而,有一个单独的制作层关于类型的泛型表示的断言水平,强烈建议使用。

注意,如果您想在泛型函数上编写包装器来填充某些信息,你的工作变得更难看了。索兹。任何类型的内容安全我的甜心。

许可证

根据麻省理工学院许可证提供。请参见许可证用于许可证文本。