fireproofsocks
I’m sure this has been asked elsewhere (but forgive me I could not find something that addressed this specifically)…
Why do Elixir functions usually take keyword lists as options? Why not maps? Keyword lists are problematic especially if you’d like to pattern match on a map key to route to different functions, for example. Is there a historical or performance-based reason why keywords are used over maps?
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
LostKobrakai
Maybe not an exhaustive list, but some reasons:
hauleth
Elixir keyword lists are strict subset of proplists.
This could be done for maps as well TBH.
My reasons:
christhekeele
This is worth highlighting, it gives you a CLI-repeated-flag-like interface for options.
dimitarvp
Joining the last two. I’d prefer maps any day for config but prioritising the last given config key is impossible with maps.
I do however do my best to only use maps for config in my internal projects.
Phillipp
I find using keyword lists with
Keyword.get/3very handy because you can easily define a default value. Might be somehow possible with Maps too, I guess.NobbZ
Map.get/3…Though as others already have said, the big plus of KW is that it enables for having a key multiple times, and they are also ordered…
Try
ectowith maps instead of KW… You won’t have much joy…lucaong
Yep, I think it’s a mix of historical and practical reasons (the latter including possibility of duplicated keys, and explicit ordering).
You are right that keyword lists are more inconvenient when using pattern matching. But then again, I think they make a good outside interface, and usually I validate and parse options into another data structure (like a map or struct) as soon as they get within the boundary of my module or library.
gregvaughn
Keyword lists are very core to the Elixir syntax itself. For example
is syntax sugar for
or even
which is basically 2 parameters passed to the
defmacro. The last one is a keyword list with a:dokey in it.This is why all your functions can take a keyword list without square braces as the last parameter – because the core language syntax uses that.
al2o3cr
Maps weren’t introduced until OTP 17.0 in 2014, and were experimental until at least 2015.
DaAnalyst
Personally, I like KW lists because of a) order, b) syntactic sugar.
is so much nicer than:
When I need accessing the options in a map-like fashion, I’m willing to pay the price of having the KW list converted to a map in my function.
Besides, maybe what you sometimes need is precisely a list-like pattern matching e.g.: