Haskell 如何做左空?

Haskell 如何做左空?,haskell,category-theory,Haskell,Category Theory,我试图理解并拥有以下示例: let x :: Either Void Int; x = Left Void 代码不会被编译。如何使其运行?由于不可能创建Void类型的值,因此Void Int类型的每个值必须有一个右构造函数,或者在其左构造函数中有一个底部,这不是很有用。e、 例如,右1将是此类型的有效值。因为不可能创建Void类型的值,Void Int类型的每个值都必须有一个右构造函数,或者在其左构造函数中有一个底部,这不是很有用。e、 例如,右1将是此类型的有效值。Void类型的要点是它除了

我试图理解并拥有以下示例:

let x :: Either Void Int; x = Left Void

代码不会被编译。如何使其运行?

由于不可能创建Void类型的值,因此Void Int类型的每个值必须有一个右构造函数,或者在其左构造函数中有一个底部,这不是很有用。e、 例如,右1将是此类型的有效值。

因为不可能创建Void类型的值,Void Int类型的每个值都必须有一个右构造函数,或者在其左构造函数中有一个底部,这不是很有用。e、 例如,右1将是此类型的有效值。

Void类型的要点是它除了底部值(如异常和无限循环)之外没有其他居民。你可以写

但所有这些都违反了虚无的基本概念

Void Int类型的唯一合法值的形式是Right i,其中i::Int

事实上,您可以编写以下内容:

unEither :: Either Void a -> a
unEither (Left v) = absurd v
unEither (Right a) = a
Void类型的要点是,除了底值(如异常和无限循环)之外,它没有其他居民。你可以写

但所有这些都违反了虚无的基本概念

Void Int类型的唯一合法值的形式是Right i,其中i::Int

事实上,您可以编写以下内容:

unEither :: Either Void a -> a
unEither (Left v) = absurd v
unEither (Right a) = a

我不确定unEither函数是否真的对不了解Void的人有帮助。我不确定unEither函数是否真的对不了解Void的人有帮助。这是一个错误,因为您试图传递一个类型构造函数,其中需要值或数据构造函数。Void没有数据构造函数,这就是重点。无法创建Void类型的值。这是一个错误,因为您正在尝试传递一个类型构造函数,其中需要值或数据构造函数。Void没有数据构造函数,这就是重点。不能创建类型为Void的值。