나는 프로그램에서 일하고있다. 의지는 트리플의 목록을 취하고 그 중 하나에 따라 다른 부분의 합을 찾고 싶다. 트리플.목록의 일부를 누적시키는 프로그램 만들기 - Haskell
totalWeightOfFirstClass :: [Parcel] -> Weight
totalWeightOfFirstClass [] = go
totalWeightOfFirstClass ((weight, postcode, firstclass):xs) =
if firstclass == True then
go weight
totalWeightOfFirstClass xs
else
totalWeightOfFirstClass xs
where
go :: Int -> Int
go _ = 0
go x =
따라서 프로그램은 목록에있는 모든 가중치를 더하고 그 트리플이 첫 번째 클래스 인 경우에만 끝에 표시해야합니다. 지금까지 필자는 모든 값을 누적하고 결과적으로 결국 표시하고자하는 도우미 선언문을 가지고 있습니다.
도움이나 조언을 주시면 감사하겠습니다.
안부, Kieran. 코드에서 너무 많은 일을의
totalWeightOfFirstClass :: [Parcel] -> Weight
totalWeightOfFirstClass [] = 0
totalWeightOfFirstClass ((weight, postcode, firstclass):xs)
| firstclass = weight + totalWeightOfFirstClass xs
| otherwise = totalWeightOfFirstClass xs
오히려 비효율적입니다. 왜 볼 수 있니? – dfeuer
@ dfeuer 만약 당신이 처음에 필터링 된 여분의 메모리를 제거하고 태드 더 빨리 될 것이라고 필터링하지만, 꼬리 재귀 및 합계 함수의 표준 재귀 구현을 것, 나는 뭔가 놓친 오전 것 같은데? 개인적으로 HuStmpHrrr의 솔루션과 비슷한 방법으로 구현 하겠지만 좀 더 이해하기 쉽도록하고 싶습니다. – Zpalmtree
@dfeuer 이유를 알 수 없습니다. 아마 너 자신을 말할 수 있을까? –