基本haskell:寻找两个值之间的平均值 newtype Name=名称字符串派生(显示) newtype Age=年龄整数派生(显示) newtype权重=权重整数导出(显示) newtype Person=派生(显示)的人(姓名、年龄、体重) 键入Gym=[人] isAdult::Person->Bool 成人(人(u,年龄a,u))=a>18 w=人(姓名“Lee”,30岁,体重120) p=人(姓名“约翰”,65岁,体重80) 更新视图::Person->Int->Person updatewight(Person(n,a,Weight w))b=Person(n,a,Weight$w+b) getWeight::Person->Int getWeight(人(a、b、重量c))=c getAge::Person->Int getAge(人(a、b、c))=b

基本haskell:寻找两个值之间的平均值 newtype Name=名称字符串派生(显示) newtype Age=年龄整数派生(显示) newtype权重=权重整数导出(显示) newtype Person=派生(显示)的人(姓名、年龄、体重) 键入Gym=[人] isAdult::Person->Bool 成人(人(u,年龄a,u))=a>18 w=人(姓名“Lee”,30岁,体重120) p=人(姓名“约翰”,65岁,体重80) 更新视图::Person->Int->Person updatewight(Person(n,a,Weight w))b=Person(n,a,Weight$w+b) getWeight::Person->Int getWeight(人(a、b、重量c))=c getAge::Person->Int getAge(人(a、b、c))=b,haskell,Haskell,我现在正在考虑找出两个年龄段的人在健身房的平均体重 到目前为止,我已经 getAverage::Gym->(Int,Int)->Int getAverage a(b,c)=总和。映射getWeight。filter((b>=age&&c您所拥有的已经很接近了,但还不是很接近。我建议将问题分解为子表达式,并使用where或let本地绑定来更清楚地说明您想要做什么: getAverage::Gym->(Int,Int)->Double getAverage gym(minAge,maxAge)=来自

我现在正在考虑找出两个年龄段的人在健身房的平均体重

到目前为止,我已经

getAverage::Gym->(Int,Int)->Int

getAverage a(b,c)=总和。映射getWeight。filter((b>=age&&c您所拥有的已经很接近了,但还不是很接近。我建议将问题分解为子表达式,并使用
where
let
本地绑定来更清楚地说明您想要做什么:

getAverage::Gym->(Int,Int)->Double
getAverage gym(minAge,maxAge)=来自积分总数/积分计数
哪里
isInAgeRange person=minAge