간단한 기능 :
processTrackPoints :: [TrackPoint] -> [(Integer, Float, Float)]
processTrackPoints tps =
map (\tp -> (time tp, distance tp, speed tp)) $
filter (\tp -> rpm tp > 10000) tps
동일하지만, 포인트 - 무료 수 :
processTrackPoints :: [TrackPoint] -> [(Integer, Float, Float)]
processTrackPoints =
map (\tp -> (time tp, distance tp, speed tp)) .
filter ((> 10000) . rpm)
사용 목록 함축이리스트 모나드 단지 설탕을 기억하는 것이 보람 경비원 :
processTrackPoints :: [TrackPoint] -> [(Integer, Float, Float)]
processTrackPoints ((TP rpm time distance speed) : t)
| rpm > 10000 = (time, distance, speed) : processTrackPoints t
| otherwise = processTrackPoints t
processTrackPoints _ = []
물론 이것은 다음과 같이 정확하게 정의 된 데이터 유형을 가지고 있다고 가정합니다.
data TrackPoint =
TP {
rpm :: Integer,
time :: Integer,
distance :: Float,
speed :: Float
}
deriving (Show)
무엇을 시도 했습니까? 몇 가지 예제 입력을 해당 출력과 함께 제공 할 수 있습니까? – hammar