2

私は次の定義を持っています

data AST
    = Number Integer
    | Identifier String
    | String String
    -- | Operation BinOp AST AST
    | Query String
    deriving (Show, Eq)

data Tuple = Tuple {cmd :: String, 
                    cid :: AST,
                    argumentList :: [AST],
                    queryList :: [AST]} deriving (Show, Eq)

たとえばcidを印刷しようとすると、エラーが発生します

No instance for (Show (Tuple -> AST)) arising from a use of `print'

ASTとタプルの両方がショークラスのメンバーであるため、それは私を驚かせます。cid、argumentList、queryListを印刷可能にするにはどうすればよいですか?

4

2 に答える 2

5

cidタプルの「cid」フィールドにアクセスするために使用される関数です。印刷できないのと同じように、印刷することもできませんfst。ただし、これは正しいでしょう。

t :: Tuple
t = ...

main = print (cid t)
于 2012-12-18T22:39:27.210 に答える
4

印刷できませんcid

を印刷できますcid tuple。ここtupleで、はタイプの値ですTuple

エラーメッセージ

No instance for (Show (Tuple -> AST)) arising from a use of `print'

タイプの値を出力しようとしていることを示しますTuple -> AST。関数は印刷できません。

于 2012-12-18T22:39:06.943 に答える