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