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.