AstonJ

AstonJ

The Hamler Programming Language

Another BEAM language…

The Hamler Programming Language

Hamler is a strongly-typed language with compile-time typechecking and built-in support for concurrency and distribution.

Hamler empowers industries to build the next generation of scalable, reliable, realtime applications, especially for 5G, IoT and edge computing.

Why Hamler?

For almost a decade, we have been developing software systems based on Erlang/OTP, especially our main product EMQ X - the scalable open-source MQTT broker. So, we have always believed that Erlang is a masterpiece of engineering. With amazing concurrency, distribution and fault tolerance, it is one of the few general-purpose language platforms able to properly handle concurrency and soft realtime.

However, from all the experience writing Erlang, we believe that the following features can help Erlang programmer better adapt to the coming wave of 5G, IoT and edge-programming and attract more people for using BEAM.

  • Compile-time type checking and type reference
  • ADTs, Function Composition, Type Classes
  • More friendly syntax for prosperous communities
  • Functor, Applicative and Monad…:slight_smile:

Now all the features are avaliable in the Hamler programming language.

Features

  • Functional programming
  • Haskell and ML style
  • ADT and Type Checking/Inference
  • Functions, higher-order functions
  • Currying and partial application
  • Pattern matching, and Guards
  • List comprehension
  • Applicative and Monad
  • Advanced module system
  • Built-in concurrency

Design

The Hamler source code is parsed to generate CST, then CoreErlang’s IR is generated after CST → AST → CoreFn’s syntax tree transformation, syntax analysis and type checking. The code is then used by the Erlang compiler to generate the final Beam bytecode.

The Hamler compiler architecture is shown below:

hamler-compiler

The Hamler 0.1 compiler was initially attempted to be implemented based on the GHC 8.10.1, but was later changed to adapt from Purescript Compiler 0.13.6’s

Link:

Most Liked

lpil

lpil

Creator of Gleam

I would be very interested to learn why they have created a new PureScript backend rather than using Purerl, the existing PureScript backend for Erlang.

From reading the compiler’s source code it seems the only new thing is the Erlang generation, so I would suggest this PureScript with a different name rather than a new language. Perhaps more changes are to come later.

Qqwy

Qqwy

Very interesting!

How does Hamler compare to Haskell, PureScript and e.g. Gleam?

It is currently based on the PureScript compiler. Does this mean that its syntax/semantics are (essentially) the same as PureScript (with changes in what is available in the standard library to e.g. support the BEAM VM’s features)? Or something else entirely?

How do Hamler datatypes compile down to Erlang’s built-in datatypes, and how easy is it to communicate (using e.g. a foreign-function-interface) with pre-existing Erlang/Elixir/etc. code?

Where Next?

Popular Backend topics Top

First poster: bot
Julia v1.5.2 has been released. Link: Release v1.5.2 · JuliaLang/julia · GitHub
New
bot
Kotlin v1.4.20-M1 has been released. Link: Release Kotlin 1.4.20-M1 · JetBrains/kotlin · GitHub
New
First poster: bot
Julia v1.6.0 has been released. Link: Release v1.6.0 · JuliaLang/julia · GitHub
New
First poster: bot
Node.js v14.19.0 has been released. Link: Release 2022-02-01, Version 14.19.0 'Fermium' (LTS), @richardlau · nodejs/node · GitHub
New
NewsBot
A new PostgreSQL blog post/announcement has been posted! Get the full details here: PostgreSQL: PostgreSQL JDBC 42.7.7 Security update ...
New
NewsBot
A new Rust blog post/announcement has been posted! Get the full details here: Announcing Rust 1.88.0 | Rust Blog
New
NewsBot
Node.js v24.5.0 and v22.18.0 has been released. Link: Release 2025-07-31, Version 24.5.0 (Current), @aduh95 · nodejs/node · GitHub Li...
New
NewsBot
A new PostgreSQL blog post/announcement has been posted! Get the full details here: PostgreSQL: PostgreSQL 17.6, 16.10, 15.14, 14.19, 1...
New
NewsBot
Node.js v25.0.0 has been released. Link: Release 2025-10-15, Version 25.0.0 (Current), @RafaelGSS · nodejs/node · GitHub
New
NewsBot
A new Rust blog post/announcement has been posted! Get the full details here: https://blog.rust-lang.org/2025/12/11/Rust-1.92.0/
New

Other popular topics Top

AstonJ
If it’s a mechanical keyboard, which switches do you have? Would you recommend it? Why? What will your next keyboard be? Pics always w...
New
siddhant3030
I’m thinking of buying a monitor that I can rotate to use as a vertical monitor? Also, I want to know if someone is using it for program...
New
AstonJ
Do the test and post your score :nerd_face: :keyboard: If possible, please add info such as the keyboard you’re using, the layout (Qw...
New
PragmaticBookshelf
Author Spotlight Jamis Buck @jamis This month, we have the pleasure of spotlighting author Jamis Buck, who has written Mazes for Prog...
New
PragmaticBookshelf
Author Spotlight: VM Brasseur @vmbrasseur We have a treat for you today! We turn the spotlight onto Open Source as we sit down with V...
New
First poster: bot
zig/http.zig at 7cf2cbb33ef34c1d211135f56d30fe23b6cacd42 · ziglang/zig. General-purpose programming language and toolchain for maintaini...
New
New
First poster: AstonJ
Jan | Rethink the Computer. Jan turns your computer into an AI machine by running LLMs locally on your computer. It’s a privacy-focus, l...
New
PragmaticBookshelf
Get the comprehensive, insider information you need for Rails 8 with the new edition of this award-winning classic. Sam Ruby @rubys ...
New
mindriot
Ok, well here are some thoughts and opinions on some of the ergonomic keyboards I have, I guess like mini review of each that I use enoug...
New