簡體   English   中英

Haskell powerset函數-如何避免無法將期望的類型“ IO t0”與實際類型“ [[Integer]]”匹配

[英]Haskell powerset function - How to avoid Couldn't match expected type `IO t0' with actual type `[[Integer]]'

我有一個要在此處運行的Powerset實現: http ://rextester.com/runco​​de。 我仍然遇到此錯誤,無法找出正確的方法。 我正在嘗試盡可能多地閱讀有關Haskell中的IO的信息,但這對我來說真的很難。

import Control.Monad (filterM)
powerset = filterM (const [True, False])

main =  powerset[1,2]

問題是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM