Hi, This has been proposed before. Someone came up with https://github.com/meyercm/shorter_maps which accomplishes this as a macro. It might be worth a discussion again at this point but it is worth noting that this is a proposal that has been on this list before, and so it would likely be good to address considerations raised there in this new proposal.
- Ben On Monday, June 26, 2023 at 3:36:16 PM UTC-4 torres....@gmail.com wrote: > Hi, > I'd like to propose a syntax sugar for maps, specially for pattern > matching and construction. > > # Map construction > language = :elixir > %{ language } > => %{language: :elixir} > > > # Map pattern match > map = %{feature: :pattern_match} > %{ feature } = map > => %{feature: :pattern_match} > feature > => :pattern_match > > case %{ key: "some value" } do > %{key} -> > key > _ -> > nil > end > => "some value" > > > # Map in function args > defmodule Foo do > def bar(%{ key }), > do: key > end > > Foo.bar(%{ key: "some value" }) > => "some value" > > > Of course this would be just a syntax sugar. It won't compromise program's > performance. > > The advantage of that is mainly when pattern matching function, but also > *case* and *with* statements, on maps with some considerable amount of > keys. > > > with %{ key1 } <- %{key1: "value1"}, > {:ok, %{key2, key3, key4, key5}} <- > {:ok, %{key2: "value2", key3: "value3", key4: "value4", key5: "value5"}} > do > {key1, key2, key3, key4, key5} > end > => {"value1", "value2", "value3", "value4", "value5"} > > > I'd like to know if more people would be interested on that too. > -- 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 elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/56ed3f2e-c696-4986-9e34-b31b720d49a9n%40googlegroups.com.