From d74af16e6a527f46730c3d35554ef55677c9caf4 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Tue, 5 Mar 2019 19:11:55 +0000 Subject: Compile more of stdlib --- src/list.gleam | 55 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/list.gleam b/src/list.gleam index 338ee3c..871c980 100644 --- a/src/list.gleam +++ b/src/list.gleam @@ -134,37 +134,38 @@ test map { |> expect:equal(_, [0, 8, 10, 14, 6]) } -// pub fn do_traverse(list, fun, acc) { -// case list { -// | [] -> Ok(reverse(acc)) -// | [x | xs] -> -// case fun(x) { -// | Ok(y) -> do_traverse(xs, fun, [y | acc]) -// | Error(error) -> Error(error) -// } -// } -// } +pub fn do_traverse(list, fun, acc) { + case list { + | [] -> Ok(reverse(acc)) + | [x | xs] -> + case fun(x) { + | Ok(y) -> do_traverse(xs, fun, [y | acc]) + | Error(error) -> Error(error) + } + } +} -// pub fn traverse(list, fun) { -// do_traverse(list, fun, []) -// } +pub fn traverse(list, fun) { + do_traverse(list, fun, []) +} -// test traverse { -// let fun = fn(x) { -// case x < 6 { -// | True -> Ok(x * 2) -// | False -> Error(x) -// } -// } +test traverse { + let fun = fn(x) { + case x == 6 || x == 5 || x == 4 { + | True -> Ok(x * 2) + | False -> Error(x) + } + } -// let _ = [0, 4, 5, 6, 3] -// |> traverse(_, fun) -// |> expect:equal(_, Ok([0, 8, 10, 12, 6])) + let _ = [5, 6, 5, 6] + |> traverse(_, fun) + |> expect:equal(_, Ok([10, 12, 10, 12])) + + [4, 6, 5, 7, 3] + |> traverse(_, fun) + |> expect:equal(_, Error(7)) +} -// [0, 4, 5, 7, 3] -// |> traverse(_, fun) -// |> expect:equal(_, Error(7)) -// } // pub fn drop(list, n) { // case n <= 0 { -- cgit v1.2.3