gpt4 book ai didi

haskell - 定义 Data.Void(Hackage 上的包 "void")的不必要类型杂耍?

转载 作者:行者123 更新时间:2023-12-04 00:39:48 24 4
gpt4 key购买 nike

void包声称提供了一种不适合居住的类型,称为 Void ,其定义如下 -

newtype Void = Void Void

这个定义比使用更简单的定义更好吗?说 -
data Void

如果我的理解是正确的,这两种数据类型都只包含底部值。但是后者更容易理解。

编辑 :好的,所以我理解丹尼尔在下面的回答。然而,我想到了另一种可能更简单的方法来做到这一点,同时保持 Haskell98 兼容。我们可以使用 Abstract 数据类型并且不向用户公开构造函数。
module Data.Void (Void) where
data Void = Void

现在只有 Data.Void 模块中的代码可以构造一个 Void,但是因为我们知道它不能,所以 Void 数据类型实际上是无人居住的。

那会起作用还是我在这里遗漏了什么?

最佳答案

来自 Hackage 上 void 包的描述:“A Haskell 98 逻辑上无人居住的数据类型”(我的重点)。声明 Void就像 data Void将需要 Haskell 2010 或“EmptyDataDecls”语言扩展,因此不会是“Haskell 98”。

编辑

Here is a page在 Haskell Wiki 上准确描述了这种情况。

关于haskell - 定义 Data.Void(Hackage 上的包 "void")的不必要类型杂耍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9261490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com