我在 Haskell 中定义了以下类型:
data AE = Num Float
| Add AE AE
| Sub AE AE
| Mult AE AE
| Div AE AE
deriving(Eq, Read, Show)
现在我该如何解构它?具体来说,我将如何完成如下功能:
testFunct :: AE -> something
testFunct expression
| if type Num = do this
| if type Add = then do this
etc.
另外,我如何从类型中获取数据?例如,如果我有 Sub AE1 AE2
我将如何提取 AE2
?
最佳答案
您要查找的内容称为“模式匹配”。它让您通过将类型与给定模式进行匹配来解构类型。在你的情况下,你可以说:
testFunct (Num x) = ...
testFunct (Add a b) = ...
testFunct (Sub a b) = ...
您应该阅读一本好的 Haskell 书籍,例如 LYAH或在 Haskell 中编程。
关于haskell - 在 Haskell 中解构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616724/