The Egel Programming Language
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bugs fixed array bug Jun 23, 2018
contrib small changes to OO Sep 14, 2017
examples Hacked a leaking . Jan 20, 2019
include small booleans encoding Sep 9, 2018
lib First tests on Unicode TCP transport. Jan 12, 2019
src Further hacks on eval. Jan 20, 2019
tests updated to new pattern syntax Mar 18, 2018
.gitignore added archive option to Makefile Aug 11, 2017
LICENSE.md MIT license Aug 6, 2017
NOTES.md Initial commit Apr 22, 2017
README.md Fedora system Mar 21, 2018
TODO.md added finities/nan to math Sep 10, 2017
VERSION.md Updated version. Jan 15, 2019
build.sh added directory combinator Apr 5, 2018
conf.mk start of filesystems combinators Apr 5, 2018
install.sh install to /usr/local/ Mar 27, 2018

README.md

The Egel Language

The Egel language is a simple untyped algebraic toy language based on eager combinator rewriting.

The interpreter defined here is aimed at automating small 'mathematical' tasks.

Installation

This interpreter is being developed on Linux and uses libicu for Unicode support. You need to have GCC/g++, the GNU compiler chain, and the development files for libicu installed. Most Linux package managers will provide that for you.

To compile the system run the build.sh script. That should give you an interpreter named egel in the src directory and a number of dynamically loadable Egel object files in the lib directory.

For a system-wide install run the install.sh script after a build as root. On a Fedora system..

If you don't want to do that, please note that you only need the interpreter named egel and all files in the include directory for simple tasks. You can set the environment variable EGEL_INCLUDE to point at the latter path.

A number of example scripts are provided in the examples directory. If you set up your system correctly, you can run any of them with the command egel example.eg.

Disclaimer

This is a hobby project, not the next big thing. The experiment is to see how far one can push an eager combinator rewriting implementation in idiomatic C++. Everything about the interpreter is experimental, and the result will likely be a very, and I mean very, slow interpreter.

This is the interpreter version v0.0, alpha, where I am in the process of simplifying the code and stamping out bugs.