1

整形式の式を表示するショー インスタンスを作成しようとしていますが、構文全体を模倣した後も、以下と同じエラーに直面しています。

Hugs> :load "C:\\Users\\Devil\\Desktop\\CASESTUDY1.hs"
ERROR file:.\CASESTUDY1.hs:15 - Ambiguous variable occurrence "show"
*** Could refer to: CASESTUDY1.show Hugs.Prelude.show 

以下は、私の .hs ファイルの内容で、 data type と関連する show instance が含まれています。

module CASESTUDY1

where 

data Wff =   VAR String 
            | NEG Wff
            | AND Wff Wff 
            | OR Wff Wff
            | IMPL Wff Wff

instance Show Wff where
show (VAR x) = x
show (NEG x) = "~" ++ show(x)
show (AND x y) = "(" ++ show(x) ++ "^" ++ show(y) ++ ")"
show (OR x y) = "(" ++ show(x) ++ "v" ++ show(y) ++ ")"
show (IMPL x y) = "(" ++ show(x) ++ "-->" ++ show(y) ++ ")"
4

1 に答える 1

4

Haskell では空白が重要です。showのインスタンスに属する をインデントする必要がありますShow

instance Show Wff where
   show (VAR x)     = show x
   show (NEG x)     = "~" ++ show x
   show (AND x y)   = "(" ++ show x ++ "^" ++ show y ++ ")"
   show (OR x y)    = "(" ++ show x ++ "v" ++ show y ++ ")"
   show (IMPL x y)  = "(" ++ show x ++ "-->" ++ show y ++ ")"

また、表示するパラメータを渡すために括弧は必要ありません。show(x)する必要がありますshow x


Haskell を学習している場合は、次の優れたリソースをお勧めします。

于 2013-02-13T08:13:07.513 に答える