SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Downloaden Sie, um offline zu lesen
The Egison Programming Language
Vol.01 Mar/28/2014
Satoshi Egi
Rakuten Institute of Technology
http://rit.rakuten.co.jp/
2
Profile of Egison
Paradigm Pattern-matching-oriented,
Pure functional
Author Satoshi Egi
License MIT
Version 3.3.4 (2014/03/28)
First Released 2011/5/24
Filename Extension .egi
Implemented in Haskell (about 3,400 lines)
Egison is the programming language I’ve created.
3
Motivation
I’d like to create a programming language that
directly represents human’s intuition.
Function modularity
Type system Pattern matching
Egison (current)
Egison next version
Function modularity
Type system Pattern matching
Lisp (before Scheme)
Scheme
ML, OCaml, Haskell
4
Egison in one minute
Egison is the world's first programming language
that realized non-linear pattern-matching with
backtracking.
(match-all xs (multiset integer)
[<cons $x <cons ,x _>> x])
Egison
Enumerate the elements of
the collection ‘xs’ that appear
more than twice
pairs = []
(1..n).each do |i|
(i..n).each do |j|
if xs[i] == xs[j]
pair = xs[i]
end
end
end
Ruby
5
Quick Tour
6
The ‘match-all’ expression
Target Matcher
Pattern Expression executed
when pattern matching
succeed
Result
Meaning: Pattern match against the “target” as
the “matcher” with the “pattern” and return all
results of pattern matching.
7
The ‘match-all’ expression
Target
Pattern-match against the target data {1 1 2 3 2}
8
The ‘match-all’ expression
MatcherTarget
Pattern-match against the target data {1 1 2 3 2}
as the multiset of integers
9
The ‘match-all’ expression
Target Matcher
Pattern
Pattern-match against the target data {1 1 2 3 2}
as the multiset of integers with the pattern
<cons $x <cons ,x _>>
10
The ‘match-all’ expression
Target Matcher
Pattern Expression executed
when pattern matching
succeed
Pattern-match against the target data {1 1 2 3 2}
as the multiset of integers with the pattern
<cons $x <cons ,x _>> and return the value
bound to x.
11
The ‘match-all’ expression
Target Matcher
Pattern Expression executed
when pattern matching
succeed
Result
Pattern-match against the target data {1 1 2 3 2}
as the multiset of integers with the pattern
<cons $x <cons ,x _>> and return the value
bound to x.
12
The ‘cons’ pattern constructor
Divide a collection into an element and a
collection of rest of elements.
13
The ‘cons’ pattern constructor
The meaning of ‘cons’ changes for each matcher
Divide a collection into an element and a
collection of rest of elements.
14
The nested ‘cons’ pattern constructor
Extracting two elements using the ‘cons’ patterns.
15
Non-linear patterns
Elements that appear twice
Two same head elements
We can deal with the multiple occurrences of the
same variables in a pattern.
16
The ‘join’ pattern constructor
Divide a collection into two collections.
17
Playing with the ‘join’ pattern constructor
Enumerate all two combination of elements.
18
Demonstrations
19
The first application of Egison
20
The first application of Egison
Match as a set of cards
21
The first application of Egison
Pattern for straight flash
22
The pattern for straight flush
23
The pattern for straight flush
Same suit with $s
24
The pattern for straight flush
Same suit with $s
Numbers are serial from
$n
25
The pattern for straight flush
Same suit with $s
Numbers are serial from
$n
We can write any expression after ‘,’
26
The first application of Egison
Pattern for two pair
27
The pattern for two pair
28
The pattern for two pair
Matches with any suit
Matches with any card
29
The pattern for two pair
Matches with any suit
Matches with any card
Same number with $m
Same number with $n
30
The pattern for two pair
Matches with any suit
Matches with any card
Same number with $m
Same number with $n
Non-linear patterns have very strong power
31
The first application of Egison
Non-linear patterns enables to
represent all hands in a single pattern
32
The first application of Egison
Egisonists can write this
code in 2 minutes!
Non-linear patterns enables to
represent all hands in a single pattern
33
Java version
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;
}
}
}
Just finding a pair of cards is already complex.
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
34
More complex example, Mahjong
35
More complex example, Mahjong
Two same tiles
Three consecutive tiles
Three same tiles
36
More complex example, Mahjong
Two same tiles
Three consecutive tiles
Three same tiles
Seven twins or one twin + four shuntsu or kohtsu
37
More complex example, 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!
38
One More Exciting Demonstration
39
Collections
40
Infinite collections
41
Beautiful example on elementary mathematics
Pattern matching against an infinite collection
42
This sample is on the homepage of Egison
43
Egison design policy
Beautiful and Elegant
-> Simple
44
Visions
45
What we will be able to do with Egison
• Access data in new elegant ways
• The most elegant query language
• Able to access lists, sets, graphs, trees or any
other data in a unified way
• Analyze data in new elegant ways
• Provide a way to access various algorithm and
data structures in a unified way
• Implement new interesting applications
e.g.
• Natural language processing, New programming
languages, Mathematical expression handling,
Image processing
46
What we will be able to do with Egison
• Access data in new elegant ways
• The most elegant query language
• Able to access lists, sets, graphs, trees or any
other data in a unified way
• Analyze data in new elegant ways
• Provide a way to access various algorithm and
data structures in a unified way
• Implement new interesting applications
e.g.
• Natural language processing, New programming
languages, Mathematical expression handling,
Image processing
Stage1
Stage2
47
What we will be able to do with Egison
• Access data in new elegant ways
• The most elegant query language
• Able to access lists, sets, graphs, trees or any
other data in a unified way
• Analyze data in new elegant ways
• Provide a way to access various algorithm and
data structures in a unified way
• Implement new interesting applications
e.g.
• Natural language processing, New programming
languages, Mathematical expression handling,
Image processing
Stage1
Stage2
48
Query example
• Query that returns twitter users who are
followed by “__Egi” but not follow back
“__Egi”.
id integer
name string
User:
from_id integer
to_id Integer
Follow:
49
SQL version
• Complex and difficult to understand
• Complex where clause contains “NOT EXIST”
• Subquery
50
Egison version
• Very Simple
• No where clauses
• No subquery
51
Egison version
• Very Simple
• No where clauses
• No subquery
Joining 4 tables
52
Egison version
• Very Simple
• No where clauses
• No subquery
Joining 4 tables
1. Get id of “__Egi”
53
Egison version
• Very Simple
• No where clauses
• No subquery
Joining 4 tables
1. Get id of “__Egi”
2. Followed by ‘uid’
54
Egison version
• Very Simple
• No where clauses
• No subquery
Joining 4 tables
1. Get id of “__Egi”
2. Followed by ‘uid’
3. But not follow backnot
55
Egison version
• Very Simple
• No where clauses
• No subquery
Joining 4 tables
1. Get id of “__Egi”
2. Followed by ‘uid’
3. But not follow backnot
4. Get name of ‘fid’
56
Egison version
• Very Simple
• No where clauses
• No subquery
Joining 4 tables
1. Get id of “__Egi”
2. Followed by ‘uid’
3. But not follow backnot
4. Get name of ‘fid’
Return the results
57
Egison version
• Very Simple
• No where clauses
• No subquery
Joining 4 tables
1. Get id of “__Egi”
2. Followed by ‘uid’
3. But not follow backnot
4. Get name of ‘fid’
Return the results
We can run this query against
data in SQLite!
58
GUI frontend
• We’ll provide GUI for intuitive data access
• Data access for even non-engineers
• Engineers can concentrate on data analysis
Very Easy!
59
What we will be able to do with Egison
• Access data in new elegant ways
• The most elegant query language
• Able to access lists, sets, graphs, trees or any
other data in a unified way
• Analyze data in new elegant ways
• Provide a way to access various algorithm and
data structures in a unified way
• Implement new interesting applications
e.g.
• Natural language processing, New programming
languages, Mathematical expression handling,
Image processing
Stage1
Stage2
60
Database in the next age
In future, databases will be
embedded in programming
languages and hidden.
We will be able to handle
databases directly and
easily as arrays and
hashes in existing
languages.
The pattern-matching of Egison will play a
necessary role for this future.
61
The other funny plans
• Access data in new elegant ways
• The most elegant query language
• Able to access lists, sets, graphs, trees or any
other data in a unified way
• Analyze data in new elegant ways
• Provide a way to access various algorithm and
data structures in a unified way
• Implement new interesting applications
e.g.
• Natural language processing, New programming
languages, Mathematical expression handling,
Image processing
Stage1
Stage2
62
Egison has wide range of applications
• Data mining
• Work as the most elegant query language
• Natural Language Processing
• Enable to handle complex syntax structures
intuitively as humans do in their mind
• New Programming Languages
• Mathematical expression handling
• Enable to handle complex structures easily
• Enable to handle various mathematical notion
directly
Egison is an inevitable and necessary
innovation in the history of computer science
63
The Current Situation
64
Egison website
65
Online demonstrations
66
Installer of Egison and ‘egison-tutorial’
• Egison can be installed on Mac, Windows and Linux.
• We’ve prepared a package for Mac
• Download it from http://www.egison.org
Install me Egison
and please try
‘egison-tutorial’!
Get following commands!
• egison
• egison-tutorial
67
‘egison-tutorial’
You’ll get Egison
easily!
68
‘egison-tutorial’
We can try it
online, too!
69
Next Plans
70
Egison as the programming language
Function modularity
Type system Pattern matching
Egison (current)
Egison next version
Function modularity
Type system Pattern matching
Lisp (before Scheme)
Scheme
ML, OCaml, Haskell
Make Egison the perfect programming language.
71
Extending other languages
• Ruby https://github.com/egison/egison-ruby
• Python (planning)
• Haskell (planning)
72
Poker hands in Ruby
73
Database support
I appreciate your request for support !
We will extend support for high speed data
storages as the backend of Egison.
74
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

