From 83525b26f33d906284c1d5637aafe578d32704ba Mon Sep 17 00:00:00 2001 From: Brett Snyder Date: Fri, 10 May 2019 11:26:59 -0500 Subject: list:strict_zip (#167) --- src/list.gleam | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/list.gleam b/src/list.gleam index dd8fb8a..288d971 100644 --- a/src/list.gleam +++ b/src/list.gleam @@ -7,6 +7,9 @@ pub enum Empty = pub enum NotFound = | NotFound +pub enum LengthMismatch = + | LengthMismatch + // Using the Erlang C BIF implementation. // pub external fn length(List(a)) -> Int = "erlang" "length" @@ -192,6 +195,13 @@ pub fn zip(l1, l2) { } } +pub fn strict_zip(l1, l2) { + case length(l1) == length(l2) { + | True -> Ok(zip(l1, l2)) + | False -> Error(LengthMismatch) + } +} + pub fn intersperse(list, elem) { case list { | [] -> [] -- cgit v1.2.3