SlideShare a Scribd company logo
1 of 84
Download to read offline
The Pattern-Matching- 
Oriented Programming 
Language Egison 
- Express Intuition Directly with 
Essentially New Syntax - 
Vol.01䚷Oct/25/2014 
Satoshi Egi 
Rakuten Institute of Technology 
http://rit.rakuten.co.jp/
2 
Self-Introduction 
Name Satoshi Egi (Ụᮌ㻌⪽ᚿ) 
Association Rakuten Institute of Technology (ᴦኳᢏ⾡◊✲ᡤ) 
Education Majored in Computer Science at the University of 
Tokyo 
Interests Programming Languages, Automated Reasoning 
Website http://www.egison.org/~egi/
3 
What is Egison? 
Egison is a programming language that realizes 
non-linear pattern-matching even against data 
that have no standard form. 
Non-linear patterns allow multiple occurrences of same variables 
in a pattern 
Enumerate the elements of 
the collection ‘xs’ that appear 
more than twice 
(match-all xs (multiset integer)! 
[cons $x cons ,x _ x])! 
Egison 
pairs = []! 
(1..n).each do |i|! 
(i..n).each do |j|! 
if xs[i] == xs[j]! 
pairs = pairs +! 
xs[i]! 
end! 
end! 
end! 
Ruby
4 
Demonstration: Poker Hands
5 
Demonstration: Mahjong 
Two same tiles 
Three consecutive tiles 
Three same tiles 
Seven twins or one twin + four shuntsu or kohtsu
6 
Demonstration: Prime Numbers
7 
Motivation 
I have created Egison to represent human’s 
intuition directly. 
The word “intuitive” is often used in the meaning 
“easy to understand”. 
However intuition itself is not “intuitive” at all. 
Therefore, the direct representation of intuition is 
not easy for many people to understand at the 
beginning. 
䛂┤ឤⓗ䛃䛸䛔䛖ゝⴥ䛿䛂䜟䛛䜚䜔䛩䛔䛃䛸䛔䛖ព࿡䛷౑䜟䜜 
䜛䛣䛸䛜ከ䛔䛷䛩䛜䚸┤ឤ⮬య䛿඲䛟䛂┤ឤⓗ䛃䛺䜒䛾䛷䛿 
䛒䜚䜎䛫䜣䚹䛭䜜䜖䛘䛻䚸┤ឤ䛾┤᥋ⓗ䛺⾲⌧䛿ከ䛟䛾ே 
䛻䛸䛳䛶䚸᭱ึ䛿䜟䛛䜚䜔䛩䛟䛒䜚䜎䛫䜣䚹
8 
Motivation 
I have created Egison to represent human’s 
intuition directly. 
There are cases that we still need to translate our 
thoughts for computers. 
By discovering such cases, analyzing our intuition, 
and finding their direct representation, I have 
created a new programming language Egison. 
ே㛫䛾⪃䛘䜢䝁䞁䝢䝳䞊䝍ྥ䛡䛻⩻ヂ䛧䛶グ㏙䛫䛽䜀䛺䜙 
䛺䛔ሙ㠃䛿ᮍ䛰䛻䛒䜚䜎䛩䚹䛭䛾䜘䛖䛺ሙ㠃䜢ぢ䛴䛡䚸⮬ 
㌟䛾┤ឤ䜢ศᯒ䛧䚸䛭䛾┤᥋ⓗ䛺⾲⌧䜢ぢฟ䛩䛣䛸䛻䜘䜚䚸 
⚾䛿᪂䛧䛔䝥䝻䜾䝷䝭䞁䜾ゝㄒEgison䜢స䜛䛻⮳䜚䜎䛧䛯䚹
9 
Profile of Egison 
Egison is open-source software maintained on GitHub. 
https://github.com/egison/egison 
Paradigm Pattern-matching-oriented, 
Purely functional 
Author Satoshi Egi 
License MIT 
Version 3.3.12 (2014/10/25) 
First Released 2011/5/24 
Filename Extension .egi 
Implemented in Haskell (about 3,800 lines)
10 
Website – Everything about Egison is Here
11 
Table of Contents 
1. Concept of Egison (15 minutes) 
2. Play with Egison (5 minutes) 
3. Current Status (5 minutes) 
4. Future Plan (5 minutes)
12 
The Concept of Egison
13 
The ‘match-all’ Expression 
Meaning: Pattern match against “{1 2 3}” as a 
“list of integers” with the pattern 
“cons $x $xs” and return all results of pattern 
matching.
14 
Matchers 
A matcher specifies the way of pattern-matching.
15 
Matchers 
A matcher specifies the way of pattern-matching.
16 
The ‘cons’ Pattern 
The pattern constructor ‘cons’ divides a collection 
into an element and the rest.
17 
The ‘cons’ Pattern 
The pattern constructor ‘cons’ divides a collection 
into an element and the rest.
18 
Pattern-Matching with Multiple Results 
We can handle pattern-matching with multiple results.
19 
The Nested ‘cons’ Pattern 
We can extract two elements from a collection with the 
nested cons pattern.
20 
The ‘join’ Pattern 
The pattern constructor ‘join’ divides a collection into 
two collections.
21 
Non-Linear Patterns 
Patterns that have ‘,’ ahead are called value-patterns. 
The equality is checked for a value-pattern.
22 
Non-Linear Patterns 
Patterns that have ‘,’ ahead are called value-patterns. 
The equality is checked for a value-pattern. 
Same number with $x
23 
Demonstration: Poker Hands
24 
Demonstration: Poker Hands 
Pattern for straight flash
25 
Demonstration: Poker Hands 
Match as a set of cards 
Pattern for straight flash
26 
The Pattern for Straight Flush
27 
The Pattern for Straight Flush 
Same suit with $s
Numbers are serial from $n 
28 
The Pattern for Straight Flush 
Same suit with $s
Numbers are serial from $n 
29 
The Pattern for Straight Flush 
Same suit with $s 
We can write any expression after ‘,’
30 
Demonstration: Poker Hands 
Pattern for two pair
31 
The Pattern for Two Pair
32 
The Pattern for Two Pair 
Matches with any suit 
Matches with any card
33 
The Pattern for Two Pair 
Same number with $m 
Same number with $n 
Matches with any suit 
Matches with any card
34 
The Pattern for Two Pair 
Same number with $m 
Same number with $n 
Matches with any suit 
Matches with any card 
Non-linear patterns have very strong power
35 
Demonstration: Poker Hands 
Non-linear patterns enables to 
represent all hands in a single pattern
36 
Demonstration: Poker Hands 
Egisonists can write this 
code in 2 minutes! 
Non-linear patterns enables to 
represent all hands in a single pattern
37 
Java Version 
Just finding a pair of cards is already complex. 
public static boolean hasPair(Card[] cards) {! 
for (int i = 0; i = 4 ;i++) { ! 
for (int j = i + 1 ; j = 4 ; j++) {! 
if (cards[i] == (cards[j])) { ! 
return true;! 
}! 
return false;! 
} ! 
}! 
}! 
I found a poker-hand evaluator in Java more than 
200 lines of code. 
http://www.codeproject.com/Articles/38821/Make-a-poker-hand-evalutator-in-Java
38 
Pattern-Matching with Infinite Results 
We can handle pattern-matching with infinite results.
39 
Demonstration: Prime Numbers
40 
Pattern-Matching against Nested Data Types 
We can pattern-match against nested data types such 
as lists of sets and sets and sets.
41 
Pattern Modularization with Lexical Scope 
We can modularize patterns with pattern-functions, 
functions that receive patterns and return a pattern.
42 
Pattern Modularization with Lexical Scope 
A pattern-function has lexical scoping, patterns can be 
reused in a program without worry of name clash.
43 
Demonstration: Mahjong
44 
Demonstration: Mahjong 
Two same tiles 
Three consecutive tiles 
Three same tiles
45 
Demonstration: Mahjong 
Two same tiles 
Three consecutive tiles 
Three same tiles 
Seven twins or one twin + four shuntsu or kohtsu
46 
Demonstration: Mahjong 
Two same tiles 
Three consecutive tiles 
Three same tiles 
Seven twins or one twin + four shuntsu or kohtsu 
Pattern modularization makes 
programming more simple!
47 
Play with Egison
48 
Collections
49 
Infinite Collections
50 
Pattern Matching against Infinite Collections 
Pattern matching against an infinite collection
51 
Twin Prime Code on Homepage of Egison
52 
Current Status
53 
Egison Website
54 
Online Tutorial
55 
Online Demonstrations
56 
Egison on an Online Media
57 
Egison on Hacker News 
Egison was actively discussed 
on Hacker News twice!
58 
Egison Article on CodeIQ MAGAZINE
59 
Egison will be Taught at the University of Tokyo by 
Prof. Hagiya 
Egison will have a big impact 
on the academic world, too!
60 
Access Map of the Website in Last Half Year 
(2014/4/23 – 2014/10/23) 
Total session is 15,228
61 
Growth of Community in This Year (2013/11/15 – 2014/10/25) 
• Mailing List Members 
• Before: 12 – Only my friends 
• Current: 23 – Communicating in English 
• Stargazers on GitHub 
• Before: 12 – Only my friends 
• Current: 242 – People from all over the world!
62 
Extending Other Languages
63 
Poker Hands Analyzer in Ruby
64 
Public Response to Ruby Extension 
10,466 views, 186 Hatena Bookmarks!
65 
RubyKaigi 2014 
Recently presented at 
RubyKaigi 2014!
66 
Future Plans 
- Applications in the Real World -
67 
Wide Range of Applications 
• Daily programming 
• Can express complex tasks simply 
• Data access and analysis 
• Work as the most elegant query language 
• Can access the wide range of data types in a 
unified way 
• Natural language processing, Image 
processing 
• Can handle complex structures intuitively as 
humans do in their mind 
• AI (Mathematical expression handling) 
• Can handle various mathematical and abstract 
notions directly
68 
Wide Range of Applications 
• Daily programming 
• Can express complex tasks simply 
• Data access and analysis 
• Work as the most elegant query language 
• Can access the wide range of data types in a 
unified way 
• Natural language processing, Image 
processing 
• Can handle complex structures intuitively as 
humans do in their mind 
• AI (Mathematical expression handling) 
• Can handle various mathematical and abstract 
notions directly
69 
Ideas of Software 
• Command line text editor 
• Command line text editor that uses Egison 
pattern-matching instead of regular expressions 
• Chart analytics tool 
• Find patterns in charts (e.g. technical analysis of 
the financial markets) 
• In-memory database with Egison query 
• Can access the wide range of data types in a 
unified way 
• SQL database client 
• Extract data using simple pattern-matching 
expressions instead of SQL
70 
Wide Range of Applications 
• Daily programming 
• Can express complex tasks simply 
• Data access and analysis 
• Work as the most elegant query language 
• Can access the wide range of data types in a 
unified way 
• Natural language processing, Image 
processing 
• Can handle complex structures intuitively as 
humans do in their mind 
• AI (Mathematical expression handling) 
• Can handle various mathematical and abstract 
notions directly
71 
Query Example 
• Let’s consider a query that returns twitter 
users who are followed by “__Egi” but not 
follow back “__Egi” 
User: 
id integer 
name string 
Follow: 
from_id integer 
to_id Integer
72 
SQL Version 
• Complex and difficult to understand 
• Complex where clause contains “NOT EXIST” 
• Subquery
73 
Egison Version 
• Very Simple 
• No where clauses 
• No subquery
74 
Egison Version 
• Very Simple 
• No where clauses 
• No subquery 
Joining 4 tables 
1. Get id of “__Egi” 
2. Followed by ‘uid’ 
not 3. But not follow back 
4. Get name of ‘fid’ 
Return the results
75 
GUI Frontend 
• We can provide GUI for intuitive data 
access 
• Data access for even non-engineers 
• Engineers can concentrate on data analysis
76 
Database in the Next Age 
In the future, databases 
will be embedded and 
hidden in programming 
languages. 
We will be able to handle 
databases directly and 
easily just as arrays and 
hashes in existing 
languages. 
The pattern-matching of Egison will play a 
critical role for this future.
77 
Wide Range of Applications 
• Daily programming 
• Can express complex tasks simply 
• Data access and analysis 
• Work as the most elegant query language 
• Can access the wide range of data types in a 
unified way 
• Natural language processing, Image 
processing 
• Can handle complex structures intuitively as 
humans do in their mind 
• AI (Mathematical expression handling) 
• Can handle various mathematical and abstract 
notions directly
78 
Wide Range of Applications 
• Daily programming 
• Can express complex tasks simply 
• Data access and analysis 
• Work as the most elegant query language 
• Can access the wide range of data types in a 
unified way 
• Natural language processing 
• Programs that find interesting things 
• Programs that build math theories 
• Programs that generate programs 
• Can handle complex structures intuitively as 
humans do in their mind 
• AI (Mathematical expression handling) 
• Can handle various mathematical and abstract 
notions directly
79 
My Mind Map on Programming Language
80 
My Mind Map on Programming Language
81 
My Mind Map on Programming Language 
Egison is pioneering this field!
Egison (current) 
Egison next version 
82 
Improve Egison as the Programming Language 
I am aiming to make Egison the perfect 
programming language. 
Function modularity 
Lisp (before Scheme) 
Scheme 
ML, OCaml, Haskell 
Type system Pattern matching 
Function modularity 
Type system Pattern matching
Egison (current) 
Egison next version 
83 
Improve Egison as the Programming Language 
I am aiming to make Egison the perfect 
programming language. 
Function modularity 
Lisp (before Scheme) 
Scheme 
ML, OCaml, Haskell 
Type system Pattern matching 
Function modularity 
Type system Pattern matching
84 
Thank you! 
Please visit our website! 
http://www.egison.org 
Follow us in Twitter @Egison_Lang 
Let’s talk and collaborate with us! 
satoshi.egi@mail.rakuten.com