Weitere ähnliche Inhalte

Was ist angesagt?

High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance Haskell
Johan Tibell
 
Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a Moment
Sergio Gil
 

Was ist angesagt? (20)

Python :variable types
Python :variable typesPython :variable types
Python :variable types
 
Python programming Part -6
Python programming Part -6Python programming Part -6
Python programming Part -6
 
Data Structures in Python
Data Structures in PythonData Structures in Python
Data Structures in Python
 
Hashing
HashingHashing
Hashing
 
Datastructures in python
Datastructures in pythonDatastructures in python
Datastructures in python
 
Ds 8
Ds 8Ds 8
Ds 8
 
Datatypes in python
Datatypes in pythonDatatypes in python
Datatypes in python
 
Python Datatypes by SujithKumar
Python Datatypes by SujithKumarPython Datatypes by SujithKumar
Python Datatypes by SujithKumar
 
Arrays In Python | Python Array Operations | Edureka
Arrays In Python | Python Array Operations | EdurekaArrays In Python | Python Array Operations | Edureka
Arrays In Python | Python Array Operations | Edureka
 
Algorithms with-java-advanced-1.0
Algorithms with-java-advanced-1.0Algorithms with-java-advanced-1.0
Algorithms with-java-advanced-1.0
 
Hashing notes data structures (HASHING AND HASH FUNCTIONS)
Hashing notes data structures (HASHING AND HASH FUNCTIONS)Hashing notes data structures (HASHING AND HASH FUNCTIONS)
Hashing notes data structures (HASHING AND HASH FUNCTIONS)
 
