Haskell IO系统对我来说非常难以理解所以我有疑问:如何从标准输入读取到列表?我知道有函数getLine :: IO String和交互。但我不知道如何将输入转换为列表,所以我可以在这三个函数中使用它:
powerset [] = [[]]
powerset (x:xs) = xss ++ map (x:) xss
where xss = powerset xs
main = print $ powerset([1,2])
import Control.Monad(filterM)
p = filterM(const[True,False])
main = p[1,2]
main = subsequences([1,2])
我希望能够写入1 2 3并将此值传递给该函数。你能说/怎么做?
额外问题
Haskell充满魔力所以我想知道是否可以直接在函数中使用输入:
main = subsequences(some input magic here)
答案 0 :(得分:5)
你可以写:
main = readLn >>= print . subsequences
您需要确定要读取的类型,例如,使用单态subsequences
或注释readLn
。在ghci:
Data.List> (readLn :: IO [Integer]) >>= print . subsequences
[1,2,3]
[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
(我输入了第一行和第二行 - 后面都是输入 - 第三行是结果。)
有关详细信息,您可以享受以下优秀资源之一: