0
我有以下的數據結構來定義:型鑄造與嵌套數據結構工作時
data Operator = Plus | Times | Minus deriving (Eq,Show)
data Variable = A | B | C deriving (Eq,Show)
newtype Const = D Numeral deriving (Eq,Show)
data CVO = Const | Variable | Operator deriving (Eq,Show)
type Expr = [CVO]
我已經定義下面的函數:
eval2 :: Expr -> Integer
eval2 x = helper x
我想檢查的一個元素CVO列表(Expr)可以是Const,Variable或Operator的實例(這是可行的),我希望爲特定類型的實例(例如Plus,Times,Minus for Operator)實現不同的代碼。
helper :: Expr -> Integer
helper [] = 2
helper (x:xs)
| x == Operator && x == Plus = 1
我不能將x與Plus進行比較,因爲它期望x是類型CVO。
Couldn't match expected type ‘CVO’ with actual type ‘Operator’
是它在某種程度上可以投X是運營商的一個實例,以做比較呢?
謝謝!這是有道理的。 – Alexander