2

私は自分のデータを次のように宣言します。

data Op = Plus | Minus | Mul | Div | Pow
        deriving (Eq, Show)

type Name = String

data Variable a = Variable Name (Expression a)
            deriving (Eq, Show)

data Declaration a = Declaration (Variable a)
            deriving (Eq, Show)  

{- The core symbolic manipulation type -}
data Expression a = 
          Number a           -- Simple number, such as 5
        | Expression Op (Expression a) (Expression a)
          deriving (Eq, Show)

GHCi で次のように入力して Declaration のインスタンスを作成したいのです Declaration Variable "var1" 2+3 が、うまくいきません。構文が間違っているだけだと思いますが、方法がわかりません。

また、いつインスタンスを使用する必要があるか知りたいですか? これは私が本から得たコードです:

instance Num a => Num (Expression a) where
    a + b = Expression Plus a b
    a - b = Expression Minus a b
    a * b = Expression Mul a b
    negate a = Expression Mul (Number (-1)) a
    abs a = error "abs is unimplemented"
    signum _ = error "signum is unimplemented"
    fromInteger i = Number (fromInteger i)
4

1 に答える 1

5
Declaration Variable "var1" 2+3

と同等です

(Declaration Variable "var1" 2) + 3

。つまり、Declaration3つの引数(、、)を使用して呼び出しをVariable試み"var1"2その結果を。に追加し3ます。これは意味がありません。

あなたが欲しい

Declaration (Variable "var1" (2+3))
于 2013-02-26T03:14:34.013 に答える