【发布时间】:2021-10-27 21:29:45
【问题描述】:
你好,我有以下几种:
type AlphaOne = Int
type AlphaTwo = String
type CharlieOne = Int
type CharlieTwo = String
type CharlieThree = Bool
data Sign = Alpha (AlphaOne, AlphaTwo) |
Bravo |
Charlie CharlieOne CharlieTwo CharlieThree |
Delta
data Color = Red | Blue | Green
data Code = C Sign Color
及以下功能:
foo :: Code -> Bool
foo (C sign _)
| {-1-} sign == Charlie {-1-} = {-2-} do coo "with CharlieTwo of Charlie" {-2-}
| ...
coo :: Charlie -> Bool
coo (Charlie _ charlieTwo _)
| ...
我在代码中用 {-1-} 和 {-2-} 标记了我有问题的行。在 {-1-} 我收到错误“无法将预期类型 'Sign' 与实际类型 'CharlieOne -> CharlieTwo -> CharlieThree -> Sign' 匹配”。如何在这行代码中检查 sign 是否等于 Charlie,和 {-2-} 如何在这个函数中访问 CharlieTwo 的 CharlieTwo 以调用另一个以 CharlieTwo 作为参数的函数?
请原谅我是haskell的新手,我可能在这里做了一些愚蠢的事情,在此先感谢您的回答。
【问题讨论】:
标签: haskell types enums constructor