Python numbers
Python numbersPython numbers
Python numbers
 
Hashing
HashingHashing
Hashing
 
High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance Haskell
 
Standard data-types-in-py
Standard data-types-in-pyStandard data-types-in-py
Standard data-types-in-py
 
Data types in python
Data types in pythonData types in python
Data types in python
 
Python list
Python listPython list
Python list
 
Five Languages in a Moment
Five Languages in a MomentFive Languages in a Moment
Five Languages in a Moment
 
Python strings presentation
Python strings presentationPython strings presentation
Python strings presentation
 
Functional Programming by Examples using Haskell
Functional Programming by Examples using HaskellFunctional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
 

Andere mochten auch

Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)
Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)
Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)
Rakuten Group, Inc.
 

Andere mochten auch (12)

[RakutenTechConf2013] [C-4_2] Building Structured Data from Product Descriptions
[RakutenTechConf2013] [C-4_2] Building Structured Data from Product Descriptions[RakutenTechConf2013] [C-4_2] Building Structured Data from Product Descriptions
[RakutenTechConf2013] [C-4_2] Building Structured Data from Product Descriptions
 
E-commerce企業におけるビッグデータ活用の取り組みと今後の展望
E-commerce企業におけるビッグデータ活用の取り組みと今後の展望E-commerce企業におけるビッグデータ活用の取り組みと今後の展望
E-commerce企業におけるビッグデータ活用の取り組みと今後の展望
 
