type ItemID = Int
type ItemSellPrice = Int
type Item = (ItemID, ItemSellPrice)
type MonsterID = Int
type MonsterHP = Int
type Monster = (MonsterID, (MonsterHP, [(Item, Double)]))
calcItemDropPerHP :: [Monster] -> [Item] -> MonsterID -> MonsterHP
calcItemDropPerHP mdb idb a = case lookup a mdb of Just m -> sum $ map snd $ flip filter idb $ flip elem $ map fst $ snd m
upd: ыыы, оно ещё и неправильное. Чё-то лень совсем. Остаётся лишь радоваться, что на других языках я сдулся бы быстрее...
upd: чего-то я черезчур зациклился на pointless-стиле, и непонятно зачем: в хаскеле довольно просто исать понятный код...