Egison Blog

APLAS 2018 Presentation: Non-linear Pattern Matching with Backtracking for Non-free Data Types

Dec 3, 2018

At APLAS 2018, we made a paper presentation on Egison pattern matching system. The following are our slides and script. We can download our paper from Springer and arXiv.


Good morning everybody. Thank you for inviting us today. I am happy to be here. Today, I'd like to talk about our new pattern-matching system for non-free data types.

Read this article...

Egison Presentation for Rakuten Technology Conference 2017

Oct 31, 2017

In RTC 2017, I made a presentation on Egison. The following are slides and script for that.


Hello, everybody! Thank you for coming my session.

Today, let me introduce my programming language Egison by showing its features that are useful for describing calculations in Riemannian Geometry.

Read this article...

Egison Presentation for the Scheme and Functional Programming Workshop 2017

Sep 16, 2017

In the Scheme and Functional Programming Workshop 2017, I made a presentation on a new feature of Egison. The following are my slides and script. We can download my paper from arXiv.


Hello everybody. I am happy to be here. Thank you for inviting me. Today, I’d like talk about my method for importing tensor index notation including Einstein summation notation into programming languages.

Read this article...

Egison Presentation for Rakuten Technology Conference 2015

Nov 21, 2015

In RTC 2015, Matz and I gave a presentation on the thought behind the creation of programming languages together! The following slides and script are my part. We can see the video of our session on YouTube.


Today, I’ll make a presentation on the thought behind the creation of Egison. Here is the slides and script for that.

Read this article...

Solve Project Euler in Egison

Jul 2, 2015

Solutions of Project Euler's problems in Egison are interesting demonstrations of Egison.
I have been sometimes writing solutions for these problems.
Actually, some problems helped me to find new ideas or fix performance issues in Egison.

Setting Up Environment

We have prepared the utility libraries to solve Project Euler.
We can install them with the following commands.

% mkdir $HOME/egison-libs
% cd $HOME/egison-libs
% git clone
% cd project-euler
% ./
% cd ..
% git clone
% cd prime-numbers
% ./

The usage of these libraries are in the following pages.

Read this article...

Software Japan Award Ceremony

February 12, 2015

I have received Software Japan Award for my work on Egison from IPSJ, the biggest Japanese academic society of Computer Science! Last week, I made a speech as Software Japan Award Ceremony. Let me share the photos taken by my colleagues and IPSJ.

The Next Goal

My next goal is to make Egison popular among the researchers of programming globally. It is necessary to proceed to the next step. I will work hard to write good documentations (especially papers) for this goal.

I will be happy if you are looking forward to it!

Egison Presentation at RubyKaigi 2014

Sep 21, 2014

I have made a presentation at RubyKaigi 2014 on Sep 18. Today, I will write about that.

Ruby Egison from Rakuten, Inc

We can view my presentation abstract here.

Fortunately, the reaction of audience was very good. I talked to and was talked to by many Rubyist. It was a very good experience for me. We can see the reaction of audience on Twitter at this togetter page.

I was asked "How long does it take to learn Egison?" by Koichi Sasada after my presentation. I would like to write here a clear answer for that.

To learn to use just pattern-matching of Egison, I think people who can already write programs will need just an hour. To understand the mechanism and the theory behind Egison pattern-matching, I think people who already know the theory of functional languages will need 3 hours and people who don't know that will need 20 hours.

I have implemented the gem to spread Egison pattern-matching to more people. I believe it is not so difficult and don't want to make people hesitate to learn it.

Finally, I would like to thank staffs and everyone at RubyKaigi. I had a very great time!

The 3 Exciting Moments Developing Egison

Aug 26 2014

I've experienced the 3 exciting moments developing the Egison programming language. Today, I'd like to write about them.

The First Moment - Pattern Matching against Multisets

The first moment is when I succeeded in running the program that determines poker hands.

I thought the lack of intuitive representation to express pattern-matching against non-free data types such as multisets and sets is the biggest hole of the existing programming languages. To fill this hole, I've started the design and development of Egison.

When I succeeded in running the following code, I really felt that I achieved historical work! It took a whole year to design syntax and mechanism to express and execute the following code.

Read this article...

Evolution of Egison Website in This 8 Months

Aug 21, 2014

I have focused on the update of design of Egison website in this half year.
Today, let me look back it.

January 2014

It was a very simple website. I have started the renewal of the Egison website from January.

