我有一个我试图在这里运行的powerset实现:http://rextester.com/runcode .我仍然遇到这个错误,无法弄清楚如何使它正确.我试图尽可能多地阅读有关哈希尔的IO,但这对我来说太难了.
import Control.Monad (filterM)
powerset = filterM (const [True, False])
main = powerset[1,2]
Run Code Online (Sandbox Code Playgroud)
问题是 main = ...
main应该有类型,IO ()但你给一个类型的表达式[[Integer]](编译器告诉你) - 所以我想你想把结果输出到控制台我想你正在寻找print
这对我有用:
import Control.Monad (filterM)
powerset = filterM (const [True, False])
main =
print $ powerset[1,2]
Run Code Online (Sandbox Code Playgroud)
说过这个,你应该添加顶级签名:
module Main where
import Control.Monad (filterM)
powerset :: [a] -> [[a]]
powerset = filterM (const [True, False])
main :: IO ()
main =
print $ (powerset [1,2] :: [[Int]])
Run Code Online (Sandbox Code Playgroud)
从stdin获取输入的常用方法是getLine :: IO String