我在Haskell中定义了以下类型:
data AE = Num Float
| Add AE AE
| Sub AE AE
| Mult AE AE
| Div AE AE
deriving(Eq, Read, Show)
Run Code Online (Sandbox Code Playgroud)
现在我该如何解构呢?具体来说,我将如何完成如下功能:
testFunct :: AE -> something
testFunct expression
| if type Num = do this
| if type Add = then do this
etc.
Run Code Online (Sandbox Code Playgroud)
另外,我如何从类型中获取数据?例如,如果我有Sub AE1 AE2怎么提取AE2?
您正在寻找的是"模式匹配".它让你解构类型,通过匹配给定的模式.在你的情况下,你可以说:
testFunct (Num x) = ...
testFunct (Add a b) = ...
testFunct (Sub a b) = ...
Run Code Online (Sandbox Code Playgroud)
你应该通过一本好的哈克尔书,比如LYAH或Haskell编程.
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |