diff options
Diffstat (limited to 'src/list.gleam')
-rw-r--r-- | src/list.gleam | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/list.gleam b/src/list.gleam index 352fc77..40c097e 100644 --- a/src/list.gleam +++ b/src/list.gleam @@ -274,3 +274,18 @@ fn do_repeat(a, times, acc) { pub fn repeat(a, times) { do_repeat(a, times, []) } + +fn do_split(list, n, taken) { + case n <= 0 { + | True -> {reverse(taken), list} + | False -> + case list { + | [] -> {reverse(taken), []} + | [x | xs] -> do_split(xs, n - 1, [x | taken]) + } + } +} + +pub fn split(list, n) { + do_split(list, n, []) +} |