繁体   English   中英

Haskell中的元组如何访问第二和第三元素

[英]Tuples in Haskell How to access second and third elements

我有以下几点:

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

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

对于JobDB中的每个元组,我需要函数weeklyJobPay乘以HourlyPay乘以weeklyHours。 我该怎么办?

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

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

如果您有其他转换,例如小时*支付,则类似的函数将是:

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

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

使用模式匹配和地图:

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

尽管使函数能够计算每个职位描述的每周薪水,然后在其上映射它们的列表会更好一些:

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

weeklyJobPay = map weeklyDescPay

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM