1

我有以下内容:

type Description = String
type WeeklyHours = Float
type HourlyPay = Float
type JobDB = [(Description, WeeklyHours, HourlyPay)]

weeklyJobPay :: JobDB -> [(Description,Float)]
weeklyJobPay jDB = undefined

对于 JobDB 中的每个元组,我需要函数 weekJobPay 将 weekHours 乘以 HourlyPay。我怎么能这样做?

4

2 回答 2

6

根据模式匹配定义访问器:

sndthd :: (a,b,c) -> (b,c)
sndthd (_,b,c) = (b,c)

如果您有其他一些转换,例如小时 * 工资,类似的功能将是:

flatten :: JobDB -> (Description, Float)
flatten (d,h,p) = (d, h*p)

请注意,您应该使用Double而不是Float.

于 2012-05-07T15:22:38.203 回答
2

使用模式匹配和地图:

weeklyJobPay :: JobDB -> [(Description,Float)]
weeklyJobPay jDB = map (\(desc, wh, hp) -> (desc, wh * hp)) jDB

虽然创建一个函数会更好地计算每个职位描述的每周工资,然后将其映射为它们的列表:

weeklyDescPay (desc, wh, hp) = (desc, wh * hp)

weeklyJobPay = map weeklyDescPay
于 2012-05-07T15:22:17.687 回答