이 번 용액의 종류 서명을 산출 나열 빈 응답 목록).계수 요소
저는 현재 솔루션이 필요한 것보다 훨씬 복잡해 보이지만 그러한 목록의 요소 수를 계산하는 데 관심이 있습니다.
count : List Comment -> Int
count comments =
let
responses =
List.concatMap (\c -> flatList c) comments
in
List.length responses
flatList : Comment -> List Comment
flatList root =
let
rest =
case root.children of
Just responseList ->
List.concatMap (\child -> flatList child) <| unwrapResponses responseList
Nothing ->
[]
in
root :: rest
unwrapResponses : Responses -> List Comment
unwrapResponses responses =
case responses of
Responses comments ->
comments
효과적으로, 이는 각각의 서브리스트를 언랩 Responses
재귀을 병합. 그런 다음 각 부모 Comments
에 대해 Responses
플랫 목록을 연결하고 마지막으로이 목록의 길이를 가져옵니다.
이 평평한 목록에는 아무런 쓸모가 없으므로 목록을 통해 반복해서 각 List.length
을 계산 한 다음 결과를 배분하거나 합계하는 것이 좋습니다 (또는 전체 요소 수를 검색하는 다른 방법을 사용하십시오). 그러나 나는 어떻게 flatList
결과를 반환하지 않고 그러한 솔루션을 생성하는지 확신 할 수 없습니다.
설명해 주셔서 감사합니다. 사이드 노트 또한 많은 의미를 갖기 때문에 통찰력에 다시 한번 감사드립니다. – Geodesic