ijverig
My question is regarding the implementation of the language:
In Erlang we have element to access tuple elements, setelement to change elements, append_element to append elements to tuples, and so on…
In Elixir we have elem, put_elem and Tuple.append, respectively.
Why some functions like elem and put_elem are part of Kernel in Elixir, while others that seem to be at the same “level” are in proper modules (like Tuple.append)?
For me it’s like saying elem and put_elem are core to the language, and that comes before being into Tuple.
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Is there any way to avoid the Hologram compiler running when using iex? It seems like the front-end code could potentially be disregarded...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
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
- #ai
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #metaprogramming











Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
NobbZ
elem/2is guard safe, I think thats the main reason why it is inKernel.put_elemis probably inKernelto line up withput_in/2/3, but I’d like to not see it there as it involves the cost of copying the full tuple.Tuple.append/2is probably in its very own module, because it involves the cost of copying should be carefully thought upon before just using it.These are assumptions based on observations mixed with a bit of personal opinion.
dom
The module doc for Tuple has a pretty lengthy explanation.
In short, it’s because having to use functions like
Tuple.append/2is a warning sign that you’re not using tuples as the fixed-size containers they’re meant to be, and so you’re likely to create performance problems, or at least non-idiomatic code.peerreynders
In my view using functions on tuples feels wrong (but there are always exceptions). They seem like intrinsic “values/units” that are constructed with the tuple notation and smashed with destructuring (via pattern-matching).
Strangely with maps I’m quite the opposite - they seem more complex and free form than tuples so I tend towards using functions rather than (yet another) map notation (I guess Clojure made me operator averse/function friendly). I keep having to remind myself:
List are in the middle. I have to be backed into a corner before I use
hd/1ortl/1preferring the cons notation - probably because that is the bread and butter for pattern matching (for destructuring) - otherwise they are dominated by higher order functions (… andEnum.at/3makes me cringe).