Преобразовать список строк в Int

#haskell

#haskell

Вопрос:

Я считываю позиции из файла и получаю это:

 ["[6,5,3]","[4,1,4]","[3,7,6]"]
  

и мне нужен список Int, подобный:

 [[6,5,3],[4,1,4,],[3,7,6]]
  

это исходный код:

 import System.IO
import qualified Data.Text    as Text
import qualified Data.Text.IO as Text

main = do
    ls <- fmap Text.lines (Text.readFile "file.txt")
  

Комментарии:

1. Это легко сделать: map read будет создан, например, [[6,5,4]] из ["[6,5,4]"] , при условии, что ввод текста понятен.

2. read "[3,7,6]" :: [Int] выдаст [3,7,6] .

3. Обратите внимание, что для использования read вам нужно будет сначала использовать Text.unpack или использовать String функции для чтения файла вместо Text них.

4. @Elmex80s работает ли это с символом char? например, прочитать «[A, B, C]» :: [Char]

5. read "['A','B','C']" :: [Char] выдаст "ABC" .

Ответ №1:

Просто используйте read :

 l = ["[6,5,3]","[4,1,4]","[3,7,6]"]
[read x :: [Int] | x <- l]
=> [[6,5,3],[4,1,4],[3,7,6]]
  

Если строка ["[6,5,3]","[4,1,4]","[3,7,6]"] является полной строкой, вы можете просто прочитать ее всю:

read line :: [[Int]]