diff options
author | Louis Pilfold <louis@lpil.uk> | 2018-06-29 16:07:23 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2018-06-29 16:26:17 +0100 |
commit | 31bea4c96bc2c412ad415c2ea16537364f920c1d (patch) | |
tree | 4f47c5d1206cf45e2d44638d74532cf1599fd141 /src/Order.gleam | |
parent | 089e8498907739c198166d7d7f473784e4d48bc3 (diff) | |
download | gleam_stdlib-31bea4c96bc2c412ad415c2ea16537364f920c1d.tar.gz gleam_stdlib-31bea4c96bc2c412ad415c2ea16537364f920c1d.zip |
Brace based syntax
Diffstat (limited to 'src/Order.gleam')
-rw-r--r-- | src/Order.gleam | 49 |
1 files changed, 32 insertions, 17 deletions
diff --git a/src/Order.gleam b/src/Order.gleam index 24b1a3b..a5faeb9 100644 --- a/src/Order.gleam +++ b/src/Order.gleam @@ -1,42 +1,50 @@ module Order exposing Order(..), reverse/1, to_int/1, compare/2, max/2, min/2 -type Order - = LT +type Order = + | LT | EQ | GT -fn reverse(order) = - case order +fn reverse(order) { + case order { | LT => GT | EQ => EQ | GT => LT + } +} -test reverse = +test reverse { reverse(LT) |> Assert.equal(_, GT) reverse(EQ) |> Assert.equal(_, EQ) reverse(GT) |> Assert.equal(_, LT) +} -fn to_int(order) = - case order +fn to_int(order) { + case order { | LT => -1 | EQ => 0 | GT => 1 + } +} -test to_int = +test to_int { to_int(LT) |> Assert.equal(_, -1) to_int(EQ) |> Assert.equal(_, 0) to_int(GT) |> Assert.equal(_, 1) +} -fn compare(a, b) = - case (a, b) +fn compare(a, b) { + case (a, b) { | (LT, LT) => EQ | (LT, _) => LT | (EQ, EQ) => EQ | (GT, GT) => EQ | (EQ, GT) => LT | _ => GT + } +} -test compare = +test compare { compare(LT, LT) |> Assert.equal(_, EQ) compare(LT, EQ) |> Assert.equal(_, LT) compare(LT, GT) |> Assert.equal(_, LT) @@ -46,14 +54,17 @@ test compare = compare(GT, LT) |> Assert.equal(_, GT) compare(GT, EQ) |> Assert.equal(_, GT) compare(GT, GT) |> Assert.equal(_, EQ) +} -fn max(a, b) = - case (a, b) +fn max(a, b) { + case (a, b) { | (GT, _) => GT | (EQ, LT) => EQ | _ => b + } +} -test max = +test max { max(LT, LT) |> Assert.equal(_, LT) max(LT, EQ) |> Assert.equal(_, EQ) max(LT, GT) |> Assert.equal(_, GT) @@ -63,14 +74,17 @@ test max = max(GT, LT) |> Assert.equal(_, GT) max(GT, EQ) |> Assert.equal(_, GT) max(GT, GT) |> Assert.equal(_, GT) +} -fn min(a, b) = - case (a, b) +fn min(a, b) { + case (a, b) { | (LT, _) => LT | (EQ, GT) => EQ | _ => b + } +} -test min = +test min { min(LT, LT) |> Assert.equal(_, LT) min(LT, EQ) |> Assert.equal(_, LT) min(LT, GT) |> Assert.equal(_, LT) @@ -80,3 +94,4 @@ test min = min(GT, LT) |> Assert.equal(_, LT) min(GT, EQ) |> Assert.equal(_, EQ) min(GT, GT) |> Assert.equal(_, GT) +} |