One way to avoid issues with state is to avoid... state. Maybe we'd 
configure it like this:

records = [
  # explicit
  {:column_definition, [:name, :type]},

  # grabs record fields from record macro in that module, e.g: 
resultset(resultset()) |> Keyword.keys()
  {Records, :resultset}
]

IEx.configure(inspect: [records: records])
ExUnit.configure(inspect: [records: records])

This is less convenient, but I guess sometimes we may prefer the "tuple" 
representation so by making this opt-in we cater to that use case as well.

On Saturday, December 15, 2018 at 5:08:13 PM UTC+1, 
[email protected] wrote:
>
> Hello,
> I'd like to discuss support for Inspect protocol for records. I created a 
> proof-of-concept here: https://github.com/wojtekmach/record_inspect
>
> Basically, for these records:
>
> defrecord :resultset [
>   :column_count,
>   :column_definitions,
>   :row_count,
>   :rows,
>   :warning_count,
>   :status_flags
> ]
>
> defrecord :column_definition41, [:name, :type]
>
> Instead of:
>
> {:resultset, 2,
>  [{:column_definition41, "2*3", 8}, {:column_definition41, "4*5", 8}], 1,
>  [[6, 20]], 0, 2}
>
> We could get this:
>
> #resultset([
>   column_count: 2,
>   column_definitions: [
>     #column_definition41([name: "2*3", type: 8]),
>     #column_definition41([name: "4*5", type: 8])
>   ],
>   row_count: 1,
>   rows: [[6, 20]],
>   warning_count: 0,
>   status_flags: 2
> ])
>
> My proof-of-concept uses the new `:persistent_term` facility in OTP 21.2 
> just to get something working. Managing the state is challenging for 
> potentially including this in Elixir.
>
> Feedback appreciated!
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/8e936469-e806-46f9-b4a4-3aa3c577d205%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to