diff options
author | Alice Dee <alice.dee@guardian.co.uk> | 2019-09-17 12:37:06 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2019-09-17 12:59:32 +0100 |
commit | 198beba763f8bc0fd35b5b6ba36e42c5926ecc8c (patch) | |
tree | 5c2262db87b91b8a804f7c0fc97fb365022bcb9b /gen | |
parent | 9d282d68b5a2764ab73c2dead1df0b0ab8b8edaa (diff) | |
download | gleam_stdlib-198beba763f8bc0fd35b5b6ba36e42c5926ecc8c.tar.gz gleam_stdlib-198beba763f8bc0fd35b5b6ba36e42c5926ecc8c.zip |
Create Pair datatype (remove Tuple)
Diffstat (limited to 'gen')
-rw-r--r-- | gen/src/gleam@any.erl | 6 | ||||
-rw-r--r-- | gen/src/gleam@pair.erl | 16 | ||||
-rw-r--r-- | gen/test/gleam@any_test.erl | 24 | ||||
-rw-r--r-- | gen/test/gleam@pair_test.erl | 13 |
4 files changed, 43 insertions, 16 deletions
diff --git a/gen/src/gleam@any.erl b/gen/src/gleam@any.erl index 5bd9157..4b2d17d 100644 --- a/gen/src/gleam@any.erl +++ b/gen/src/gleam@any.erl @@ -1,7 +1,7 @@ -module(gleam@any). -compile(no_auto_import). --export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, struct2/1, field/2]). +-export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, pair/1, field/2]). from(A) -> gleam__stdlib:identity(A). @@ -36,8 +36,8 @@ list(Any, Decode) -> fun(Capture1) -> gleam@list:traverse(Capture1, Decode) end ). -struct2(A) -> - gleam__stdlib:decode_struct2(A). +pair(A) -> + gleam__stdlib:decode_pair(A). field(A, B) -> gleam__stdlib:decode_field(A, B). diff --git a/gen/src/gleam@pair.erl b/gen/src/gleam@pair.erl new file mode 100644 index 0000000..887adb9 --- /dev/null +++ b/gen/src/gleam@pair.erl @@ -0,0 +1,16 @@ +-module(gleam@pair). +-compile(no_auto_import). + +-export([first/1, second/1, swap/1]). + +first(Tup) -> + {A, _} = Tup, + A. + +second(Tup) -> + {_, A} = Tup, + A. + +swap(Tup) -> + {A, B} = Tup, + {B, A}. diff --git a/gen/test/gleam@any_test.erl b/gen/test/gleam@any_test.erl index e915fe7..59a5067 100644 --- a/gen/test/gleam@any_test.erl +++ b/gen/test/gleam@any_test.erl @@ -1,7 +1,7 @@ -module(gleam@any_test). -compile(no_auto_import). --export([string_test/0, int_test/0, float_test/0, thunk_test/0, bool_test/0, atom_test/0, list_test/0, struct2_test/0, field_test/0]). +-export([string_test/0, int_test/0, float_test/0, thunk_test/0, bool_test/0, atom_test/0, list_test/0, pair_test/0, field_test/0]). string_test() -> gleam@expect:equal(gleam@any:string(gleam@any:from(<<"">>)), {ok, <<"">>}), @@ -117,32 +117,30 @@ list_test() -> ) ). -struct2_test() -> +pair_test() -> gleam@expect:equal( - gleam@any:struct2(gleam@any:from({1, []})), + gleam@any:pair(gleam@any:from({1, []})), {ok, {gleam@any:from(1), gleam@any:from([])}} ), gleam@expect:equal( - gleam@any:struct2(gleam@any:from({<<"ok">>, <<"ok">>})), + gleam@any:pair(gleam@any:from({<<"ok">>, <<"ok">>})), {ok, {gleam@any:from(<<"ok">>), gleam@any:from(<<"ok">>)}} ), - gleam@expect:is_error(gleam@any:struct2(gleam@any:from({1}))), - gleam@expect:is_error(gleam@any:struct2(gleam@any:from({1, 2, 3}))), gleam@expect:equal( gleam@result:then( gleam@result:then( - gleam@any:struct2(gleam@any:from({1, 2.0})), + gleam@any:pair(gleam@any:from({1, 2.0})), fun(X) -> gleam@result:map( - gleam@any:int(gleam@tuple:first(X)), - fun(F) -> {F, gleam@tuple:second(X)} end + gleam@any:int(gleam@pair:first(X)), + fun(F) -> {F, gleam@pair:second(X)} end ) end ), fun(X) -> gleam@result:map( - gleam@any:float(gleam@tuple:second(X)), - fun(F) -> {gleam@tuple:first(X), F} end + gleam@any:float(gleam@pair:second(X)), + fun(F) -> {gleam@pair:first(X), F} end ) end ), @@ -151,7 +149,7 @@ struct2_test() -> field_test() -> {ok, OkAtom} = gleam@atom:from_string(<<"ok">>), - {ok, EarlierAtom} = gleam@atom:from_string(<<"earlier">>), + {ok, ErrorAtom} = gleam@atom:from_string(<<"error">>), gleam@expect:equal( gleam@any:field( gleam@any:from(gleam@map:put(gleam@map:new(), OkAtom, 1)), @@ -164,7 +162,7 @@ field_test() -> gleam@any:from( gleam@map:put( gleam@map:put(gleam@map:new(), OkAtom, 3), - EarlierAtom, + ErrorAtom, 1 ) ), diff --git a/gen/test/gleam@pair_test.erl b/gen/test/gleam@pair_test.erl new file mode 100644 index 0000000..63a329a --- /dev/null +++ b/gen/test/gleam@pair_test.erl @@ -0,0 +1,13 @@ +-module(gleam@pair_test). +-compile(no_auto_import). + +-export([first_test/0, second_test/0, swap_test/0]). + +first_test() -> + gleam@expect:equal(gleam@pair:first({1, 2}), 1). + +second_test() -> + gleam@expect:equal(gleam@pair:second({1, 2}), 2). + +swap_test() -> + gleam@expect:equal(gleam@pair:swap({1, <<"2">>}), {<<"2">>, 1}). |