dogweather
Can anyone recommend books/courses/videos that use real-world Elixir? E.g.:
- Idiomatic error handling design, whether it’s
{ok/error, ...}or something else. - Uses specs as they “ought” to be, however that is.
- Uses the various mechanisms for creating types such as
@type,defstruct, and@enforce_keys. - Test-first coding generally, if that’s common.
- Idiomatic module and function naming.
- Use of keyword lists in function signatures.
(The resource or two I’ve purchased teach good architecture, apparently, but are not idiomatic, unfortunately.)
Trending in Chat/Questions
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
There are three potential reasons for members of this forum to have a look at https://vutuv.de
You are tired or annoyed of LinkedIn.
Yo...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixir-ls
- #ai
- #elixirconf-us
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
Nefcairon
Sadly you haven’t got any answers. I cannot give you any either, sorry.
To be honest, though having bought many Elixir books, I haven’t read half of them as the last months I get slowly “detached” from Elixir because of the fact that the ressources always lack at least one of this aspects, if not many.
If I continue learning Elixir, I want to learn it as “right” as possible. Haven’t wrote any elixir code for two months now. It’s a pity, as the language is great and this forum is great, too. I hope something brings my enthusiasm back I haven’t had since rails 15 years ago.
wanton7
By “keyword lists in function signatures” do you mean typespec for keyword lists? You don’t really need to use typespecs at all if you don’t want to. Typespec link I provided should have info on it. Elixir HexDocs is your friend.
dimitarvp
This is a pretty broad and rather strange statement.
The way out of something like this is to open-source something and ask for reviews IMO. I feel that most Elixir books authors think that everybody has to code in their own style, or they aren’t focusing on teaching coding style and what they might feel is an “idiomatic” Elixir.
lucaong
My suggestion, if you feel you know Elixir well, but you want to step up your practical Elixir coding skills, would be to read the codebase of some quality open-source projects. The source code of Elixir core library is a great place to start, as well as delving into libraries that you use, and possibly contributing to them.
Subjective opinion here: I would not stress too much about what is idiomatic or not, but rather develop a sense for which codebases are easier to navigate and why. Reading other people’s code helps in this respect, because we always approach it as “beginners” with little context. As developers, I think we focus too much on code style on a superficial level (stuff that linters can enforce) and too little on deeper aspects of what increases/decreases cognitive load.
dogweather
I just mean using keyword lists as function parameters. E.g., this mentions it:
But the books & instructional materials I’ve read so far haven’t made use of this. And I think I might have had some trouble pattern matching with keyword lists when I last tried it…
dimitarvp
Absolutely. Main focus should be readability and very quick onboarding of a stranger. Some people also focus on as little coding lines as possible which is IMO also a wrong metric.
wanton7
Yes it should be explained better in that document. I haven’t had this problem because what I usually do is look at code made by core team like Ecto as example. I think it would be very helpful for future users if you created issue for this to GitHub - elixir-lang/elixir: Elixir is a dynamic, functional language for building scalable and maintainable applications · GitHub repo, that keyword list function options need to be explained better.
Ecto uses parameter named
optsthat is a keyword list for lot of its functions to provider optional options. Maybe these will help you show how it’s used.https://medium.com/@brucepomeroy/accepting-optional-options-in-elixir-65e7eaed11ac
https://github.com/elixir-ecto/ecto/blob/master/lib/ecto/changeset.ex#L2441
dogweather
Excellent, thanks. Personally, I’m skeptical about this kind of API design because it enables silent failures and isn’t self-documenting.
wanton7
Yes if you are going to use keyword list parameters you should document usage properly. API made by Elixir core team usually has excellent documentation. I haven’t usually seen this level of API documentation in other languages I’ve used. As you can see from that check_constraint function ecto/lib/ecto/changeset.ex at b7c4dbd67d59f976fab021ca8164e10f92453010 · elixir-ecto/ecto · GitHub
You can directly create documentation from code comments here is example for that function Ecto.Changeset — Ecto v3.14.0
I think it’s kind of idiomatic Elixir to write good documentation. Here is some info about how to write documentation Writing documentation — Elixir v1.20.2
Maartz
I’ve bought this one and since the beginning we use
defstructor@enforce_keysetc.Functionnal web dev with Elixir, OTP and Phoenix
It’s a very good book.
After, for the tests suite, I’m practicing it in Phoenix Programming 1.4. For the rest, I can’t say.
I recall having used
defdelegatein Dave Thomas course on Elixir, where you build a hangman, people says that he wrote idiomatic Elixir code, and we write test all along.