pmjoe

pmjoe

Not trying to start a flame war, but with the new 1.20 release Elixir is addressing one of the major problems at Elixir. I did tried Gleam, it looks like a really nice language, but Elixir has such a bigger ecosystem right now.

Showing Posts 1 to 9

dimitarvp

dimitarvp

Not ever starting a flame war either but I don’t see why would I abandon a well-maintained ecosystem like Elixir’s for a new language. I am a sucker for Rust so Gleam I loved trying but of course having to invent much of the goodies in the ecosystem – or waiting for somebody else to do it – was, and likely still is, a deal-breaker.

I am no longer the early adopter type. Plenty of other people to take up the torch.

I wish Gleam – and every stricter language really – best of luck. They really do need it, especially in the age of LLMs.

pmjoe

pmjoe OP

The gap for me is the type system. Gleam type system is so damn good. Very simpler and catch most of the errors that I usually face, even on languages like Elixir. I do hope that the new type system in Elixir cover this gap.

jam

jam

Curious, what are those errors?

dimitarvp

dimitarvp

Same for me but with enough discipline and richer linting (I and a few others are working hard on that; well, in fairness, they are working on it and I am regularly re-evaluating really) you can go very far as well.

Still not as happy as I’d be with Rust of course but oh well, what can you do. Elixir is amazing and I am not trading BEAM’s runtime for anything else just yet.

krasenyp

krasenyp

Do you think a mix of Gleam and Elixir is something you’d use. Gleam for the core business logic where the invariants are enforced by the type system, and Elixir for the ecosystem and tighter BEAM integration.

pmjoe

pmjoe OP

I really like Rust as well, the type system is amazing, but too low level which make things complicated for higher level apps. I undertand why all the complexity is there, but if we youre just doing API and web apps, a GC is totally ok, and actually good to hide all the complexity. I think this is where Gleam shines.
I guess Ill need to wait another year to see all the set theoretic types in place, with things like exhaustive matching, to see how Gleam and Elixir play out.

pmjoe

pmjoe OP

Mostly not knowing when something is nil or not. For example, Im implementing a system that has a struct where diffferent implementations may not fill all the fields. This is really hard to represent in Elixir. Also individually checking every thing is really bad because it has so many fields and the each implementation may decide to fill a field or not. Its 100% possible to work around that, but not as good as the type system handling it for me.

dimitarvp

dimitarvp

Likely yes but I have no idea how would that look like. Do you have something in mind?

Though to be honest, my struggles in most of 2026 come from the tragic lack of good specs and docs for my own projects (and those I work on for money) which of course means LLMs mess them up if I don’t continually and incrementally create the specs / docs.

So maybe the stronger typing a la Haskell / OCaml style and their more modern cousins Rust / Gleam is not as big a game changer. I still want them, mind you. So many impossible states can be made non-representable and that by itself is a big win.

But I do wonder if Idris / Coq / Shen (and likely many others) are not where we should invest our time. F.ex. with Shen you can express various invariants with specially notated logic (it also supports Prolog syntax if I have noticed correctly).

So I really don’t know these days. Too much has happened in the last 9-ish months and I am desperately trying to catch up. Open to ideas because for the moment I am only slowly spec’ing my projects to help myself and the LLMs I use keep our eyes on the target.

christhekeele

christhekeele

Pure aside from the Gleam discussion, but this is exactly where multiple structs + protocols fit in for Elixir for me. It’s actually pretty intuitive to represent in Elixir even if you can’t do it via complicated type invariants. One struct per implementation and polymorphic behaviour by protocol, even if all that behaviour is is a validation pass + post-parse conversion into a known good common struct type.

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
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
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
RemyXRenard
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
velrest
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
samoloth
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
FlyingNoodle
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
ryanwinchester
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted” Version...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
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
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
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
Damirados
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
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews