1

私は次のものを持っています:

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

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

JobDB のタプルごとに、weeklyHours に HourlyPay を掛ける関数 WeeklyJobPay が必要です。どうすればこれを行うことができますか?

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 に答える