这是我过去的考试试卷中的一个问题.请帮忙.
给出超市票据的类型.该法案的每个条目都包含产品名称,购买该产品的数量以及单个产品的价格.
type Product = String
type Count = Float -- type chosen for simple arithmetic
type Price = Float
type Bill = [(Count, Product, Price)]
Run Code Online (Sandbox Code Playgroud)
定义一个函数mostExpensive,鉴于一项法案,将返回的产品名称和该法案的最昂贵的项目的总成本(考虑如何将产品的许多项目被买).假设只有一个这样的产品.
在Data.List,有一个叫做的函数maximumBy在这里很有用.它需要一个进行比较的功能.要编写该函数,我们将使用Data.Ord被调用的函数comparing.现在我们需要的是一种方法,说什么我们要比较.所以,如果我们定义:
calcPrice (k, _, p) = k*p
Run Code Online (Sandbox Code Playgroud)
然后我们可以使用以下结果获得结果
maximumBy (comparing calcPrice) items
Run Code Online (Sandbox Code Playgroud)
有了这个,我认为你可以解决问题.