aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-03-05 19:11:55 +0000
committerLouis Pilfold <louis@lpil.uk>2019-03-05 19:47:09 +0000
commitd74af16e6a527f46730c3d35554ef55677c9caf4 (patch)
treeabc22ce196abb2b466421f1197a72b14185b3494 /src
parentea5e146cf5ffd26a1c77a6b7e3160d98fc503c3c (diff)
downloadgleam_stdlib-d74af16e6a527f46730c3d35554ef55677c9caf4.tar.gz
gleam_stdlib-d74af16e6a527f46730c3d35554ef55677c9caf4.zip
Compile more of stdlib
Diffstat (limited to 'src')
-rw-r--r--src/list.gleam55
1 files changed, 28 insertions, 27 deletions
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 {