haskell - 如何使我的 Haskell 函数尽可能短?
问题描述
该season
函数使用代数函数,但我觉得代码是重复的。
如何让它尽可能短?
data Month = Jan | Feb | Mar | Apr | May | June | July | Aug | Sept| Oct | Nov | Dec
deriving (Eq,Ord,Show,Read)
data Seasons = Spring | Summer | Autumn | Winter
deriving (Eq,Ord,Show,Read)
season :: Month -> Seasons
season Jan = Winter
season Feb = Winter
season Mar = Spring
season Apr = Spring
season May = Spring
season June = Summer
season July = Summer
season Aug = Summer
season Sept = Autumn
season Oct = Autumn
season Nov = Autumn
season Dec = Winter
解决方案
您可以使用警卫,因为您创建了Month
一个实例Ord
:
season :: Month -> Seasons
season m | m <= Feb = Winter
| m <= May = Spring
| m <= Aug = Summer
| m <= Nov = Autumn
| otherwise = Winter
推荐阅读
- angularjs - 如何调试触发 Safari 上意外滚动到顶部行为的原因?
- visual-studio-code - Pylance 在 VS Code 中保存时发出的警报?
- python - 根据名称的部分查找文件:Python
- node.js - 在 Mongo db 中,我想在文档中添加一个条目。如果 id 已经存在,它应该覆盖它,如果不存在,它应该添加它
- python - 如何从他们的 GitHub 存储库中获取 Helm 的二进制文件?
- spring-cloud-dataflow - 处理事件的编排/通知
- python - Tkinter 停止 root.after 循环
- pdf - 以编程方式检查 PDF 文档中的比例信息?
- c - 进程执行的程序继承了什么?
- strapi - 连接测试失败:命令失败:npm install --prefix /tmp/strapi9a8613f466ed strapi-connector-bookshelf@3.6.3 knex@0.21.18 pg@8.5.1