我的表演课去了哪里

J F*_*sch 2 haskell

我有以下定义

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)
Run Code Online (Sandbox Code Playgroud)

当我尝试打印例如cid我得到错误

No instance for (Show (Tuple -> AST)) arising from a use of `print'
Run Code Online (Sandbox Code Playgroud)

这让我感到惊讶,因为AST和Tuple都是秀类的成员.如何使cid,argumentList和queryList可打印?

Art*_*yom 5

cid只是一个用于访问元组"cid"字段的函数.打印它是不可能的,就像它不可能打印一样fst.但是,这是正确的:

t :: Tuple
t = ...

main = print (cid t)
Run Code Online (Sandbox Code Playgroud)