[英]Haskell List comprehension printing only even numbers
let nums = [4,5,2,6,2,6,44,1213]
我必須使用列表推導來過濾由nums定義的列表,以便它不包含任何偶數或任何大於50的數字
我不知道為什么我不明白這一點!
[x | x <- [nums], x == even, x <= 50]
要過濾不大於50的偶數:
[x | x <- nums, even x, x <= 50]
要過濾不大於50的奇數:
[x | x <- nums, not $ even x, x <= 50]
試試[x | x <- nums, even x, x <= 50]
[x | x <- nums, even x, x <= 50]
。 nums
已經是一個列表,當你在它周圍添加額外的方括號時,它意味着x
將迭代列表[nums]
的元素,而不是列表nums
。 你也不應該將x
與even
進行比較。 even
是一個函數,而不是一個值,它有類型even :: Int -> Bool
,所以使用它作為even x
。 這就像說x == (<= 50)
,這沒有多大意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.