Intelligent Electronic Commerce Service Based on Understanding of User Behaviors
Intelligent Electronic Commerce Service Based on Understanding of User BehaviorsIntelligent Electronic Commerce Service Based on Understanding of User Behaviors
Intelligent Electronic Commerce Service Based on Understanding of User Behaviors
 
[RakutenTechConf2013] [C4-1] Text detection in product images
[RakutenTechConf2013] [C4-1] Text detection in product images[RakutenTechConf2013] [C4-1] Text detection in product images
[RakutenTechConf2013] [C4-1] Text detection in product images
 
Latent Semantic Transliteration using Dirichlet Mixture
Latent Semantic Transliteration using Dirichlet MixtureLatent Semantic Transliteration using Dirichlet Mixture
Latent Semantic Transliteration using Dirichlet Mixture
 
Scaling and High Performance Storage System: LeoFS
Scaling and High Performance Storage System: LeoFSScaling and High Performance Storage System: LeoFS
Scaling and High Performance Storage System: LeoFS
 
Latent Class Transliteration based on Source Language Origin
Latent Class Transliteration based on Source Language OriginLatent Class Transliteration based on Source Language Origin
Latent Class Transliteration based on Source Language Origin
 
Unsupervised Extraction of Attributes and Their Values from Product Description
Unsupervised Extraction of Attributes and Their Values from Product DescriptionUnsupervised Extraction of Attributes and Their Values from Product Description
Unsupervised Extraction of Attributes and Their Values from Product Description
 
[RakutenTechConf2013] [LT] Giving Life to your IDEAS to Survive in Evolving Era
[RakutenTechConf2013] [LT] Giving Life to your IDEAS to Survive in Evolving Era[RakutenTechConf2013] [LT] Giving Life to your IDEAS to Survive in Evolving Era
[RakutenTechConf2013] [LT] Giving Life to your IDEAS to Survive in Evolving Era
 
[RakutenTechConf2013] [D-3_2] Counting Big Data by Streaming Algorithms
[RakutenTechConf2013] [D-3_2] Counting Big Databy Streaming Algorithms[RakutenTechConf2013] [D-3_2] Counting Big Databy Streaming Algorithms
[RakutenTechConf2013] [D-3_2] Counting Big Data by Streaming Algorithms
 
[RakutenTechConf2013][C-4_3] Our Goals and Activities at Rakuten Institute o...
[RakutenTechConf2013][C-4_3] Our Goals and Activities at Rakuten Institute o...[RakutenTechConf2013][C-4_3] Our Goals and Activities at Rakuten Institute o...
[RakutenTechConf2013][C-4_3] Our Goals and Activities at Rakuten Institute o...
 
Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)
Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)
Purchase prediction by statistical analysis (統計技術を用いた商品購買予測)
 

Ähnlich wie The Egison Programming Language

Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Lucidworks
 

Ähnlich wie The Egison Programming Language (20)

[Rakuten TechConf2014] [D-2] The Pattern-Matching-Oriented Programming Langua...
[Rakuten TechConf2014] [D-2] The Pattern-Matching-Oriented Programming Langua...[Rakuten TechConf2014] [D-2] The Pattern-Matching-Oriented Programming Langua...
[Rakuten TechConf2014] [D-2] The Pattern-Matching-Oriented Programming Langua...
 