More Related Content

Similar to [Rakuten TechConf2014] [D-2] The Pattern-Matching-Oriented Programming Language Egison

Evolving as a professional software developer
Evolving as a professional software developerEvolving as a professional software developer
Evolving as a professional software developerAnton Kirillov
 
Вредные советы .NET разработчикам, Сергей Калинец
Вредные советы .NET разработчикам, Сергей КалинецВредные советы .NET разработчикам, Сергей Калинец
Вредные советы .NET разработчикам, Сергей КалинецSigma Software
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to ElixirDiacode
 
MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...
MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...
MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...Dylan-Wu
 
Introducción a NLP (Natural Language Processing) en Azure
Introducción a NLP (Natural Language Processing) en AzureIntroducción a NLP (Natural Language Processing) en Azure
Introducción a NLP (Natural Language Processing) en AzurePlain Concepts
 
On being a professional software developer
On being a professional software developerOn being a professional software developer
On being a professional software developerAnton Kirillov
 
SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)
SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)
SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)ruthmcdavitt
 
Антон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLabАнтон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLabDiana Dymolazova
 
Generating Natural-Language Text with Neural Networks
Generating Natural-Language Text with Neural NetworksGenerating Natural-Language Text with Neural Networks
Generating Natural-Language Text with Neural NetworksJonathan Mugan
 
