• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
The Egison Programming Language
 

The Egison Programming Language

on

  • 14,300 views

This slide is presented in Tech Talk in Rakuten on March 28, 2014. ...

This slide is presented in Tech Talk in Rakuten on March 28, 2014.

Egison is the world's first programming language that realized non-linear pattern-matching with backtracking.
We can directly represent pattern-matching against lists, multisets, sets, trees, graphs and any kind of data types.
Egison makes programming dramatically simple!

Statistics

Views

Total Views
14,300
Views on SlideShare
1,426
Embed Views
12,874

Actions

Likes
4
Downloads
7
Comments
0

8 Embeds 12,874

http://www.egison.org 12582
https://twitter.com 283
http://www.google.com.au 3
http://translate.googleusercontent.com 2
http://new.egison.org 1
http://news.google.com 1
http://www.google.com 1
http://xandros 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    The Egison Programming Language The Egison Programming Language Presentation Transcript

    • 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