により計算された最大「値」を持つリストの要素を、私はこのデータと種類は、私はこの機能を持っている別の関数
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のリストでは、彼に適用されたHighest Intensity itinerarioでクライアントを返します。
私は最高のitinerarioを取得する方法を知っていますが、同じ関数にそれを適用する方法はわかりません。ここで
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)
はconocerIntensidad
によって計算され、強度の最大値を持つリストitinerarios
の要素を選択します:
あなたの質問にもっとわかりやすいタイトルを付けるようにしてください。 - "haskellのリストとタプル"はかなり意味があります。 (あなたの質問を短い意味のあるタイトルに要約することが困難な場合、それはあなたの質問が十分ではないことを示すサインかもしれません) – duplode
fst。 maximumBy(sndを比較)。 map(\ x - >(x、conocerIntensidad x)) ' – karakfa