I tried Gleam for Advent of Code
Impact of LLMs on Language Choice
- Several commenters worry that LLMs create path dependence: people pick languages “LLMs are good at,” which could freeze adoption of newer/smaller languages like Gleam.
- Others counter that modern models already handle niche or young languages (Elixir, Hare, Gleam, custom DSLs) surprisingly well, especially if syntax is simple and docs are good.
- There’s debate over whether training data volume really matters: some argue quality and conceptual simplicity trump corpus size; others note models still struggle with newer idioms (e.g. modern Elixir templates).
- Strong static typing is seen as beneficial for agentic coding loops (compiler feedback as cheap tests), though some point out static languages are more verbose and can stress context windows.
- A “flywheel” concern appears: programmers choose LLM‑friendly languages, which get more code, reinforcing their dominance. Others argue that truly general models should adapt from specs and examples alone.
Gleam’s Design: Strengths and Gaps
- Gleam is praised as a small, well-designed, statically typed functional language targeting the BEAM and JS. Many like it as “what Elixir could be with strong typing” or as an Elm-like experience (especially with Lustre).
- There’s confusion over OTP: initial claims of limited OTP support are corrected; all OTP APIs are usable from Gleam, while a separate Gleam OTP library only covers a type-safe subset.
- Gleam has generics but no interfaces/type classes. Polymorphism is achieved via higher-order functions and concrete types (e.g. iterators). Some find this explicitness refreshing; others miss ad‑hoc polymorphism.
- Limitations discussed: restricted guards (no function calls), some recursion/inner-function constraints, verbosity (
list.map,dict.Dict), and lack of boolean-if sugar. Opinions split on whether this simplicity is a feature or a nuisance.
Tooling, JSON, and Developer Experience
- The language server receives strong praise: smart autocomplete, imports, pattern completion, style hints, and code actions (including generating JSON encoders/decoders).
- JSON serialization is a recurring pain point: currently requires separate type/encoder/decoder definitions or codegen, which some find noisy compared to Rust-style derive macros.
- Performance on Advent of Code is reported as surprisingly good when code is written with BEAM characteristics in mind, though the library ecosystem is still thin in some areas.
Ecosystem, Alternatives, and Misc
- Gleam + Lustre is seen as a promising “new Elm,” though LiveView, Elm, and other FP front-end stacks remain more mature.
- Minor side threads cover ligatures on the blog, Elm’s slow evolution, and occasional complaints about politics in language communities.