如果您有数据类型
data Something = foo Integer
| bar Bool
无论如何,我是否定义了" getters",这些" getters"剥离了某些类型以获取整数或bool?现在就像(foo Integer)和(bar bool)。我只想要整数或布尔值。
好吧,首先您有一个错字:数据构造函数必须是大写:
data Something = Foo Integer
| Bar Bool
您的要求是哪种模式匹配的目的。如果您的Something
值称为s
:
case s of
Foo f -> ... -- f is of type Integer in this "block"
Bar b -> ... -- b is of type Bool in this "block"
这通常是您解决此问题的方式,因为如果使用"错误"的构造函数构建此类数据类型,任何类型的数据类型都会丢弃错误,这允许您处理该情况。您 can 对Maybe
之类的东西做一个安全的获取器,但是很多时候,这最终都会涉及更多的样板。