【问题标题】:Haskell List comprehension printing only even numbersHaskell 列表理解仅打印偶数
【发布时间】:2014-12-11 03:53:13
【问题描述】:
 let nums = [4,5,2,6,2,6,44,1213]

我必须使用列表推导来过滤由 nums 定义的列表,使其不包含任何偶数或任何大于 50 的数字

我不知道为什么我无法解决这个问题!

 [x | x <- [nums], x == even, x <= 50]

【问题讨论】:

    标签: list haskell


    【解决方案1】:

    试试[x | x &lt;- nums, even x, x &lt;= 50]nums 已经是一个列表,当你在它周围加上额外的方括号时,这意味着x 将遍历列表[nums] 中的元素,而不是列表nums。您也不应该将xeven 进行比较。 even 是一个函数,而不是一个值,它的类型为even :: Int -&gt; Bool,所以使用它作为even x。这就像说x == (&lt;= 50),这没有多大意义。

    【讨论】:

      【解决方案2】:

      过滤不大于50的偶数:

      [x | x <- nums, even x, x <= 50]
      

      过滤不大于50的奇数:

      [x | x <- nums, not $ even x, x <= 50]
      

      【讨论】:

      • odd 而不是not . even
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2015-08-03
      相关资源
      最近更新 更多