haskell - 如何在 Haskell 中列表的列表理解中仅获得偶数
问题描述
我正在尝试获取起始和长度并返回一个列表列表,该列表逐渐将偶数起始整数增加 2
例如:
evenIncrease 6 3
应该返回:
[[6],[6,8],[6,8,10]]
我是 Haskell 的新手,到目前为止,我的尝试如下所示:
evenIncrease n l = [[n..i] | i <- [n..n+(l*2)-2], even i]
但是当我尝试我的例子时evenIncrease 6 3
,我得到:
[[6],[6,7,8],[6,7,8,9,10]]
这几乎是我正在寻找的,但我不明白为什么当我使用警卫“偶数 i”时内部列表中仍然有奇数
有任何想法吗?
解决方案
您正确地只生成了 even endpoints,但[n..i]
仍以 1 递增,因此即使两个端点都是偶数,您仍然会得到 eg [6..8] = [6,7,8]
。试试[n,n+2..i]
。
推荐阅读
- git - 我应该如何正确压缩以前在 master 上推送的提交?
- angular - 使用 Angular,我可以根据我迭代的每个对象的值在 '*ngFor' 中设置 CSS 类吗?
- python-3.x - 如何将 Google Colab 连接到 Tableau?
- docker - “欢迎来到 Nginx!” - Docker-Compose,使用 uWSGI、Flask、nginx
- spring-cloud-stream - KafkaBindingRebalanceListener Bean 未使用 Multi-binder 自动装配
- ansible - Ansible Tower 调查规范
- python - 从环境变量复制文本并粘贴到 Selenium (Python)
- java - 如何在java中直观地比较两个字符串?
- security - 请提供有关安全 WAN/LAN/VPN 的建议 - 包括诊断
- python-3.x - 包含 if 条件的 while 循环向量化