Elixir v1.6.4 Inspect protocol View Source
Inspect protocol is responsible for converting any Elixir
data structure into an algebra document. This document is then
formatted, either in pretty printing format or a regular one.
Inspection is done using the functions available in
Many times, inspecting a structure can be implemented in function
of existing entities. For example, here is
defimpl Inspect, for: MapSet do import Inspect.Algebra def inspect(dict, opts) do concat(["#MapSet<", to_doc(MapSet.to_list(dict), opts), ">"]) end end
concat/1 function comes from
Inspect.Algebra and it
concatenates algebra documents together. In the example above,
it is concatenating the string
"MapSet<" (all strings are
valid algebra documents that keep their formatting when pretty
printed), the document returned by
Inspect.Algebra.to_doc/2 and the
Since regular strings are valid entities in an algebra document, an implementation of inspect may simply return a string, although that will devoid it of any pretty-printing.
In case there is an error while your structure is being inspected,
Elixir will raise an
ArgumentError error and will automatically fall back
to a raw representation for printing the structure.
You can however access the underlying error by invoking the Inspect implementation directly. For example, to test Inspect.MapSet above, you can invoke it as: