哈斯克尔。将名称分配给阈值

时间:2018-07-01 09:14:01

标签: function haskell threshold

我试图弄清楚如何在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

如何将其放入Haskell代码中?

1 个答案:

答案 0 :(得分:5)

如果我正确理解了您想要的内容,则可以定义一个函数,将所谓的“含义”分配给单个整数,然后在其上映射集合列表:

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

我为您的定义中未包含的范围添加了错误情况;更改它们以适合您的逻辑。