What is Egison?

Egison is a programming language with the strong expressive power of pattern-matching.
With Egison, we can express pattern-matching against a wide range of data types including multisets and sets.
For example, we can use pattern-matching to express poker hands, mahjong, and enumeration of twin primes.

Why the name is Egison?

The name Egi-son is given by the creator Satoshi Egi to make it clear that he (Egi) created that.

Why new language?

Implementation of the Egison pattern-matching has big influence for whole design of a programming language.
The patterns and the new notions matchers, which defines how to pattern-matching for each data type, have really important role as functions.
What was the best design changes by introducing this new pattern-matching.
Additionally, I had to do a lot of experiments to theorize it.

Tell me the history of Egison!

Please read this page!

What is a difference between logic programming?

Pattern-matching of Egison is realized with backtracking as Prolog.
The difference is that Egison realizes these strong expression in pattern-matching.
The pattern-matching itself of Prolog is similar with ordinal pattern-matching of the other functional languages.

There are a lot of existing work for pattern-matching.

The advantage of Egison is that it realizes all of the following features at the same time.

  • Modularization of the way of pattern-matching for each data type
  • Pattern-matching with multiple results (backtracking)
  • Non-linear pattern-matching

It enables us to express non-linear pattern-matching against non-free data types intuitively as above demonstrations.

Furthermore, Egison realizes the following feature. We can even modularize patterns like functions keeping above features.

  • Non-linear pattern-matching with lexical scoping

How to contribute?

Please try Egison and give me feedback.
If it is interesting for you, please talk and tweet about Egison.
What is the happiest thing for me is to read Egison code by the people with various backgrounds.
I believe Egison will be helpful and give breakthrough for the various fields.

I really appreciate if you could create the extensions for the other languages such as Haskell, Python and JavaScript.
I think these work will have great impact.
I'd like to do that by myself.
However, I don't have thorough knowledge of each language to implement extensions, yet.
I've already implemented the Ruby extension.

Next Action...

Back to Home