Skip to content
/ eevo Public

eevolang/eevo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

555 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eevo script

Home | Try | Get | Tour | Features | Learn

eevo is a simple yet expressive high-level functional scripting language, an experiment in how simple a practical programming language can be.

A general-purpose language in the Lisp family, ideal for scripting, acting as an interactive shell, data/configuration files, or a scientific calculator. eevo's portable, simple design makes it easy to embed and extend, enabling integration into existing projects and straightforward use of established libraries. A highly modular core allows you to choose which parts of the language to include, or swap out components for alternate versions that better suit your needs. Even core features, such as the parser or evaluator, are customizable. Forget the boilerplate and needless ceremony: focus on the what, and let eevo handle the how.

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

fib 25  ; = 46368

Warning

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

Install

Interpreter

eevo provides a command line interpreter by default, found in main.c.

  • Dependencies:
    • C99 compiler
    • libc: C standard library
    • libdl: import static primitives and libraries at run-time
    • libm: math functions
    • GNU make: build system
    • xxd: build core.evo.h to include eevo core at compile time
  • Optional:
    • rlwrap (evo): more interactive REPL with readline support
    • markman: regenerate man pages from markdown

Modify config.mk to your liking, or leave it as is for default Unix-like systems.

$ git clone https://codeberg.org/eevo/eevo && cd eevo
$ make
$ sudo make install

Library

eevo can also be statically embedded as a library in other C programs with almost zero dependencies. Simply drop the amalgamated eevo0.2.c, eevo0.2.h, into your project to use the necessary functions for your program.

  • Dependencies:
    • C99 compiler
    • libc
    • libm
    • libdl
$ git clone https://codeberg.org/eevo/eevo && cd eevo
$ make
$ cp eevo0.2.c eevo0.2.h /path/to/your/project/

Usage

$ eevo
> def best-friend "Sisko"
> def (greet name) f"Hello, {name}!"
> map greet [best-friend "O'Brien" 'Quark]
["Hello, Sisko!"
 "Hello, O'Brien!"
 "Hello, Quark!"]
$ cat > fact.evo
def (factorial n)
  if (= n 1)
    1
    * n factorial((- n 1))
$ eevo fact.evo -e "(factorial 5)"
120

Contributing

All contributions are welcome! I am actively looking for collaborators to help with numerous ideas. Check out the help wanted for a list of potential projects, just reach out before embarking on any major work!

If you have any questions, suggestions, or find any bugs please open an issue.

The C code follows the suckless coding style. Commit messages should follow these general guidelines.

License

Zlib © Edryd van Bruggen

About

simple yet expressive high-level functional scripting language (formerly known as tisp) [MIRROR]

Topics

Resources

License

Stars

27 stars

Watchers

2 watching

Forks

Contributors

Languages