2011-06-18 472 views
0

[「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]] 我讀過文件看起來像Haskell string to list

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和read來轉換字符串,但它沒有工作。 sry for英語

+0

你真的需要對你所嘗試過的東西更具體。 「用地圖和閱讀」並沒有告訴我們那麼多。 – luqui

回答

2

直接使用mapread的問題是,您的列表元素並不都具有相同的類型。第一個元素是(或者更好:應該轉換爲)Int,第二個元素是空列表,第三個元素是`[[Int]]

要將列表的第一個元素轉換爲Int,您可以說類似read $ head xs :: Int,其中xs是您的字符串列表。

第二個元素不能通過讀直接轉換,因爲空字符串將導致異常(Prelude.read:no parse)。

要轉換第三個元素,它是整數列表的列表,您可以簡單地說一些類似於read $ xs !! 2 :: [[Int]]的內容。

這不安全或優雅,但如果你的輸入總是有這個結構它應該工作。

+0

它不用IO字符串工作,但字符串是。 Atm我需要從Io轉換爲字符串 – XYZ