https://elo-lang.org/ Elo Home Try Learn Chapters 1. Introduction 2. Extended Arithmetics 3. Data Structures 4. Functions 5. Program Structure 6. Advanced Processing 7. Input Data 8. Data Validation 9. Guards Exercises Build a Greeting Product Total Text Transform Rectangle Area Filter and Double Order Total Validate Data Guard Input Use Cases Form Validation Order Processing Subscription Logic Reference Core Types Literals Type Selectors Operators Tuples Lists Lambdas Expressions Variables Conditionals Range Membership Data Data Selector Input Data Data Paths Data Schemas Data Formats Robustness Assertions Guards Get Started Installation JavaScript API Command Line Stdlib Type Selectors Any Date DateTime Duration List Numeric String Tuple (Data) Blog About Security The Elo Language A simple, well-designed, portable, and safe data expression language Elo compiles to JavaScript, Ruby, and SQL. Built for No-Code tools where non-technical users need to manipulate data easily and safely. Try it now Get started = Simple by Design A pure data language: everything is a value, no reference semantics, no new. One equality operator that just works. Designed to be safe for non-technical users. 3x Truly Portable One expression compiles to semantically equivalent JavaScript, Ruby, and SQL. Frontend, backend, and database all speak the same data language. {} Built for Real Data First-class dates, times, and durations with intuitive syntax. Data schemas that validate and coerce input. Business logic that just works, everywhere. What Makes Elo Different Built for real-world data problems, Elo brings powerful features in a simple syntax let signup = D2024-06-15 in TODAY > signup + P30D First-Class Dates & Durations Dates, times, and durations are native types with intuitive literal syntax. Add 30 days to a date? Just write + P30D. No parsing, no conversion, no library imports. let Event = { name: String, date: Datetime, capacity: Int(c | c > 0) } in _ |> Event Data Schemas That Work Turn untrusted input into safe, validated data. Elo coerces and checks everything so your code always runs on data you can trust. _ |> filter(i ~> i.price > 100) |> map(i ~> i.price * 1.21) |> reduce(0, fn(a, b ~> a + b)) Functional & Portable Pipeline operators, lambdas, and a comprehensive standard library. Write once, compile to JavaScript, Ruby, and SQL--same semantics everywhere. guard positive: _.age > 0, adult: _.age >= 18 in 'Welcome!' Guards for Safe Reasoning Validate assumptions at runtime with labeled guards. Make your logic explicit, fail fast on invalid data, and reason confidently about what your code guarantees. orders |> restrict(o ~> o.status == 'pending') |> extend({total: o ~> o.qty * o.price}) |> project([.customer, .total]) Coming Soon: Relational Algebra Inspired by Tutorial D and powered by Bmg, Elo will bring true relational algebra to your data pipelines. Query, join, and aggregate--all with portable semantics. See more practical applications in the Use Cases section. One Expression, Three Targets Elo compiles to idiomatic code in each target language Elo 2 ^ 10 > 1000 and TODAY >= SOY JavaScript Math.pow(2, 10) > 1000 && DateTime.now().startOf('day') >= DateTime.now().startOf('year') Ruby 2 ** 10 > 1000 && Date.today >= Date.today.beginning_of_year SQL POWER(2, 10) > 1000 AND CURRENT_DATE >= DATE_TRUNC('year', CURRENT_DATE) Ready to try Elo? Jump into the playground and start writing temporal expressions that just work. Open Playground New to Programming? Elo is designed to be your friendly first step into coding. No scary jargon, no confusing concepts--just simple ideas explained clearly. Learn about numbers, text, dates, decisions, and more--at your own pace. Start Learning - Brought to You by B Bernard Lambeau Designer & Supervisor 25 years of language design at Enspirit + AI Claude Code Co-designer & Implementer Every line of code, tests, and docs Learn more about the project - Elo is open-source under the MIT License View on GitHub * Enspirit * Klaro Cards