Ruby Egison
Ruby EgisonRuby Egison
Ruby Egison
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
 
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
Implementing Conceptual Search in Solr using LSA and Word2Vec: Presented by S...
 
Programming in python Unit-1 Part-1
Programming in python Unit-1 Part-1Programming in python Unit-1 Part-1
Programming in python Unit-1 Part-1
 
MATLAB - The Need to Know Basics
MATLAB - The Need to Know BasicsMATLAB - The Need to Know Basics
MATLAB - The Need to Know Basics
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Class[3][5th jun] [three js]
Class[3][5th jun] [three js]Class[3][5th jun] [three js]
Class[3][5th jun] [three js]
 
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
 
Scratch for intermediates course
Scratch for intermediates courseScratch for intermediates course
Scratch for intermediates course
 
FULL DOCUMENT.docx
FULL DOCUMENT.docxFULL DOCUMENT.docx
FULL DOCUMENT.docx
 
Hub102 - JS - Lesson3
Hub102 - JS - Lesson3Hub102 - JS - Lesson3
Hub102 - JS - Lesson3
 
Lecture 1 (bce-7)
Lecture   1 (bce-7)Lecture   1 (bce-7)
Lecture 1 (bce-7)
 
Data structure and algorithm.
Data structure and algorithm. Data structure and algorithm.
Data structure and algorithm.
 
Data Structures 2007
Data Structures 2007Data Structures 2007
Data Structures 2007
 
C# 101: Intro to Programming with C#
C# 101: Intro to Programming with C#C# 101: Intro to Programming with C#
C# 101: Intro to Programming with C#
 
Apex code (Salesforce)
Apex code (Salesforce)Apex code (Salesforce)
Apex code (Salesforce)
 
Google code search
Google code searchGoogle code search
Google code search
 
NLP Bootcamp
NLP BootcampNLP Bootcamp
NLP Bootcamp
 
The Ring programming language version 1.10 book - Part 7 of 212
The Ring programming language version 1.10 book - Part 7 of 212The Ring programming language version 1.10 book - Part 7 of 212
The Ring programming language version 1.10 book - Part 7 of 212
 

Mehr von Rakuten Group, Inc.

Mehr von 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を越えるデータプラットフォームの実情
 
社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー社内エンジニアを支えるテクニカルアカウントマネージャー
社内エンジニアを支えるテクニカルアカウントマネージャー
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 

