Uma*_*ooq 1 haskell types unwrap
如果您有数据类型
data Something = foo Integer
| bar Bool
Run Code Online (Sandbox Code Playgroud)
无论如何我有定义"getters"打开Something类型以获得Integer或Bool?现在它就像(foo Integer)和(bar Bool).我只想要Integer或Boolean值.
好吧,首先你有一个拼写错误:数据构造函数必须是大写的:
data Something = Foo Integer
| Bar Bool
Run Code Online (Sandbox Code Playgroud)
您要求的是模式匹配的确切含义.如果您有一个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"
Run Code Online (Sandbox Code Playgroud)
这就是你通常如何处理这个问题,因为如果用"错误的"构造函数构造它,那么这种数据类型的任何类型的getter都会抛出错误,这样你就可以处理这种情况了.你可以用类似的东西做一个安全的吸气剂Maybe,但很多时候这最终会涉及更多的样板.
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |