The Egison Programming Language

- Express Intuition Directly with Essentially New Syntax -

Egison is a programming language that features extensible efficient non-linear pattern matching with backtracking for non-free data types.
We can directly represent pattern matching for a wide range of data types including lists, multisets, sets, trees, graphs, and mathematical expressions.
Egison makes programming dramatically simple!

Pattern-Match-Oriented

Egison proposes a new paradigm pattern-match-oriented. The combination of all of the following features enables intuitive powerful pattern matching.

  • Efficiency of the backtracking algoirthm for non-linear patterns
  • Extensibility of pattern matching
  • Polymorphisim in patterns

Egison Pattern-Matching Paper

Computer Algebra System

Egison allows programmers to use tensor index notation including the support for differential forms.
Egison introduces two types of parameters, scalar and tensor parameters, and a set of simple index reduction rules for that.

Demo: Riemann Curvature Tensor of `S^2` » Egison Tensor Paper

Online Demonstrations

Please try Egison's original features.

[2020/04/13] We've released Egison version 4.0.0!
[2019/12/02] Paper on pattern-match-oriented programming has been accepted to <Programming> 2020!
[2018/08/13] Paper on the design of Egison pattern matching has been accepted to APLAS 2018!

Papers on Egison

  1. Satoshi Egi and Yuichi Nishiwaki: Functional Programming in Pattern-Match-Oriented Programming Style, The Art, Science, and Engineering of Programming, 2020, Vol. 4, Issue 3, Article 7
  2. Satoshi Egi: Scheme Macros for Non-linear Pattern Matching with Backtracking for Non-free Data Types, The Scheme and Functional Programming Workshop 2019
  3. Satoshi Egi and Yuichi Nishiwaki: Non-linear Pattern Matching with Backtracking for Non-free Data Types, APLAS 2018 - Asian Symposium on Programming Languages and Systems
  4. Satoshi Egi: Loop Patterns: Extension of Kleene Star Operator for More Expressive Pattern Matching against Arbitrary Data Structures, The Scheme and Functional Programming Workshop 2018
  5. Satoshi Egi: Scalar and Tensor Parameters for Importing Tensor Index Notation including Einstein Summation Notation, The Scheme and Functional Programming Workshop 2017

Aims

We aim at intuitive representation of algorithms and formalization of human recognitions.
We believe this is the shortest way to the artificial intelligence.

Open-Source

Developed and maintained on GitHub by the community. License is MIT.

Haskell

Egison is written in Haskell and being distributed as a Hackage package.
Egison inherits a lot of features from Haskell.

Related Projects

Extending other languages to access Egison pattern matching!


Community

We have a mailing list!
Egison on Twitter, Google+, Facebook, GitHub, Rosseta Code, Hacker News, and Reddit. Please check them!


This website in other langauge: English, 日本語