eevo script

Everything should be as simple as possible, but not simpler

eevo is a lightweight yet expressive high-level scripting language for data-driven programming. Centered around functional records, many ideas are unified into a single model, enabling concise, modern, and hackable code.

def fib(n)
  "Fibonacci number of n"
  if n < 2
    n
    fib(n - 1) + fib(n - 2)

fib 25  ; = 46368

A lightweight modular core allows you to choose how much of the language you need. This comes in a few layers:

While eevo is a general purpose programming language, that does not mean it is the best tool for every problem. Like all languages, eevo has many design decisions which have different trade-offs in different situations. To solve problems that are ill-suited to eevo’s design (such as requiring circular references or precise mutations) other languages can be called upon through C-bindings (and soon WASM).

This interoperability also makes it easy to offload computationally heavy code to another language or gradually replace existing code with concise scripts. This enables a dual approach which make eevo a great glue language to bridge languages in two directions:

Both methods can be done at the same time with different languages, allowing eevo to glue different libraries, ecosystems, and tools together.

Warning

eevo is still in active development and not yet stable. Until the v1.0 release expect breaking non-backwards compatible changes.

Features

High-level

Functional programming

Interactive

First Class Types

Records as universal type

Metaprogramming

Quoted expressions

Literate Programming

Tail call optimization

Dyslexic friendly

See the language manual for complete set of features.

Anti-Features

Just like jazz, what is missing is often more important:

No mutability

No dependencies (eg LLVM)

No statements

No keywords

No reader macros

No exceptions

No multiple return values

No explicit return

No arrays, linked lists, or tuples

No function currying

No garbage collector

No build systems

No mandatory editor tools

Coming Soon…

Automatic reference counting memory management

Strong static typing with type inference

Batteries included standard library

Powerful string interpolation

WebAssembly compiler

Interoperability with any programming language with C bindings

First class algebraic pattern matching

Improved error messages

Environmental image

Hygienic macros

Multithreading

Managed effects

Full Unicode support

Optimizations