In such cases, I use macros: https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/inspect/algebra.ex#L158-L176
Right now it feels this is a very specific use case to justify being added as part of Elixir. *José Valim* www.plataformatec.com.br Skype: jv.ptec Founder and Director of R&D On Fri, Nov 4, 2016 at 1:19 PM, Waldemar Rachwał <[email protected] > wrote: > Hello, > > The rationale behind the proposal is the fact there are cases the records > can be inappropriate. They provide excellent interface, but well, sometimes > the tag atom at first position (index 0) rather harms than helps. > > One such use case I found when dealing with ETS tables. > > ETS entries are tuples. While entries are homogenic, one record definition > which tuple data looks like {:tag, key, field1, ...} seems to be a good fit > and only one has to tell ETS the key is at second position (index 1). > > However, when it comes to store many tuples of different shapes in one > table, the key itself should differentiate these shapes and the instance > within given shape, something like {:tag, key}, and then the alone :tag > field of a record becomes quite redundant. In such heterogenic ETS tables, > existing records have also their own use: for example to hold singular > entries each with "global" counters as fields. > > Obviously, this is the real use case I encountered. Perhaps there are > others. I have no doubt that generally records, in cases one wants to use > tuples via functional interface, will be default practice. > > I have code ready because I used the stuff earlier from an auxiliary > module. In Elixir the Tuple module and deftuple(p) seem natural, but I was > never good at naming things... > > What do you think? > > -- > 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/CABR-7m0R8j52Y2r57-hWomJ-nz% > 2B0R0Q5Q01B-xm5CAZH0jGHbw%40mail.gmail.com > <https://groups.google.com/d/msgid/elixir-lang-core/CABR-7m0R8j52Y2r57-hWomJ-nz%2B0R0Q5Q01B-xm5CAZH0jGHbw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- 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/CAGnRm4LVgRU7j1tAfUS0kY2PUDj44j6D7LUkNiK_tTofsAR4UQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
