要列出的Haskell字符串

时间:2011-06-18 14:27:22

标签: haskell

[ “6”, “”,“[[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16, 17,18],[19,20,21,22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36]]“] 我必须从这6和[[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18], [19,20,21,22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36]] 我从文件中读取它看起来

6。 [[1,2,3,4,5,6],[7,8,9,10,11,12],[第13,14,15,16,17,18条],[19,20,21, 22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36]。

我尝试使用map并读取转换字符串,但它没有工作。 sry for english

1 个答案:

答案 0 :(得分:2)

直接使用mapread的问题是,您的列表元素并非都具有相同的类型。第一个元素是(或更好:应该转换为)Int,第二个元素是空列表,第三个元素是`[[Int]]

要将列表的第一个元素转换为Int,您可以说read $ head xs :: Int之类的内容,其中xs是您的字符串列表。

第二个元素不能通过read直接转换,因为空字符串将导致异常(Prelude.read:no parse)。

要转换第三个元素(即整数列表列表),您可以简单地说出read $ xs !! 2 :: [[Int]]之类的内容。

这不安全或优雅,但如果您的输入始终具有此结构,则应该有效。