#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]]