我正在努力理解 https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Void.html并有以下示例:
let x :: Either Void Int; x = Left Void
代码没有被编译。如何让它运行起来?
最佳答案
点Void
type 是它没有居民(除了“底部”值,如异常和无限循环)。你可以写
x, y, z :: Either Void Int
x = undefined
y = Left $ error "Whoops"
z = Left $ let q = q in q
但所有这些都违反了Void
的基本概念.
Either Void Int
类型的唯一“合法”值形式为 Right i
, 其中i :: Int
.
确实,你可以这样写:
unEither :: Either Void a -> a
unEither (Left v) = absurd v
unEither (Right a) = a
关于haskell - 如何做左虚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62141593/