Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Solera is a small pure functional programming language. Its basic features:

  • HM + typeclasses
  • Algebraic data types
  • Tagless-final effects (planned)
  • Comptime (planned)
  • Mixfix operators (planned)

This basis is intended to be comfortable for the large majority of programmers familiar with the functional paradigm, whether coming from Rust, Haskell, Agda, Lean, etc. These features compose into a highly capable system, useful for hosting guest type systems as libraries within the language.

Comptime DSLs

Novel type systems are DSLs, built with ADTs and tagless-final, they are run at comptime allowing typechecking.

The resulting program is type-safe in both the Solera type system, and the guest type system.

 time --->                     COMPILE TIME ┊ RUNTIME
════════════════════════════════════════════╪════════════════════════════════════════
 Solera language                            ┊
 Guest type system as library               ┊
  |                    Guest language       ┊
  |                     |                   ┊
  V           (pass)    V          (pass)   ┊
 Solera type --------> Guest type --------> ┊ Run Solera code ---> Guest interpreter
 checker               checker              ┊                      (if any)
  |                     |                   ┊
  | (fail)              | (fail)            ┊   ╔════════════════════════════════╗
  V                     V                   ┊   ║ type-safe in BOTH type systems ║
 Solera type error     Guest type error     ┊   ╚════════════════════════════════╝