From ae854f69b8f40609c0ee6fb1aec8957bd3eac1c2 Mon Sep 17 00:00:00 2001 From: Brett Snyder Date: Sat, 11 May 2019 14:08:45 -0500 Subject: list:split_while --- src/list.gleam | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/list.gleam b/src/list.gleam index 40c097e..58f36de 100644 --- a/src/list.gleam +++ b/src/list.gleam @@ -289,3 +289,18 @@ fn do_split(list, n, taken) { pub fn split(list, n) { do_split(list, n, []) } + +fn do_split_while(list, f, acc) { + case list { + | [] -> {reverse(acc), []} + | [x | xs] -> + case f(x) { + | False -> {reverse(acc), list} + | _ -> do_split_while(xs, f, [x | acc]) + } + } +} + +pub fn split_while(list, f) { + do_split_while(list, f, []) +} -- cgit v1.2.3