簡體   English   中英

當list參數有多個元素時,Haskell會出錯

[英]Haskell get error when list parameter has more than one element

我剛進入Haskell,我正在嘗試創建一個函數,給定一個數字列表將返回其中所有負數的列表。 所以我這樣做了

negative:: [Int] -> [Int]

negative [x] = [z | z <- [x], x < 0]

當我嘗試使用列表中只有一個元素時它可以正常工作

負[-1]返回[-1]

否定[1]返回[]

但是,當我添加更多數字,例如負[0,-1]時,我收到以下錯誤:

程序錯誤:模式匹配失敗:否定[Num_fromInt instNum_v30 0,Num_fromInt instNum_v30 -1]

我嘗試用空格鍵入數字,但沒有空格,但結果是一樣的。 我猜我的代碼有問題,但是因為我還在習慣Haskell,所以我很難找到它。 任何幫助將不勝感激。

只需更換[x]與式的左手側x ,並改變表達x < 0z < 0請記住,我們篩選出單個元件,而不是容器本身)。

我將如何做到這一點:

negative :: [Int] -> [Int]
negative x = [z | z <- x, z < 0]

(可選)以下是使用高階函數解決相同問題的方法:

negative :: [Int] -> [Int]
negative xs = filter (< 0) xs

(如果您不知道高階函數是什么,請忽略前面的示例。隨着時間的推移,您將了解它們)

暫無
暫無

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

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