I've experienced the 3 exciting moments developing the Egison programming language. Today, I'd like to write about them.
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.
The second moment is when I succeeded in running the program that enumerates all twin primes with pattern-matching against the infinite prime numbers list.
Do you think the following code is beautiful? We had needed some new ideas to run the following code.
The third moment is when I succeeded in running the program that determines whether a mahjong hand is finished or not.
Modularization of patterns keeping lexical scoping was really difficult.
When I got an idea of pattern-functions that only take patterns and return a pattern and succeeded in designing the pattern modularization mechanism, I really felt I've achieved my second historical work.
Creating a new programming language with new syntax that simplifies programs essentially is one of the most interesting work in Computer Science.
I created Egison to create AI that automatically build mathematical theories and generate programs.
The next exciting moment will be the moment I achieve this work.