marick
As a new Phoenix user, I was happy to discover that Phoenix doesn’t render strings but something rather like Erlang iodata. That lets me use a more builder-style approach for creating chunks of HTML pages - but without having to use elaborate infrastructure. Seems to be working nicely so far.
In any case, I thought I might write up a blog piece about what I now understand about Phoenix rendering and iodata. As a newbie, I’ve probably gotten things wrong. Corrections welcome here or at http://blog.roundingpegs.com/taking-advantage-of-phoenix-rendering-and-iodata-part-1/
Trending in Discussions
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
New
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
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
We’re evaluating API mocking tools for OpenAPI-based projects and would love to hear what other teams are using.
We’re particularly inte...
New
I’m posting this in response to Jose’s recent tweet (Cr. link) :
People are sleeping on Elixir for a coding harness:
Hot-code swappi...
New
Hello,
I wrote Stop My Hand, a Scattergories-like web application using Phoenix/LiveView as my learning project for Elixir (after readin...
New
AcmeScript — Writing JS hooks as if I were still using Elixir
I’ve been having fun building a little something over the last few days: Ac...
New
Other Trending Topics
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
Aludel - LLM Evaluation Workbench
Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
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)
OvermindDL1
Nice, although one thing to note is that although eex accepts ‘nil’, it should not really ever be used. Returning an empty list of
[]is always a better approach than returning nil as it then allows it to be embedded further without worry. I consider nil’s returned from a function that could ever possibly end up going to a template as a bug.Other than that your article looks like a fairly accurate high level view.
xtian
@OvermindDL1, can you explain further what you mean here? I don’t understand the practical difference of returning
[]versusnilfrom a helper.OvermindDL1
A
nilin elixir is just an atom, if you put an atom in an iolist then it is no longer an iolist and can crash. By always returning[](which, consequently, is Erlang’snil, Elixir borked that hard and I really hope Elixir 2.0 fixes that) then you can embed those calls in iolists without worry.xtian
Ah ok, that makes sense. Thanks!
OvermindDL1
@josevalim Is there any chance of
nilcompiling to[]in Elixir 2.0? It would fix so many weird oddities in the erlang ecosystem with elixir, like iolists above. ^.^michalmuskala
I honestly don’t think this is a good idea. Erlang uses
nilto mean empty list only because that’s the naming in lisp. But I don’t think there’s a strong technical reason for it.Erlang itself most often uses the atom
undefinedfor uninitialised state, so I think using an atom for this purpose in elixir makes the most sense.OvermindDL1
:undefinedfor non-initialized state, I still use that in Elixir as well, butnilis often returned in places that are not just non-initialized but convey information, like ‘nothing’, which is what also states, which is especially useful in a lot of situations. If anything an ‘undefined’ keyword should be added that just maps to:undefined, andnilmaps to[].josevalim
[]is not Erlang’snil. That notation is used only in the abstract syntax tree and in Erlang codenilhas exactly the same asnilin Elixir.Plus
[]has the notion of cardinality, whichnilis devoid of. Given Elixir has both collections and base types, I believe it is important to represent nothingness without a notion of cardinality built-in.OvermindDL1
At least at the VM level, ordering level, type encoding, and everything else in the vm, the empty list is called ‘nil’ in the BEAM, and many things are optimized for it in terms of space and speed, more so than any atom.
josevalim
Exactly. Such happens because empty lists are common and worth optimizing for but it does not imply they are semantically meant to be
nilat the language level.