我知道read
將字符串轉換爲整數。如何正確使用read
並附加到theList
?將整數讀入現有列表
theList = []
inputList = do
inputNum <- getLine
if null inputNum
then do putStrLn "Done"
else do theList <- (read inputNum)
inputList
問題陳述是theList <- (read inputNum)
我知道read
將字符串轉換爲整數。如何正確使用read
並附加到theList
?將整數讀入現有列表
theList = []
inputList = do
inputNum <- getLine
if null inputNum
then do putStrLn "Done"
else do theList <- (read inputNum)
inputList
問題陳述是theList <- (read inputNum)
Haskell中的值是不可變的,這意味着在聲明它們後不能修改它們。不要認爲Haskell具有變量,而是認爲它具有靜態值。
你可以在這種情況下,做的是建立一個IO動作,將返回所有值的列表鍵入:
inputList :: IO [Int]
inputList = do
inputNum <- getLine
if null inputNum
then do
putStrLn "Done"
return []
else do
rest <- inputList
let num = read inputNum
return $ num : rest
然後你可以使用它作爲
import Data.List
main :: IO()
main = do
putStrLn "Enter some numbers..."
nums <- inputList
putStrLn "The numbers you entered from smallest to largest are:"
let sortedNums = sort nums
mapM_ print sortedNums
不,你不能插入到現有列表。
在Haskell列表是不可變的,您可以使用:
和++
等函數從現有列表中創建一個新列表。
在Haskell,列表是不可變的。 – Sibi
太棒了。 – derp