我是 Haskell 的新手,我正在嘗試獲取由函式創建的串列的長度。我收到此錯誤,但我不明白這意味著什么:
* Couldn't match expected type `t1 -> a0' with actual type `Int'
* The function `length' is applied to two value arguments,
but its type `(Int -> [String]) -> Int' has only one
In the first argument of `print', namely `(length strings 1)'
In a stmt of a 'do' block: print (length strings 1)
|
9 | print(length strings 1)
| ^^
使用 print (strings 1) 呼叫該函式是有效的,所以我不明白為什么我無法獲得它的長度。
strings :: Int -> [ String ]
strings 0 = [""]
strings n = concat ( map (\x -> map (\ tail -> x: tail ) tails ) ['a'.. 'z'])
where tails = strings (n -1)
main :: Int main = do
print(length strings 1)
uj5u.com熱心網友回復:
length strings 1意味著您將函式length應用于引數strings和1。用其他語言撰寫length(strings, 1)。But1應該是 to 的引數strings,因此您應該改為撰寫以下內容之一:
print (length (strings 1))
print (length $ strings 1)
print $ length $ strings 1
print . length $ strings 1 -- recommended version
(print . length . strings) 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417809.html
標籤:
下一篇:如何將字串轉換為元組
