Это потому, что вы пытаетесь прочитать что-то с неправильным типом.
Вы говорите, что Line
это String
ака. [Char]
. Однако вводимый вами текст имеет формат ["12", "13"]
, который выглядит так, как будто он должен иметь тип [Line]
, он же. [String]
или [[Char]]
.
Вам нужно объяснить, что такое Line
на самом деле . Если вы хотите, чтобы Line
была строкой, тогда зачем вы вводите списки строк в терминале? Что-то не так с вашей логикой в этом случае.
Если вам нужен метод для ввода квадратных матриц, вы можете вместо этого указать type Line = [Int]
и использовать один из следующих форматов:
-- What you type at the terminal:
1 -2 3
4 5 6
6 7 8
-- How to read it in your program:
line <- (map read . words) `fmap` getLine
-- What you type at the terminal:
[1, -2, 3]
[4, 5, 6]
[6, 7, 8]
-- How to read it in your program:
line <- readLn
Если вы действительно хотите ввести строки, чтобы type Line = [Char]
и каждый номер в списке ввода становился символом Unicode, что означает, что при вводе [97, 98, 99]
в терминале вы получите строку "abc"
-- What you type at the terminal:
[97, 98, 99]
[100, 101, 102]
[103, 104, 105]
-- How to read it in your program:
line <- (map toEnum) `fmap` readLn