我有这些数据和类型
data Cliente = Uncliente {nombre::String,resistencia::Int,bebidas::[Bebida],amigos::[Cliente]} deriving (Show)
type Bebida = Cliente -> Cliente
type Nombre = String
type Duracion = Float
type Acciones = [Bebida]
type Itinerario = (Nombre,Duracion,Acciones)
我有这个功能:
此函数使用itinerario和cliente并返回修改了值的客户端。
realizarItinerario :: Itinerario -> Cliente -> Cliente
realizarItinerario itinerario cliente = tomarTragos cliente (conseguirAcciones itinerario)
我有这个功能可以让你知道每个itinerario的强度
conocerIntensidad :: Itinerario -> Float
conocerIntensidad (nombre,duracion,acciones) = ((genericLength acciones)/duracion)
这是辅助功能:
conseguirAcciones :: Itinerario -> [Bebida]
conseguirAcciones (_,_,acciones) = acciones
我需要创建一个给出Itinerarios和Client列表的函数,它返回给他的最高强度itinerario的客户端:
我知道如何获得最高的itinerario,但不知道如何将它应用于同一个功能。
答案 0 :(得分:0)
我相信你想要的东西:
import Data.List
import Data.Ord
applyHighestIntensityItinerario :: [Itinerario] -> Cliente -> Cliente
applyHighestIntensityItinerario itinerarios cliente =
let itinerario = maximumBy (comparing conocerIntensidad) itinerarios
in realizarItinerario itinerario cliente
此处,maximumBy (comparing conocerIntensidad)
选择列表itinerarios
的元素,其conocerIntensidad
计算的强度具有最大值。 maximumBy
来自Data.List
,comparing
来自Data.Ord
。
然后,let
子句用于将其分配给变量itinerario
并使用辅助函数realizarItinerario
应用它。