Tôi đang cố gắng đọc n
dòng nội dung vào Danh sách chuỗi. Tôi đã thử một số biến thể của mã bên dưới, nhưng không có gì hiệu quả.Đọc n dòng vào [Chuỗi]
main = do
input <- getLine
inputs <- mapM getLine [1..read input]
print $ length input
này ném các lỗi sau:
Couldn't match expected type `a0 -> IO b0'
with actual type `IO String'
In the first argument of `mapM', namely `getLine'
In a stmt of a 'do' block: inputs <- mapM getLine [1 .. read input]
In the expression:
do { input <- getLine;
inputs <- mapM getLine [1 .. read input];
print $ length input }
Và
main = do
input <- getLine
let inputs = map getLine [1..read input]
print $ length input
ném
Couldn't match expected type `a0 -> b0'
with actual type `IO String'
In the first argument of `map', namely `getLine'
In the expression: map getLine [1 .. read input]
In an equation for `inputs': inputs = map getLine [1 .. read input]
Làm thế nào tôi có thể làm điều này?
Bằng cách này, 'đầu vào <- mapM (const getLine) [1 .. đọc đầu vào]' thực hiện chính xác những gì bạn cần. Vấn đề là bạn cố gắng ánh xạ 'getLine' qua các số' [1 .. n] 'nhưng' getLine' không phải là một hàm. Bằng cách sử dụng 'const', bạn biến nó thành một hàm chỉ bỏ qua đối số đầu tiên của nó. – Vitus
@Vitus xứng đáng là một câu trả lời khác, tôi sẽ +1 nó. – vikingsteve