aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorinoas <mail@inoas.com>2022-08-10 00:42:35 +0200
committerLouis Pilfold <louis@lpil.uk>2022-08-10 08:46:11 +0100
commita0ed3c31ad7437b3b948252acaa0e5a3fd64797f (patch)
tree8d0ff7dc77029cb6b28d59f52e96decbdf2e32e7 /src
parentfb560da31a313cb7e2966b131a0148a8173e9e4a (diff)
downloadgleam_stdlib-a0ed3c31ad7437b3b948252acaa0e5a3fd64797f.tar.gz
gleam_stdlib-a0ed3c31ad7437b3b948252acaa0e5a3fd64797f.zip
fix inspect on improper lists
Diffstat (limited to 'src')
-rw-r--r--src/gleam_stdlib.erl10
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)).