Skip to content

Commit a4afe0f

Browse files
committed
Add group to list functionality
1 parent 7fc552e commit a4afe0f

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

Stdlib/Data/List/Base.juvix

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,3 +285,16 @@ transpose {A} : (listOfLists : List (List A)) -> List (List A)
285285
| nil := nil
286286
| (xs :: nil) := listMap λ{x := x :: nil} xs
287287
| (xs :: xss) := zipWith (::) xs (transpose xss);
288+
289+
--- 𝒪(𝓃). Groups a ;List; given a predicate
290+
group {A} : (break : A -> A -> Bool) -> List A -> List (List A)
291+
| _ nil := nil
292+
| break (x :: xs) :=
293+
let
294+
go : List A -> List (List A) -> Pair A (List A) -> List (List A)
295+
| nil acc _ := acc
296+
| (x :: xs) acc (prev, prevs) :=
297+
if
298+
| break prev x := go xs acc (x, prev :: prevs)
299+
| else := go xs ((prev :: prevs) :: acc) (x, nil);
300+
in go xs nil (x, nil);

0 commit comments

Comments
 (0)