Read this article...

The Ruby Gem for Ultra Super Pattern Matching

June 16, 2014

I've implemented a Ruby Gem that provides the ultra super pattern-matching to Ruby. We can directly express non-linear pattern-matching against lists, multisets, and sets using this gem. Today, I'd like introduce the power of this gem.

This is open source software. You can access the source code on GitHub.

Read this article...

The 6 Programming Languages Interesting to Try

May 21, 2014

Today, I'd like to introduce the six programming languages that I think interesting to try.


Haskell is a purely functional programming language with a static type system. Haskell is designed by the famous researchers in the field of programming languages. We can learn a lot of things about the theory of programming languages from its design. Haskell has many great users and great libraries.

The only problem of Haskell is it is too hard to start to use for many people. We need to learn many abstract notions from the theory of programming languages.

However, its expressive power is really great. I think Haskell is the best choice when going to implement software with entirely new concepts.


Coq is a proof assistant. It provides a language to write proofs on computers and a checker to certify its correctness. I think this field has definitely a promising future.

What I think a problem of Coq is proofs written in Coq are not intuitive. We can't intuitively express propositions and proofs of elementary mathematics that we learn in junior high school. I'm thinking that I'd like to create a language to represent proofs intuitively in future.


Erlang is very useful to implement distributed software. Actually, I'm contributing the development of LeoFS, a distributed object storage developing in RIT and writing Erlang every day from Monday to Friday. Erlang helps us to implement software with high scalability and high availability so much.

Recently, the programming language Elixer and Lisp Flavored Erlang are getting popular. These languages provide Erlang features with different syntax.


Elm is a functional reactive programming language. We can write reactive programs very easily. If you visit the following page, you'll find Elm interesting immediately.

I've played with it by tring to enable Mario to jump higher, to jump multiple times, to walk faster and so on. It's purely interesting!


Viscuit is a visual programming language. An interesting point of Viscuit is it really has a completely different paradigm as a visual programming language. What we do for Viscuit programming is only to draw pictures. We draw two pictures to describes how figures changes in the next moment on the board. The figures in the first picture changes to the figures in the second picture in the next moment.

We can view many video demonstrations. You can quickly get the concept of Viscuit if you see one of them.


Egison is the programming language that I've been developing. With Egison, we can directly represent pattern-matching against lists, multisets, sets, trees, graphs and so on. I hope this language's feature become a standard feature that all languages provide.

Please check the following online demonstrations.

Evolution of Programming Languages

May 12, 2014

Today, I'd like to write my perspective of programming languages. First of all, the figure below is my mind map on programming languages.

I think there are three aspects to evaluate programming languages. The first is mathematical abstraction. It enables us to write algorithms directly. The second is computer abstraction. It enables us to control computers directly. The last is human understandability. It enables us to learn and use the language easily.

As you know, I'm currently focusing on mathematical abstraction of programming languages and created Egison. I thought abstraction of data deconstruction is the biggest hole of the existing theory of programming languages.

Egison is pioneering the area in the figure below.

Egison is the first language that realizes all features in the area of the figure above. I believe that the impact of this contribution has as great in the history of programming languages as other historical abstractions such as high-order functions from Lisp and Scheme and automatic type inferences from ML.

My Aim - Thought on Artificial Intelligence

The essential difference between humans and computers is that reasoning itself is a subject of observation for humans.

Reasoning is an inborn ability for humans. All humans can reason though it is not clear what reasoning is. No one grasps the rules of reasoning completely for now. If there were such people, all problems are just a calculation for them. Only clues to grasp the rules of reasoning available are reasoning we did. Humans can gather clues from their reasoning and deepen the understanding of reasoning. It enables humans to get new ideas never imagined.

We need to implement the system that do above things to realize artificial intelligence. It is very difficult. The programmer who implement it has to grasp all rules of reasoning. Some people may say that we can simulate our brain from the neuron level and realize artificial intelligence. However, if such a simulation is implemented, we can grasp how the simulation program generates the artificial intelligence entirely. This is because all parts of computer programs are formally understandable unlike human’s mind.

What I would like to say is that there are no ways to realize artificial intelligence but for to grasp the rules of reasoning one by one. And then, all results of artificial intelligence must give us great insight about how we should reason. Keeping these ideas in mind, I am researching every day aiming to build the ultimate theory.

This website in other langauge: English, 日本語