주어진 속성을 만족하는 항목에 따라 목록을 하위 목록으로 분할하는 함수를 작성하고 싶습니다. p
. 내 질문은 함수를 호출하는 것입니다. 하스켈에서 예제를 드리 겠지만 F #이나 ML에서도 같은 문제가 발생할 것입니다.리스트를 분리하는 함수를 무엇이라고 부를까요?
split :: (a -> Bool) -> [a] -> [[a]] --- split lists into list of sublists
하위 목록은 원래리스트 연결된 있습니다
가concat (split p xss) == xs
모든 하위 목록 말하고있는 initial_p_only p
특성을 만족하는 (A)가 하위 목록은 소자 p
— 만족 시작하고 그러므로 비어 있지 및 (B) 다른 요소가 충족되지 p
:
initial_p_only :: (a -> Bool) -> [a] -> Bool
initial_p_only p [] = False
initial_p_only p (x:xs) = p x && all (not . p) xs
것은 그래서 될 원래 목록의 첫 번째 요소는 p
을 만족하지 않는 경우
all (initial_p_only p) (split p xss)
, 그것에 대해 정확한 분할에 실패합니다.
이 함수는 split
이외의 다른 함수로 호출해야합니다. 내가 뭐라고 부를까요 ??
groupBy가 올바르게 보이지 않습니다. groupAt가 작동 할 수도 있습니다. –
splitBy? splitBefore/After? – Daniel
구현하지 않고 공식 사양을 작성하는 방법을 좋아합니다. – luqui