簡體   English   中英

Haskell對函數調用感到沮喪

[英]Haskell frustration with function calls

學習Haskell正在殺了我。 如果我要編寫一個函數,它接受一個可訂單元素數組,並輸出相同的東西,我該怎么做?

我嘗試:

main = testfn [[1],[2]]

testfn :: (Ord a) => [[a]] -> [[a]]
testfn x = x

但我得到的信息是:

無法將預期類型'IO t0'與實際類型'[[a0]]'匹配在表達式中:main檢查函數'main'的類型時

你的問題是main必須是IO a形式的IO a (你可以在錯誤中看到這一點 - GHC期望main的推斷類型[[a0]]IO t0匹配)。 這里main有類型[[Int]] 您只需打印結果即可輕松解決此問題:

main = print (testfn [[1],[2]])

函數main必須具有類型IO a 您將main定義為testfn [..] ,其類型為Ord a, Num a => [[a]]

你想要該程序做什么? 與您訂購的已知解決方案相比較?

main = print (knownSolution == testfn [[1],[2]])

或者打印結果?

main = print $ testfn [[1],[2]]

暫無
暫無

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

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