diff options
author | inoas <mail@inoas.com> | 2022-08-10 00:42:35 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-08-10 08:46:11 +0100 |
commit | a0ed3c31ad7437b3b948252acaa0e5a3fd64797f (patch) | |
tree | 8d0ff7dc77029cb6b28d59f52e96decbdf2e32e7 /src | |
parent | fb560da31a313cb7e2966b131a0148a8173e9e4a (diff) | |
download | gleam_stdlib-a0ed3c31ad7437b3b948252acaa0e5a3fd64797f.tar.gz gleam_stdlib-a0ed3c31ad7437b3b948252acaa0e5a3fd64797f.zip |
fix inspect on improper lists
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam_stdlib.erl | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gleam_stdlib.erl b/src/gleam_stdlib.erl index c4d01e4..55f65c8 100644 --- a/src/gleam_stdlib.erl +++ b/src/gleam_stdlib.erl @@ -349,7 +349,7 @@ inspect(Binary) when is_binary(Binary) -> ["<<", lists:join(", ", Segments), ">>"] end; inspect(List) when is_list(List) -> - Elements = lists:join(<<", ">>, lists:map(fun inspect/1, List)), + Elements = lists:join(<<", ">>, do_map_listish(fun inspect/1, List)), ["[", Elements, "]"]; inspect(Any) when is_tuple(Any) % Record constructors andalso is_atom(element(1, Any)) @@ -375,5 +375,13 @@ inspect(Any) when is_function(Any) -> inspect(Any) -> ["//erl(", io_lib:format("~p", [Any]), ")"]. +do_map_listish(_Fn, []) -> + []; +do_map_listish(Fn, List) when is_list(List) -> + [Head | Tail] = List, + [Fn(Head) | do_map_listish(Fn, Tail)]; +do_map_listish(Fn, Tail) when not is_list(Tail) -> + [Fn(Tail)]. + float_to_string(Float) when is_float(Float) -> erlang:iolist_to_binary(io_lib_format:fwrite_g(Float)). |