Haskell 我的表演课去哪了
我有以下定义Haskell 我的表演课去哪了,haskell,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, argu
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和Tuple都是show类的成员。如何使cid、argumentList和queryList可打印?您不能打印
cid
您可以打印cid tuple
,其中tuple
是tuple
类型的值
您的错误消息
No instance for (Show (Tuple -> AST)) arising from a use of `print'
表示您正试图打印类型为
Tuple->AST
的值。无法打印函数。cid
只是一个用于访问元组“cid”字段的函数。无法打印它,就像无法打印fst
一样。但是,这是正确的:
t :: Tuple
t = ...
main = print (cid t)
有没有办法从argumentList中提取出所有数字成员?你的意思是
[i|Number i@DanielFischer the first.Thx.要了解这一点,我必须查看哪些文档?@JFritsch如果你是指学习列表理解,LYAH中有一个,可以在Haskell报告中找到。