首页 > 解决方案 > 哈斯克尔。将名称分配给值的阈值

问题描述

我试图弄清楚如何用 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 代码中?

标签: functionhaskellthreshold

解决方案


如果我正确理解你想要什么,你可以定义一个函数,将你所谓的“意义”分配给一个整数,然后将集合列表映射到它上面:

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"]

我为您的定义中未包含的范围添加了错误案例;将它们更改为适合您的逻辑的任何内容。


推荐阅读