String 如何使用'reads'将字符串转换为元组?
在GHCi中,我尝试将字符串读取为元组String 如何使用'reads'将字符串转换为元组?,string,haskell,String,Haskell,在GHCi中,我尝试将字符串读取为元组 >reads "(1,2)" :: [(Integer),(Integer)] 哪个输出错误: 无法将类型[Char]与整数匹配 预期类型:[(整数,整数)] 实际类型:[(整数,字符串)] 我在网上找到的一个例子是: >reads "(34, True),abc" :: [((Integer,Bool),String)] [((34,True),",abc")] 那么,为什么我尝试创建的字符串不起作用呢?您必须考虑读取总是产生的尾部字符串
>reads "(1,2)" :: [(Integer),(Integer)]
哪个输出错误:
无法将类型[Char]与整数匹配预期类型:[(整数,整数)]
实际类型:[(整数,字符串)] 我在网上找到的一个例子是:
>reads "(34, True),abc" :: [((Integer,Bool),String)]
[((34,True),",abc")]
那么,为什么我尝试创建的字符串不起作用呢?您必须考虑
读取总是产生的尾部字符串
> reads "(1,2)" :: [((Integer,Integer),String)]
[((1,2),"")]
如果您只需要一对,并且绝对确定字符串解析正确,请使用read
> read "(1,2)" :: (Integer,Integer)
(1,2)
请注意,read
(与reads
)不同)将使程序在无效字符串上崩溃。如果无法假定字符串解析正确,但仍然需要一对,请改用formText.Read