作業:型鋳造私は定義された次のようなデータ構造を持つネストされたデータ構造で
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は、CVOタイプであると予想されるため、xとプラスを比較することはできません。
Couldn't match expected type ‘CVO’ with actual type ‘Operator’
比較を行うためにxをキャストしてオペレータのインスタンスにすることはどういうことですか?
ありがとうございました!意味あり。 – Alexander