function - 哈斯克尔。将名称分配给值的阈值
问题描述
我试图弄清楚如何用 Haskell 编写:
有一个由 4 个变量组成的列表: [w,x,y,z] 通过 ghci 完成以下操作后:
collection :: Int -> Int -> Int -> Int -> [Int]
collection w x y z = [w,x,y,z]
我想为 w、x、y、z 的每个阈值分配一个“含义”。示例:当 0 < x < 60,则 x =“低”,当 59 < x < 80,则 x =“中”,当 79 < x < 100,则 x =“高”
您如何将其放入 Haskell 代码中?
解决方案
如果我正确理解你想要什么,你可以定义一个函数,将你所谓的“意义”分配给一个整数,然后将集合列表映射到它上面:
bin :: Int -> String
bin x
| x <= 0 = error "nonpositive value"
| x < 60 = "Low"
| x < 80 = "Medium"
| x < 100 = "High"
| otherwise = error "value greater than or equal to 100"
binnedCollection :: Int -> Int -> Int -> Int -> [String]
binnedCollection w x y z = map bin $ collection w x y z
例如,
Prelude> binnedCollection 0 20 60 80
["Low","Low","Medium","High"]
我为您的定义中未包含的范围添加了错误案例;将它们更改为适合您的逻辑的任何内容。
推荐阅读
- python - 如何在 pythons 中为不和谐的机器人使用 client.delete_channel() 命令
- c - 编译后整数如何存储在二进制文件中?
- tsql - 如何为十个最常用的标签(在 SEDE 中)查询十个最受好评的问题?
- pyspark - 如何在 RDD 上运行过滤器功能并一次性使用不同的数据帧模式创建输出
- php - 如何为管理仪表板添加新布局
- javascript - clearInterval 不重置
- php - 防止图像文件覆盖的 ISSET 功能?
- ruby-on-rails - 部署heroku时堆栈级别太深(SystemStackError)
- c# - 关于如何处理稍后插入但不可为空的数据库属性的建议
- facebook - 如何设置测试用户使用“Instagram 公共内容访问”功能提交我的应用程序?