I have been working on an Elm-inspired language that compiles to Go (early project, would love feedback)
Hi all,
I have been working on a small language project called Sky, and I have just open sourced it. It is heavily inspired by Elm, and I wanted to share it here to get some feedback.
GitHub: github.com/anzellai/sky
Tree-sitter grammar: github.com/anzellai/tree-sitter-sky
Docker: docker pull anzel/sky:0.1.0
Why I started this
I have always liked Elm's model a lot, especially:
* the Elm Architecture
* the focus on correctness
* and the general feeling of safety when refactoring
What I wanted to explore was whether a similar style could be used in a slightly different setting:
* running on the server
* compiling to Go (for simple deployment as a single binary)
* and handling UI in a server-driven way (a bit like LiveView)
So this is not meant as a replacement for Elm, more just an experiment in a similar direction.
What Sky looks like
It is very much Elm-inspired:
The overall structure follows the same idea of:
* init
* update
* view
* subscriptions
What is different
A couple of key differences from Elm:
* it compiles to Go rather than JavaScript
* UI is server-driven (state lives on the server, updates via SSE)
* there is Go interop (importing Go packages and generating wrappers)
The aim is to avoid a separate frontend/backend setup, but still keep a similar programming model.
Current state
This is still early and experimental:
* compiler and CLI are working
* Hindley-Milner type inference (ADTs, pattern matching, etc)
* basic LSP + tree-sitter
* simple server-driven UI runtime
* a few example apps
There are definitely missing pieces and rough edges, so not production ready.
What I would really like feedback on
From people familiar with Elm, I would be especially interested in:
* whether this feels aligned or at odds with Elm's design philosophy
* whether the server-driven approach makes sense
* anything that feels unnecessarily complex compared to Elm
* anything important that is missing
Small note
I used AI tools quite a bit while building this (mainly for speed), but the design decisions are mine.
If anyone has a look or shares thoughts, I would really appreciate it.
https://redd.it/1ryvkfi
@reddit_elm
Hi all,
I have been working on a small language project called Sky, and I have just open sourced it. It is heavily inspired by Elm, and I wanted to share it here to get some feedback.
GitHub: github.com/anzellai/sky
Tree-sitter grammar: github.com/anzellai/tree-sitter-sky
Docker: docker pull anzel/sky:0.1.0
Why I started this
I have always liked Elm's model a lot, especially:
* the Elm Architecture
* the focus on correctness
* and the general feeling of safety when refactoring
What I wanted to explore was whether a similar style could be used in a slightly different setting:
* running on the server
* compiling to Go (for simple deployment as a single binary)
* and handling UI in a server-driven way (a bit like LiveView)
So this is not meant as a replacement for Elm, more just an experiment in a similar direction.
What Sky looks like
It is very much Elm-inspired:
type alias Model = { count : Int }
type Msg = Increment | Decrement
update msg model =
case msg of
Increment -> { model | count = model.count + 1 }
Decrement -> { model | count = model.count - 1 }The overall structure follows the same idea of:
* init
* update
* view
* subscriptions
What is different
A couple of key differences from Elm:
* it compiles to Go rather than JavaScript
* UI is server-driven (state lives on the server, updates via SSE)
* there is Go interop (importing Go packages and generating wrappers)
The aim is to avoid a separate frontend/backend setup, but still keep a similar programming model.
Current state
This is still early and experimental:
* compiler and CLI are working
* Hindley-Milner type inference (ADTs, pattern matching, etc)
* basic LSP + tree-sitter
* simple server-driven UI runtime
* a few example apps
There are definitely missing pieces and rough edges, so not production ready.
What I would really like feedback on
From people familiar with Elm, I would be especially interested in:
* whether this feels aligned or at odds with Elm's design philosophy
* whether the server-driven approach makes sense
* anything that feels unnecessarily complex compared to Elm
* anything important that is missing
Small note
I used AI tools quite a bit while building this (mainly for speed), but the design decisions are mine.
If anyone has a look or shares thoughts, I would really appreciate it.
https://redd.it/1ryvkfi
@reddit_elm
GitHub
GitHub - anzellai/sky: Sky — an Elm-inspired language that compiles to Go. Hindley-Milner types, server-driven UI (Sky.Live), single…
Sky — an Elm-inspired language that compiles to Go. Hindley-Milner types, server-driven UI (Sky.Live), single binary output. - anzellai/sky
Elm for large projects
I am currently developing a large-scale project using Go for the backend and I am considering Elm for the frontend. A core requirement is the integration with WhatsApp, which involves simulating a real-time chat interface via WebSockets. Given the projected size and complexity of this application, is Elm a reliable choice for this use case, or should I consider other alternatives?
https://redd.it/1s0tveb
@reddit_elm
I am currently developing a large-scale project using Go for the backend and I am considering Elm for the frontend. A core requirement is the integration with WhatsApp, which involves simulating a real-time chat interface via WebSockets. Given the projected size and complexity of this application, is Elm a reliable choice for this use case, or should I consider other alternatives?
https://redd.it/1s0tveb
@reddit_elm
Reddit
From the elm community on Reddit
Explore this post and more from the elm community
Elm Town 89 – Elm Camp 2026
Elm Camp organizers Katja Mordaunt and Tomáš Látal share details about the June 15th-18th, 2026 event in Olomouc, Czech Republic, and extend an open invitation to Elm-curious folks in the broader community. Tickets on sale as of publishing!
Elm Town 89 – Elm Camp 2026:
* https://elm.town/episodes/elm-town-89-elm-camp-2026
* https://youtu.be/vLY9CrEQ0PY
https://redd.it/1s386if
@reddit_elm
Elm Camp organizers Katja Mordaunt and Tomáš Látal share details about the June 15th-18th, 2026 event in Olomouc, Czech Republic, and extend an open invitation to Elm-curious folks in the broader community. Tickets on sale as of publishing!
Elm Town 89 – Elm Camp 2026:
* https://elm.town/episodes/elm-town-89-elm-camp-2026
* https://youtu.be/vLY9CrEQ0PY
https://redd.it/1s386if
@reddit_elm
Elm Town
Elm Town 89 – Elm Camp 2026
Elm Camp organizers Katja Mordaunt and Tomáš Látal share details about the June 15th-18th, 2026 event in Olomouc, Czech Republic, and extend an open invitation to Elm-curious folks in the broader community. Tickets on sale as of publishing!
elm validation and donut chart packages
Hey everyone,
While working on a private project recently, I realized I was rebuilding the same logic for data viz and form handling. I decided to pull them out into separate, lightweight packages in case they help anyone else:
elm-pie-chart:* A simple, pure SVG pie and donut chart library. No heavy dependencies, just type-safe charts that scale.
elm-validation:* A "no-boilerplate" way to handle form validation logic. It keeps your update function clean and your error handling consistent.
Both are still early/small
https://redd.it/1sc5mar
@reddit_elm
Hey everyone,
While working on a private project recently, I realized I was rebuilding the same logic for data viz and form handling. I decided to pull them out into separate, lightweight packages in case they help anyone else:
elm-pie-chart:* A simple, pure SVG pie and donut chart library. No heavy dependencies, just type-safe charts that scale.
elm-validation:* A "no-boilerplate" way to handle form validation logic. It keeps your update function clean and your error handling consistent.
Both are still early/small
https://redd.it/1sc5mar
@reddit_elm
GitHub
GitHub - Dusste/elm-pie-chart: Customizable SVG Data Visualizations for Elm
Customizable SVG Data Visualizations for Elm. Contribute to Dusste/elm-pie-chart development by creating an account on GitHub.
New Elm tools (elm-ast, elm-assist, elm-codegen) written in Rust
Hey, everyone. I wanted to share some Elm tools I recently built with Rust.
A high quality AST parsing/construction printer library:
https://github.com/joshburgess/elm-ast
A suite of dev tools (linting/analysis via CLI, TUI, LSP, an elm-fmt formatter, etc.):
https://github.com/joshburgess/elm-assist
Elm codegen for types, encoders/decoders, and HTTP functions from Rust Axum:
https://github.com/joshburgess/elm-codegen
Both
I just made a thread about them on Twitter if anyone is interested:
https://x.com/\_joshburgess/status/2047074256152891404
https://redd.it/1st0gds
@reddit_elm
Hey, everyone. I wanted to share some Elm tools I recently built with Rust.
A high quality AST parsing/construction printer library:
https://github.com/joshburgess/elm-ast
A suite of dev tools (linting/analysis via CLI, TUI, LSP, an elm-fmt formatter, etc.):
https://github.com/joshburgess/elm-assist
Elm codegen for types, encoders/decoders, and HTTP functions from Rust Axum:
https://github.com/joshburgess/elm-codegen
Both
elm-assist and elm-codegen are built on top of elm-ast. I just made a thread about them on Twitter if anyone is interested:
https://x.com/\_joshburgess/status/2047074256152891404
https://redd.it/1st0gds
@reddit_elm
GitHub
GitHub - joshburgess/elm-ast: Inspired by syn, elm-ast is a Rust library for parsing and constructing Elm 0.19.1 ASTs.
Inspired by syn, elm-ast is a Rust library for parsing and constructing Elm 0.19.1 ASTs. - joshburgess/elm-ast
Who is maintaining Elm these days?
Hi, I'm curious who is maintaining Elm these days? Doing the PR merge?
https://github.com/elm/compiler
https://github.com/elm/core
https://redd.it/1t7ax5i
@reddit_elm
Hi, I'm curious who is maintaining Elm these days? Doing the PR merge?
https://github.com/elm/compiler
https://github.com/elm/core
https://redd.it/1t7ax5i
@reddit_elm
GitHub
GitHub - elm/compiler: Compiler for Elm, a functional language for reliable webapps.
Compiler for Elm, a functional language for reliable webapps. - elm/compiler
A time-traveling full-stack test debugger for elm-pages
https://elm-pages.com/blog/full-stack-test-debugger/
I just released a new end-to-end testing API and visual test viewer for elm-pages Route Modules. It lets you drive your full-stack Elm application in pure Elm tests, stubbing out non-deterministic interactions with the outside world, while emulating the full-stack framework behavior like form submissions, BackendTask resolution lifecycle, etc.
I think this is a game-changer for maintaining real-world applications with elm-pages, and it is one of the superpowers that Elm's unlocks for Elm-based frameworks. I hope you enjoy!
https://redd.it/1ta9ibf
@reddit_elm
https://elm-pages.com/blog/full-stack-test-debugger/
I just released a new end-to-end testing API and visual test viewer for elm-pages Route Modules. It lets you drive your full-stack Elm application in pure Elm tests, stubbing out non-deterministic interactions with the outside world, while emulating the full-stack framework behavior like form submissions, BackendTask resolution lifecycle, etc.
I think this is a game-changer for maintaining real-world applications with elm-pages, and it is one of the superpowers that Elm's unlocks for Elm-based frameworks. I hope you enjoy!
https://redd.it/1ta9ibf
@reddit_elm
elm-pages
A time-traveling full-stack test debugger
Test.PagesProgram introduces end-to-end testing for elm-pages Route Modules
bcardiff/elm-rad, two-way bindings
I explored the idea of having elm apps built using two-way bindings. If interested check https://package.elm-lang.org/packages/bcardiff/elm-rad/1.0.0/ and its source for examples (https://github.com/bcardiff/elm-rad/tree/main/examples). Cells, computed, debounce, validation, and local persistence supported.
It shift from TEA which we all love but in some scenarios having a more restricted app model has its benefit.
Thoughts?
https://redd.it/1tbg1ts
@reddit_elm
I explored the idea of having elm apps built using two-way bindings. If interested check https://package.elm-lang.org/packages/bcardiff/elm-rad/1.0.0/ and its source for examples (https://github.com/bcardiff/elm-rad/tree/main/examples). Cells, computed, debounce, validation, and local persistence supported.
It shift from TEA which we all love but in some scenarios having a more restricted app model has its benefit.
Thoughts?
https://redd.it/1tbg1ts
@reddit_elm
A "collaborative" mechanical keyboard that does basically nothing — built with Lamdera
Every keystroke gets broadcast to everyone currently on the page, plays a Cherry MX Blue sample (different sound per key now), and ticks up a global character counter. There's a fade-trail of the most recent keys. That's the whole app.
The actual point was to try out Lamdera (Elm fullstack). Shared types between backend and frontend, end-to-end typed messages, no API layer to write. The glue-lessness is genuinely impressive — the "app" took some small parts of an afternoon, most of which was fiddling with the audio.
Someone in the Elm Slack called it a "beautifully coded terrible idea," which feels about right.
Demo: <https://greentype.lamdera.app>
Source: <https://github.com/cekrem/greentype>
https://redd.it/1tbz5xm
@reddit_elm
Every keystroke gets broadcast to everyone currently on the page, plays a Cherry MX Blue sample (different sound per key now), and ticks up a global character counter. There's a fade-trail of the most recent keys. That's the whole app.
The actual point was to try out Lamdera (Elm fullstack). Shared types between backend and frontend, end-to-end typed messages, no API layer to write. The glue-lessness is genuinely impressive — the "app" took some small parts of an afternoon, most of which was fiddling with the audio.
Someone in the Elm Slack called it a "beautifully coded terrible idea," which feels about right.
Demo: <https://greentype.lamdera.app>
Source: <https://github.com/cekrem/greentype>
https://redd.it/1tbz5xm
@reddit_elm
GitHub
GitHub - cekrem/greentype: That Mechanical Keyboard You've Always Wanted
That Mechanical Keyboard You've Always Wanted. Contribute to cekrem/greentype development by creating an account on GitHub.
If You're Running Claude Code, PLEASE Run It in a Box · cekrem.github.io
https://cekrem.github.io/posts/if-you-re-running-claude-code-run-it-in-a-box/
https://redd.it/1tglwi1
@reddit_elm
https://cekrem.github.io/posts/if-you-re-running-claude-code-run-it-in-a-box/
https://redd.it/1tglwi1
@reddit_elm
cekrem.github.io
If You're Running Claude Code, PLEASE Run It in a Box
I occasionally use Claude Code for genuinely tedious tasks. I always run it sandboxed. Here's why and how.
The Tacit Dimension: Why Your Best Engineers Can't Tell You What They Know
https://cekrem.github.io/posts/the-tacit-dimension/
https://redd.it/1theiqr
@reddit_elm
https://cekrem.github.io/posts/the-tacit-dimension/
https://redd.it/1theiqr
@reddit_elm
cekrem.github.io
The Tacit Dimension: Why Your Best Engineers Can't Tell You What They Know
In 1966, Michael Polanyi explained why some knowledge resists being written down. Sixty years later, that's the knowledge AI cannot touch — and the knowledge your senior engineers carry in their bones.
Elm Town 90 – Wonder: Contorting yourself with Ari Schlesinger
Ari Schlesinger illuminates a unique path of social responsibility carved through the tech world, using feminism as a guide while bearing attacks, criticism, and contortion. That trail led Ari to ask how programming languages shape society and, eventually, to research Elm—the compiler, error messages, and community.
Elm Town 90 – Wonder: Contorting yourself with Ari Schlesinger:
* https://elm.town/episodes/elm-town-90-wonder-contorting-yourself-with-ari-schlesinger
* https://youtu.be/BWUL2WdAHsA
https://redd.it/1tmq63f
@reddit_elm
Ari Schlesinger illuminates a unique path of social responsibility carved through the tech world, using feminism as a guide while bearing attacks, criticism, and contortion. That trail led Ari to ask how programming languages shape society and, eventually, to research Elm—the compiler, error messages, and community.
Elm Town 90 – Wonder: Contorting yourself with Ari Schlesinger:
* https://elm.town/episodes/elm-town-90-wonder-contorting-yourself-with-ari-schlesinger
* https://youtu.be/BWUL2WdAHsA
https://redd.it/1tmq63f
@reddit_elm
Elm Town
Elm Town 90 – Wonder: Contorting yourself with Ari Schlesinger
Ari Schlesinger illuminates a unique path of social responsibility carved through the tech world, using feminism as a guide while bearing attacks, criticism, and contortion. That trail led Ari to ask how programming languages shape society and, eventually…
codimg: the code block is the URL · cekrem.github.io
https://cekrem.github.io/posts/codimg/
https://redd.it/1tuqgmo
@reddit_elm
https://cekrem.github.io/posts/codimg/
https://redd.it/1tuqgmo
@reddit_elm
cekrem.github.io
codimg: the code block is the URL
Webflow mangles code blocks, so I made a little Go + Elm tool that renders them as SVG instead. The fun part: there's no database -- your code lives, compressed, inside the image URL.
Native Elm (the real kind this time) · cekrem.github.io
https://cekrem.github.io/posts/native-elm/
https://redd.it/1u1smsp
@reddit_elm
https://cekrem.github.io/posts/native-elm/
https://redd.it/1u1smsp
@reddit_elm
cekrem.github.io
Native Elm (the real kind this time)
elm-run compiles Elm to actual native binaries. And The Elm Architecture shines bright as ever! I built a simple `fetch` to try it out.
Explaining Functional Programming to Non-Programmers (It's Just Excel) · cekrem.github.io
https://cekrem.github.io/posts/explaining-functional-programming-to-non-programmers/
https://redd.it/1u6o36w
@reddit_elm
https://cekrem.github.io/posts/explaining-functional-programming-to-non-programmers/
https://redd.it/1u6o36w
@reddit_elm
cekrem.github.io
Explaining Functional Programming to Non-Programmers (It's Just Excel)
A colleague asked whether functional programming means writing the code yourself instead of letting Claude do it. The real answer was sitting in a spreadsheet the whole time — and the man who co-created Haskell agrees.
A batch job, in The Elm Architecture
https://cekrem.github.io/posts/elm-run-batch-job/
https://redd.it/1uebmlp
@reddit_elm
https://cekrem.github.io/posts/elm-run-batch-job/
https://redd.it/1uebmlp
@reddit_elm
cekrem.github.io
A batch job, in The Elm Architecture
Last time I built an 80-line native fetch with elm-run. This time I'm pushing it at real scale: a long-running batch where each item is a little railway-oriented state machine -- and the same Elm domain runs in the browser, on backend, and in the batch.