Balkrishna Rawool

Algebraic Data Types + Pattern Matching = Elegant and readable Java code

What if the compiler could guarantee your code handles every possible case? Learn how sealed types and pattern matching bring this power to modern Java.

Algebraic Data Types + Pattern Matching = Elegant and readable Java code
#1about 2 minutes

Introducing the 'SEND + MORE = MONEY' puzzle

A cryptarithmetic puzzle is presented where letters represent unique digits in a mathematical equation that must be solved.

#2about 3 minutes

Designing a solver and defining an expression grammar

A high-level solution is designed with a generator and evaluator, based on a grammar that defines expressions as constants, variables, additions, or multiplications.

#3about 4 minutes

Understanding algebraic data types and pattern matching in Java

Product types are implemented with records and sum types with sealed interfaces, which can then be deconstructed using pattern matching for `instanceof` and `switch`.

#4about 2 minutes

Modeling expressions as an algebraic data type

An expression is modeled as a sum type using a Java sealed interface with record implementations for constant, variable, addition, and multiplication.

#5about 3 minutes

Implementing an evaluation function with pattern matching

A static `evaluate` function uses a pattern matching switch expression to recursively calculate the value of an expression tree, ensuring compile-time safety.

#6about 8 minutes

Building the puzzle solver and constraints

The main puzzle solver logic is built by creating a sealed interface for constraints and using a generator to check all combinations against them.

#7about 4 minutes

Assembling and running the puzzle solution test

A unit test is created to assemble the puzzle's variables, expressions, and constraints, which is then run to find and verify the final solution.

#8about 1 minute

The pattern of data-oriented programming in Java

The combination of algebraic data types for data modeling and pattern matching for behavior is defined as data-oriented programming, a powerful pattern for writing readable code.

Related jobs
Jobs that call for the skills explored in this talk.

Software Engineer

tree-IT GmbH
Bad Neustadt an der Saale, Germany

Intermediate
Senior

Featured Partners

Related Articles

View all articles
BR
Benjamin Ruschin
What Developers Really Need to Create Great Code Demos
Every developer on earth has, at some point, had another developer to thank for a breakthrough, a success, an aha moment they wouldn’t have had without coming across that blog post, that open-source contribution, that reply on socials or that humble ...
What Developers Really Need to Create Great Code Demos
BB
Benedikt Bischof
Using Java 17 latest features in real world projects
Welcome to this issue of the WeAreDevelopers Live Talk series. This article recaps an interesting talk by Ron Veen who introduced the audience to some of the most interesting features that got added to the Java language.About the speaker:Ron is a hig...
Using Java 17 latest features in real world projects
DC
Daniel Cranney
The CODE100 2025 Final Puzzle Explained
Europe’s Ultimate Coding Competition is in the books for another year! With this in mind, we sat down with our 2025 CODE100 Champion, Nimrod Kor, to look back on how he solved the puzzle in the final round to secure victory. The Challenge Our final ...
The CODE100 2025 Final Puzzle Explained

From learning to earning

Jobs that call for the skills explored in this talk.

Java Architect

Java Architect

Paradigma Digital
Municipality of Vitoria-Gasteiz, Spain

API
Java
Azure
Kafka
Agile Methodologies
+2