The Egison Programming Language

  • 1. The Egison Programming Language Vol.01 Mar/28/2014 Satoshi Egi Rakuten Institute of Technology http://rit.rakuten.co.jp/
  • 2. 2 Profile of Egison Paradigm Pattern-matching-oriented, Pure functional Author Satoshi Egi License MIT Version 3.3.4 (2014/03/28) First Released 2011/5/24 Filename Extension .egi Implemented in Haskell (about 3,400 lines) Egison is the programming language I’ve created.
  • 3. 3 Motivation I’d like to create a programming language that directly represents human’s intuition. Function modularity Type system Pattern matching Egison (current) Egison next version Function modularity Type system Pattern matching Lisp (before Scheme) Scheme ML, OCaml, Haskell
  • 4. 4 Egison in one minute Egison is the world's first programming language that realized non-linear pattern-matching with backtracking. (match-all xs (multiset integer) [<cons $x <cons ,x _>> x]) Egison Enumerate the elements of the collection ‘xs’ that appear more than twice pairs = [] (1..n).each do |i| (i..n).each do |j| if xs[i] == xs[j] pair = xs[i] end end end Ruby
  • 6. 6 The ‘match-all’ expression Target Matcher Pattern Expression executed when pattern matching succeed Result Meaning: Pattern match against the “target” as the “matcher” with the “pattern” and return all results of pattern matching.
  • 7. 7 The ‘match-all’ expression Target Pattern-match against the target data {1 1 2 3 2}
  • 8. 8 The ‘match-all’ expression MatcherTarget Pattern-match against the target data {1 1 2 3 2} as the multiset of integers
  • 9. 9 The ‘match-all’ expression Target Matcher Pattern Pattern-match against the target data {1 1 2 3 2} as the multiset of integers with the pattern <cons $x <cons ,x _>>
  • 10. 10 The ‘match-all’ expression Target Matcher Pattern Expression executed when pattern matching succeed Pattern-match against the target data {1 1 2 3 2} as the multiset of integers with the pattern <cons $x <cons ,x _>> and return the value bound to x.
  • 11. 11 The ‘match-all’ expression Target Matcher Pattern Expression executed when pattern matching succeed Result Pattern-match against the target data {1 1 2 3 2} as the multiset of integers with the pattern <cons $x <cons ,x _>> and return the value bound to x.
  • 12. 12 The ‘cons’ pattern constructor Divide a collection into an element and a collection of rest of elements.
  • 13. 13 The ‘cons’ pattern constructor The meaning of ‘cons’ changes for each matcher Divide a collection into an element and a collection of rest of elements.
  • 14. 14 The nested ‘cons’ pattern constructor Extracting two elements using the ‘cons’ patterns.
  • 15. 15 Non-linear patterns Elements that appear twice Two same head elements We can deal with the multiple occurrences of the same variables in a pattern.
  • 16. 16 The ‘join’ pattern constructor Divide a collection into two collections.
  • 17. 17 Playing with the ‘join’ pattern constructor Enumerate all two combination of elements.
  • 20. 20 The first application of Egison Match as a set of cards
  • 21. 21 The first application of Egison Pattern for straight flash
  • 22. 22 The pattern for straight flush
  • 23. 23 The pattern for straight flush Same suit with $s
  • 24. 24 The pattern for straight flush Same suit with $s Numbers are serial from $n
  • 25. 25 The pattern for straight flush Same suit with $s Numbers are serial from $n We can write any expression after ‘,’
  • 26. 26 The first application of Egison Pattern for two pair
  • 27. 27 The pattern for two pair
  • 28. 28 The pattern for two pair Matches with any suit Matches with any card
  • 29. 29 The pattern for two pair Matches with any suit Matches with any card Same number with $m Same number with $n
  • 30. 30 The pattern for two pair Matches with any suit Matches with any card Same number with $m Same number with $n Non-linear patterns have very strong power
  • 31. 31 The first application of Egison Non-linear patterns enables to represent all hands in a single pattern
  • 32. 32 The first application of Egison Egisonists can write this code in 2 minutes! Non-linear patterns enables to represent all hands in a single pattern
  • 33. 33 Java version 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; } } } Just finding a pair of cards is already complex. 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
  • 35. 35 More complex example, Mahjong Two same tiles Three consecutive tiles Three same tiles
  • 36. 36 More complex example, Mahjong Two same tiles Three consecutive tiles Three same tiles Seven twins or one twin + four shuntsu or kohtsu
  • 37. 37 More complex example, 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!
  • 38. 38 One More Exciting Demonstration
  • 41. 41 Beautiful example on elementary mathematics Pattern matching against an infinite collection
  • 42. 42 This sample is on the homepage of Egison
  • 43. 43 Egison design policy Beautiful and Elegant -> Simple
  • 45. 45 What we will be able to do with Egison • Access data in new elegant ways • The most elegant query language • Able to access lists, sets, graphs, trees or any other data in a unified way • Analyze data in new elegant ways • Provide a way to access various algorithm and data structures in a unified way • Implement new interesting applications e.g. • Natural language processing, New programming languages, Mathematical expression handling, Image processing
  • 46. 46 What we will be able to do with Egison • Access data in new elegant ways • The most elegant query language • Able to access lists, sets, graphs, trees or any other data in a unified way • Analyze data in new elegant ways • Provide a way to access various algorithm and data structures in a unified way • Implement new interesting applications e.g. • Natural language processing, New programming languages, Mathematical expression handling, Image processing Stage1 Stage2
  • 47. 47 What we will be able to do with Egison • Access data in new elegant ways • The most elegant query language • Able to access lists, sets, graphs, trees or any other data in a unified way • Analyze data in new elegant ways • Provide a way to access various algorithm and data structures in a unified way • Implement new interesting applications e.g. • Natural language processing, New programming languages, Mathematical expression handling, Image processing Stage1 Stage2
  • 48. 48 Query example • Query that returns twitter users who are followed by “__Egi” but not follow back “__Egi”. id integer name string User: from_id integer to_id Integer Follow:
  • 49. 49 SQL version • Complex and difficult to understand • Complex where clause contains “NOT EXIST” • Subquery
  • 50. 50 Egison version • Very Simple • No where clauses • No subquery
  • 51. 51 Egison version • Very Simple • No where clauses • No subquery Joining 4 tables
  • 52. 52 Egison version • Very Simple • No where clauses • No subquery Joining 4 tables 1. Get id of “__Egi”
  • 53. 53 Egison version • Very Simple • No where clauses • No subquery Joining 4 tables 1. Get id of “__Egi” 2. Followed by ‘uid’
  • 54. 54 Egison version • Very Simple • No where clauses • No subquery Joining 4 tables 1. Get id of “__Egi” 2. Followed by ‘uid’ 3. But not follow backnot
  • 55. 55 Egison version • Very Simple • No where clauses • No subquery Joining 4 tables 1. Get id of “__Egi” 2. Followed by ‘uid’ 3. But not follow backnot 4. Get name of ‘fid’
  • 56. 56 Egison version • Very Simple • No where clauses • No subquery Joining 4 tables 1. Get id of “__Egi” 2. Followed by ‘uid’ 3. But not follow backnot 4. Get name of ‘fid’ Return the results
  • 57. 57 Egison version • Very Simple • No where clauses • No subquery Joining 4 tables 1. Get id of “__Egi” 2. Followed by ‘uid’ 3. But not follow backnot 4. Get name of ‘fid’ Return the results We can run this query against data in SQLite!
  • 58. 58 GUI frontend • We’ll provide GUI for intuitive data access • Data access for even non-engineers • Engineers can concentrate on data analysis Very Easy!
  • 59. 59 What we will be able to do with Egison • Access data in new elegant ways • The most elegant query language • Able to access lists, sets, graphs, trees or any other data in a unified way • Analyze data in new elegant ways • Provide a way to access various algorithm and data structures in a unified way • Implement new interesting applications e.g. • Natural language processing, New programming languages, Mathematical expression handling, Image processing Stage1 Stage2
  • 60. 60 Database in the next age In future, databases will be embedded in programming languages and hidden. We will be able to handle databases directly and easily as arrays and hashes in existing languages. The pattern-matching of Egison will play a necessary role for this future.
  • 61. 61 The other funny plans • Access data in new elegant ways • The most elegant query language • Able to access lists, sets, graphs, trees or any other data in a unified way • Analyze data in new elegant ways • Provide a way to access various algorithm and data structures in a unified way • Implement new interesting applications e.g. • Natural language processing, New programming languages, Mathematical expression handling, Image processing Stage1 Stage2
  • 62. 62 Egison has wide range of applications • Data mining • Work as the most elegant query language • Natural Language Processing • Enable to handle complex syntax structures intuitively as humans do in their mind • New Programming Languages • Mathematical expression handling • Enable to handle complex structures easily • Enable to handle various mathematical notion directly Egison is an inevitable and necessary innovation in the history of computer science
  • 66. 66 Installer of Egison and ‘egison-tutorial’ • Egison can be installed on Mac, Windows and Linux. • We’ve prepared a package for Mac • Download it from http://www.egison.org Install me Egison and please try ‘egison-tutorial’! Get following commands! • egison • egison-tutorial
  • 70. 70 Egison as the programming language Function modularity Type system Pattern matching Egison (current) Egison next version Function modularity Type system Pattern matching Lisp (before Scheme) Scheme ML, OCaml, Haskell Make Egison the perfect programming language.
  • 71. 71 Extending other languages • Ruby https://github.com/egison/egison-ruby • Python (planning) • Haskell (planning)
  • 73. 73 Database support I appreciate your request for support ! We will extend support for high speed data storages as the backend of Egison.
  • 74. 74 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