我試圖創建一個允許用戶輸入字符串列表的函數。該函數獲取長度並允許用戶輸入長度爲1的線。然後檢查每一行以確保它與原始行的長度相同。但是,我遇到了一些問題,並且找不到解決方案。例如,如果我輸入[「12」,「13」],然後輸入[「121」],那麼輸入的行數就會大於count-1行, ,「13」]給出了錯誤,儘管它們的長度相同!Haskell ReplicateM IO
read :: IO [Line]
read = do
line <- getLine
let count = length line
lines <- replicateM (count-1) $ do
line <- getLine
if length line /= count
then fail "too long or too short"
else return line
return $ line : lines
行是字符串類型。
readLn給出了一個分析錯誤。
您的代碼對我來說工作正常(除了if-then-else塊的縮進問題)。 – 2012-03-12 11:24:20
作爲澄清,第一行輸入意味着是一個數字,告訴你有多少其他線?或者這個數字實際上是基於你寫在這裏的第一行的長度(字符數)? – huon 2012-03-12 11:25:46
字符串'[「12」,「13」]和'[「121」,「13」]'不具有相同的長度。後者比第一個字符多一個字符。你想閱讀字符串或字符串列表嗎? – danr 2012-03-12 11:29:07