Souvenir's Booth - Algorithm Design and Analysis Project Project Report
Souvenir's Booth - Algorithm Design and Analysis Project Project ReportSouvenir's Booth - Algorithm Design and Analysis Project Project Report
Souvenir's Booth - Algorithm Design and Analysis Project Project ReportAkshit Arora
 
NLP Bootcamp 2018 : Representation Learning of text for NLP
NLP Bootcamp 2018 : Representation Learning of text for NLPNLP Bootcamp 2018 : Representation Learning of text for NLP
NLP Bootcamp 2018 : Representation Learning of text for NLPAnuj Gupta
 
Functional programming (Let's fall back in love with Programming)
Functional programming (Let's fall back in love with Programming)Functional programming (Let's fall back in love with Programming)
Functional programming (Let's fall back in love with Programming)Sudipta Mukherjee
 
Mastering Python lesson3b_for_loops
Mastering Python lesson3b_for_loopsMastering Python lesson3b_for_loops
Mastering Python lesson3b_for_loopsRuth Marvin
 
Four Languages From Forty Years Ago
Four Languages From Forty Years AgoFour Languages From Forty Years Ago
Four Languages From Forty Years AgoScott Wlaschin
 
[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile Apps[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile AppsUniversidad de los Andes
 
Design concerns for concrete syntax
Design concerns for concrete syntaxDesign concerns for concrete syntax
Design concerns for concrete syntaxMikhail Barash
 
The OpenRepGrid project – Software tools for the analysis and administration...
The OpenRepGrid project – Software tools  for the analysis and administration...The OpenRepGrid project – Software tools  for the analysis and administration...
The OpenRepGrid project – Software tools for the analysis and administration...Mark Heckmann
 

Similar to [Rakuten TechConf2014] [D-2] The Pattern-Matching-Oriented Programming Language Egison (20)

Evolving as a professional software developer
Evolving as a professional software developerEvolving as a professional software developer
Evolving as a professional software developer
 
Вредные советы .NET разработчикам, Сергей Калинец
Вредные советы .NET разработчикам, Сергей КалинецВредные советы .NET разработчикам, Сергей Калинец
Вредные советы .NET разработчикам, Сергей Калинец
 
Intro to python
Intro to pythonIntro to python
Intro to python
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
 
MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...
MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...
MITx 6.00.1x Introduction to Computer Science and Programming Using Python - ...
 
Introducción a NLP (Natural Language Processing) en Azure
Introducción a NLP (Natural Language Processing) en AzureIntroducción a NLP (Natural Language Processing) en Azure
Introducción a NLP (Natural Language Processing) en Azure
 
On being a professional software developer
On being a professional software developerOn being a professional software developer
On being a professional software developer
 
SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)
SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)
SoTWLG Intro to Code Bootcamps 2016 (Roger Nesbitt)
 
FULL DOCUMENT.docx
FULL DOCUMENT.docxFULL DOCUMENT.docx
FULL DOCUMENT.docx
 
Антон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLabАнтон Кириллов, ZeptoLab
Антон Кириллов, ZeptoLab
 
Generating Natural-Language Text with Neural Networks
Generating Natural-Language Text with Neural NetworksGenerating Natural-Language Text with Neural Networks
Generating Natural-Language Text with Neural Networks
 
Souvenir's Booth - Algorithm Design and Analysis Project Project Report
Souvenir's Booth - Algorithm Design and Analysis Project Project ReportSouvenir's Booth - Algorithm Design and Analysis Project Project Report
Souvenir's Booth - Algorithm Design and Analysis Project Project Report
 
NLP Bootcamp 2018 : Representation Learning of text for NLP
NLP Bootcamp 2018 : Representation Learning of text for NLPNLP Bootcamp 2018 : Representation Learning of text for NLP
NLP Bootcamp 2018 : Representation Learning of text for NLP
 
Functional programming (Let's fall back in love with Programming)
Functional programming (Let's fall back in love with Programming)Functional programming (Let's fall back in love with Programming)
Functional programming (Let's fall back in love with Programming)
 
Mastering Python lesson3b_for_loops
Mastering Python lesson3b_for_loopsMastering Python lesson3b_for_loops
Mastering Python lesson3b_for_loops
 
Four Languages From Forty Years Ago
Four Languages From Forty Years AgoFour Languages From Forty Years Ago
Four Languages From Forty Years Ago
 
[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile Apps[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile Apps
 
Design concerns for concrete syntax
Design concerns for concrete syntaxDesign concerns for concrete syntax
Design concerns for concrete syntax
 
The OpenRepGrid project – Software tools for the analysis and administration...
The OpenRepGrid project – Software tools  for the analysis and administration...The OpenRepGrid project – Software tools  for the analysis and administration...
The OpenRepGrid project – Software tools for the analysis and administration...
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 

More from Rakuten Group, Inc.

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話Rakuten Group, Inc.
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のりRakuten Group, Inc.
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Rakuten Group, Inc.
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みRakuten Group, Inc.
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開Rakuten Group, Inc.
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用Rakuten Group, Inc.
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャーRakuten Group, Inc.
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割Rakuten Group, Inc.
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Group, Inc.
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfRakuten Group, Inc.
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfRakuten Group, Inc.
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfRakuten Group, Inc.
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfRakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoRakuten Group, Inc.
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoRakuten Group, Inc.
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technologyRakuten Group, Inc.
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情Rakuten Group, Inc.
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャーRakuten Group, Inc.
 

More from Rakuten Group, Inc. (20)

コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり
 
What Makes Software Green?
What Makes Software Green?What Makes Software Green?
What Makes Software Green?
 
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
Simple and Effective Knowledge-Driven Query Expansion for QA-Based Product At...
 
DataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組みDataSkillCultureを浸透させる楽天の取り組み
DataSkillCultureを浸透させる楽天の取り組み
 
大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開大規模なリアルタイム監視の導入と展開
大規模なリアルタイム監視の導入と展開
 
楽天における大規模データベースの運用
楽天における大規模データベースの運用楽天における大規模データベースの運用
楽天における大規模データベースの運用
 
楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー楽天サービスを支えるネットワークインフラストラクチャー
楽天サービスを支えるネットワークインフラストラクチャー
 
楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割楽天の規模とクラウドプラットフォーム統括部の役割
楽天の規模とクラウドプラットフォーム統括部の役割
 
Rakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdfRakuten Services and Infrastructure Team.pdf
Rakuten Services and Infrastructure Team.pdf
 
The Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdfThe Data Platform Administration Handling the 100 PB.pdf
The Data Platform Administration Handling the 100 PB.pdf
 
Supporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdfSupporting Internal Customers as Technical Account Managers.pdf
Supporting Internal Customers as Technical Account Managers.pdf
 
Making Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdfMaking Cloud Native CI_CD Services.pdf
Making Cloud Native CI_CD Services.pdf
 
How We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdfHow We Defined Our Own Cloud.pdf
How We Defined Our Own Cloud.pdf
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
Travel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech infoTravel & Leisure Platform Department's tech info
Travel & Leisure Platform Department's tech info
 
OWASPTop10_Introduction
OWASPTop10_IntroductionOWASPTop10_Introduction
OWASPTop10_Introduction
 
Introduction of GORA API Group technology
Introduction of GORA API Group technologyIntroduction of GORA API Group technology
Introduction of GORA API Group technology
 
100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情100PBを越えるデータプラットフォームの実情
100PBを越えるデータプラットフォームの実情
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー
 

Recently uploaded

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Recently uploaded (20)

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

[Rakuten TechConf2014] [D-2] The Pattern-Matching-Oriented Programming Language Egison

  • 1. The Pattern-Matching- Oriented Programming Language Egison - Express Intuition Directly with Essentially New Syntax - Vol.01䚷Oct/25/2014 Satoshi Egi Rakuten Institute of Technology http://rit.rakuten.co.jp/
  • 2. 2 Self-Introduction Name Satoshi Egi (Ụᮌ㻌⪽ᚿ) Association Rakuten Institute of Technology (ᴦኳᢏ⾡◊✲ᡤ) Education Majored in Computer Science at the University of Tokyo Interests Programming Languages, Automated Reasoning Website http://www.egison.org/~egi/
  • 3. 3 What is Egison? Egison is a programming language that realizes non-linear pattern-matching even against data that have no standard form. Non-linear patterns allow multiple occurrences of same variables in a pattern Enumerate the elements of the collection ‘xs’ that appear more than twice (match-all xs (multiset integer)! [cons $x cons ,x _ x])! Egison pairs = []! (1..n).each do |i|! (i..n).each do |j|! if xs[i] == xs[j]! pairs = pairs +! xs[i]! end! end! end! Ruby
  • 5. 5 Demonstration: Mahjong Two same tiles Three consecutive tiles Three same tiles Seven twins or one twin + four shuntsu or kohtsu
  • 7. 7 Motivation I have created Egison to represent human’s intuition directly. The word “intuitive” is often used in the meaning “easy to understand”. However intuition itself is not “intuitive” at all. Therefore, the direct representation of intuition is not easy for many people to understand at the beginning. 䛂┤ឤⓗ䛃䛸䛔䛖ゝⴥ䛿䛂䜟䛛䜚䜔䛩䛔䛃䛸䛔䛖ព࿡䛷౑䜟䜜 䜛䛣䛸䛜ከ䛔䛷䛩䛜䚸┤ឤ⮬య䛿඲䛟䛂┤ឤⓗ䛃䛺䜒䛾䛷䛿 䛒䜚䜎䛫䜣䚹䛭䜜䜖䛘䛻䚸┤ឤ䛾┤᥋ⓗ䛺⾲⌧䛿ከ䛟䛾ே 䛻䛸䛳䛶䚸᭱ึ䛿䜟䛛䜚䜔䛩䛟䛒䜚䜎䛫䜣䚹
  • 8. 8 Motivation I have created Egison to represent human’s intuition directly. There are cases that we still need to translate our thoughts for computers. By discovering such cases, analyzing our intuition, and finding their direct representation, I have created a new programming language Egison. ே㛫䛾⪃䛘䜢䝁䞁䝢䝳䞊䝍ྥ䛡䛻⩻ヂ䛧䛶グ㏙䛫䛽䜀䛺䜙 䛺䛔ሙ㠃䛿ᮍ䛰䛻䛒䜚䜎䛩䚹䛭䛾䜘䛖䛺ሙ㠃䜢ぢ䛴䛡䚸⮬ ㌟䛾┤ឤ䜢ศᯒ䛧䚸䛭䛾┤᥋ⓗ䛺⾲⌧䜢ぢฟ䛩䛣䛸䛻䜘䜚䚸 ⚾䛿᪂䛧䛔䝥䝻䜾䝷䝭䞁䜾ゝㄒEgison䜢స䜛䛻⮳䜚䜎䛧䛯䚹
  • 9. 9 Profile of Egison Egison is open-source software maintained on GitHub. https://github.com/egison/egison Paradigm Pattern-matching-oriented, Purely functional Author Satoshi Egi License MIT Version 3.3.12 (2014/10/25) First Released 2011/5/24 Filename Extension .egi Implemented in Haskell (about 3,800 lines)
  • 10. 10 Website – Everything about Egison is Here
  • 11. 11 Table of Contents 1. Concept of Egison (15 minutes) 2. Play with Egison (5 minutes) 3. Current Status (5 minutes) 4. Future Plan (5 minutes)
  • 12. 12 The Concept of Egison
  • 13. 13 The ‘match-all’ Expression Meaning: Pattern match against “{1 2 3}” as a “list of integers” with the pattern “cons $x $xs” and return all results of pattern matching.
  • 14. 14 Matchers A matcher specifies the way of pattern-matching.
  • 15. 15 Matchers A matcher specifies the way of pattern-matching.
  • 16. 16 The ‘cons’ Pattern The pattern constructor ‘cons’ divides a collection into an element and the rest.
  • 17. 17 The ‘cons’ Pattern The pattern constructor ‘cons’ divides a collection into an element and the rest.
  • 18. 18 Pattern-Matching with Multiple Results We can handle pattern-matching with multiple results.
  • 19. 19 The Nested ‘cons’ Pattern We can extract two elements from a collection with the nested cons pattern.
  • 20. 20 The ‘join’ Pattern The pattern constructor ‘join’ divides a collection into two collections.
  • 21. 21 Non-Linear Patterns Patterns that have ‘,’ ahead are called value-patterns. The equality is checked for a value-pattern.
  • 22. 22 Non-Linear Patterns Patterns that have ‘,’ ahead are called value-patterns. The equality is checked for a value-pattern. Same number with $x
  • 24. 24 Demonstration: Poker Hands Pattern for straight flash
  • 25. 25 Demonstration: Poker Hands Match as a set of cards Pattern for straight flash
  • 26. 26 The Pattern for Straight Flush
  • 27. 27 The Pattern for Straight Flush Same suit with $s
  • 28. Numbers are serial from $n 28 The Pattern for Straight Flush Same suit with $s
  • 29. Numbers are serial from $n 29 The Pattern for Straight Flush Same suit with $s We can write any expression after ‘,’
  • 30. 30 Demonstration: Poker Hands Pattern for two pair
  • 31. 31 The Pattern for Two Pair
  • 32. 32 The Pattern for Two Pair Matches with any suit Matches with any card
  • 33. 33 The Pattern for Two Pair Same number with $m Same number with $n Matches with any suit Matches with any card
  • 34. 34 The Pattern for Two Pair Same number with $m Same number with $n Matches with any suit Matches with any card Non-linear patterns have very strong power
  • 35. 35 Demonstration: Poker Hands Non-linear patterns enables to represent all hands in a single pattern
  • 36. 36 Demonstration: Poker Hands Egisonists can write this code in 2 minutes! Non-linear patterns enables to represent all hands in a single pattern
  • 37. 37 Java Version Just finding a pair of cards is already complex. public static boolean hasPair(Card[] cards) {! for (int i = 0; i = 4 ;i++) { ! for (int j = i + 1 ; j = 4 ; j++) {! if (cards[i] == (cards[j])) { ! return true;! }! return false;! } ! }! }! I found a poker-hand evaluator in Java more than 200 lines of code. http://www.codeproject.com/Articles/38821/Make-a-poker-hand-evalutator-in-Java
  • 38. 38 Pattern-Matching with Infinite Results We can handle pattern-matching with infinite results.
  • 40. 40 Pattern-Matching against Nested Data Types We can pattern-match against nested data types such as lists of sets and sets and sets.
  • 41. 41 Pattern Modularization with Lexical Scope We can modularize patterns with pattern-functions, functions that receive patterns and return a pattern.
  • 42. 42 Pattern Modularization with Lexical Scope A pattern-function has lexical scoping, patterns can be reused in a program without worry of name clash.
  • 44. 44 Demonstration: Mahjong Two same tiles Three consecutive tiles Three same tiles
  • 45. 45 Demonstration: Mahjong Two same tiles Three consecutive tiles Three same tiles Seven twins or one twin + four shuntsu or kohtsu
  • 46. 46 Demonstration: Mahjong Two same tiles Three consecutive tiles Three same tiles Seven twins or one twin + four shuntsu or kohtsu Pattern modularization makes programming more simple!
  • 47. 47 Play with Egison
  • 50. 50 Pattern Matching against Infinite Collections Pattern matching against an infinite collection
  • 51. 51 Twin Prime Code on Homepage of Egison
  • 56. 56 Egison on an Online Media
  • 57. 57 Egison on Hacker News Egison was actively discussed on Hacker News twice!
  • 58. 58 Egison Article on CodeIQ MAGAZINE
  • 59. 59 Egison will be Taught at the University of Tokyo by Prof. Hagiya Egison will have a big impact on the academic world, too!
  • 60. 60 Access Map of the Website in Last Half Year (2014/4/23 – 2014/10/23) Total session is 15,228
  • 61. 61 Growth of Community in This Year (2013/11/15 – 2014/10/25) • Mailing List Members • Before: 12 – Only my friends • Current: 23 – Communicating in English • Stargazers on GitHub • Before: 12 – Only my friends • Current: 242 – People from all over the world!
  • 62. 62 Extending Other Languages
  • 63. 63 Poker Hands Analyzer in Ruby
  • 64. 64 Public Response to Ruby Extension 10,466 views, 186 Hatena Bookmarks!
  • 65. 65 RubyKaigi 2014 Recently presented at RubyKaigi 2014!
  • 66. 66 Future Plans - Applications in the Real World -
  • 67. 67 Wide Range of Applications • Daily programming • Can express complex tasks simply • Data access and analysis • Work as the most elegant query language • Can access the wide range of data types in a unified way • Natural language processing, Image processing • Can handle complex structures intuitively as humans do in their mind • AI (Mathematical expression handling) • Can handle various mathematical and abstract notions directly
  • 68. 68 Wide Range of Applications • Daily programming • Can express complex tasks simply • Data access and analysis • Work as the most elegant query language • Can access the wide range of data types in a unified way • Natural language processing, Image processing • Can handle complex structures intuitively as humans do in their mind • AI (Mathematical expression handling) • Can handle various mathematical and abstract notions directly
  • 69. 69 Ideas of Software • Command line text editor • Command line text editor that uses Egison pattern-matching instead of regular expressions • Chart analytics tool • Find patterns in charts (e.g. technical analysis of the financial markets) • In-memory database with Egison query • Can access the wide range of data types in a unified way • SQL database client • Extract data using simple pattern-matching expressions instead of SQL
  • 70. 70 Wide Range of Applications • Daily programming • Can express complex tasks simply • Data access and analysis • Work as the most elegant query language • Can access the wide range of data types in a unified way • Natural language processing, Image processing • Can handle complex structures intuitively as humans do in their mind • AI (Mathematical expression handling) • Can handle various mathematical and abstract notions directly
  • 71. 71 Query Example • Let’s consider a query that returns twitter users who are followed by “__Egi” but not follow back “__Egi” User: id integer name string Follow: from_id integer to_id Integer
  • 72. 72 SQL Version • Complex and difficult to understand • Complex where clause contains “NOT EXIST” • Subquery
  • 73. 73 Egison Version • Very Simple • No where clauses • No subquery
  • 74. 74 Egison Version • Very Simple • No where clauses • No subquery Joining 4 tables 1. Get id of “__Egi” 2. Followed by ‘uid’ not 3. But not follow back 4. Get name of ‘fid’ Return the results
  • 75. 75 GUI Frontend • We can provide GUI for intuitive data access • Data access for even non-engineers • Engineers can concentrate on data analysis
  • 76. 76 Database in the Next Age In the future, databases will be embedded and hidden in programming languages. We will be able to handle databases directly and easily just as arrays and hashes in existing languages. The pattern-matching of Egison will play a critical role for this future.
  • 77. 77 Wide Range of Applications • Daily programming • Can express complex tasks simply • Data access and analysis • Work as the most elegant query language • Can access the wide range of data types in a unified way • Natural language processing, Image processing • Can handle complex structures intuitively as humans do in their mind • AI (Mathematical expression handling) • Can handle various mathematical and abstract notions directly
  • 78. 78 Wide Range of Applications • Daily programming • Can express complex tasks simply • Data access and analysis • Work as the most elegant query language • Can access the wide range of data types in a unified way • Natural language processing • Programs that find interesting things • Programs that build math theories • Programs that generate programs • Can handle complex structures intuitively as humans do in their mind • AI (Mathematical expression handling) • Can handle various mathematical and abstract notions directly
  • 79. 79 My Mind Map on Programming Language
  • 80. 80 My Mind Map on Programming Language
  • 81. 81 My Mind Map on Programming Language Egison is pioneering this field!
  • 82. Egison (current) Egison next version 82 Improve Egison as the Programming Language I am aiming to make Egison the perfect programming language. Function modularity Lisp (before Scheme) Scheme ML, OCaml, Haskell Type system Pattern matching Function modularity Type system Pattern matching
  • 83. Egison (current) Egison next version 83 Improve Egison as the Programming Language I am aiming to make Egison the perfect programming language. Function modularity Lisp (before Scheme) Scheme ML, OCaml, Haskell Type system Pattern matching Function modularity Type system Pattern matching
  • 84. 84 Thank you! Please visit our website! http://www.egison.org Follow us in Twitter @Egison_Lang Let’s talk and collaborate with us! satoshi.egi@mail.rakuten.com