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])
Run Code Online (Sandbox Code Playgroud)
我希望能够写入1 2 3并将此值传递给函数.你能说/怎么做?
额外的问题
Haskell充满了魔力,所以我想知道是否有可能直接在函数中使用输入,如下所示:
main = subsequences(some input magic here)
Run Code Online (Sandbox Code Playgroud)
你可以写:
main = readLn >>= print . subsequences
Run Code Online (Sandbox Code Playgroud)
您需要确定要读取的类型,例如通过单态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]]
Run Code Online (Sandbox Code Playgroud)
(我键入了第一行和第二行 - 后面都是输入 - 第三行是结果.)
有关详细信息,您可以享受以下优秀资源之一: