aboutsummaryrefslogtreecommitdiff
path: root/src/result.gleam
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-03-17 15:35:19 +0000
committerLouis Pilfold <louis@lpil.uk>2019-03-17 15:35:19 +0000
commitfbd570295cd40802127913d2b308916eefb14066 (patch)
tree5a018e14b69d7748459091c97afa9e1cd7972d1d /src/result.gleam
parent00ff9767dc61e698aac791b43704cfce1ab33600 (diff)
downloadgleam_stdlib-fbd570295cd40802127913d2b308916eefb14066.tar.gz
gleam_stdlib-fbd570295cd40802127913d2b308916eefb14066.zip
Any decoders
Diffstat (limited to 'src/result.gleam')
-rw-r--r--src/result.gleam21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/result.gleam b/src/result.gleam
index 113925e..18503ec 100644
--- a/src/result.gleam
+++ b/src/result.gleam
@@ -2,11 +2,6 @@ import expect
// Result represents the result of something that may succeed or fail.
// `Ok` means it was successful, `Error` means it failed.
-//
-pub enum Result(error, value) =
- | Ok(value)
- | Error(error)
-;
pub fn is_ok(result) {
case result {
@@ -38,7 +33,7 @@ test is_error {
pub fn map(result, fun) {
case result {
| Ok(x) -> Ok(fun(x))
- | Error(_) -> result
+ | Error(e) -> Error(e)
}
}
@@ -47,6 +42,10 @@ test map {
|> map(_, fn(x) { x + 1 })
|> expect:equal(_, Ok(2))
+ Ok(1)
+ |> map(_, fn(_) { "2" })
+ |> expect:equal(_, Ok("2"))
+
Error(1)
|> map(_, fn(x) { x + 1 })
|> expect:equal(_, Error(1))
@@ -90,7 +89,7 @@ test flatten {
|> expect:equal(_, Error(Error(1)))
}
-pub fn flat_map(result, fun) {
+pub fn then(result, fun) {
case result {
| Ok(x) ->
case fun(x) {
@@ -101,17 +100,17 @@ pub fn flat_map(result, fun) {
}
}
-test flat_map {
+test then {
Error(1)
- |> flat_map(_, fn(x) { Ok(x + 1) })
+ |> then(_, fn(x) { Ok(x + 1) })
|> expect:equal(_, Error(1))
Ok(1)
- |> flat_map(_, fn(x) { Ok(x + 1) })
+ |> then(_, fn(x) { Ok(x + 1) })
|> expect:equal(_, Ok(2))
Ok(1)
- |> flat_map(_, fn(_) { Error(1) })
+ |> then(_, fn(_) { Error(1) })
|> expect:equal(_, Error(1))
}