我有以下定义
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可打印?
cid只是一个用于访问元组"cid"字段的函数.打印它是不可能的,就像它不可能打印一样fst.但是,这是正确的:
t :: Tuple
t = ...
main = print (cid t)
Run Code Online (Sandbox Code Playgroud)