Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Like this presentation? Why not share!

- Project Lambda とこれからの Java by Yuichi Sakuraba 1705 views
- Экосистема Common Lisp by Vsevolod Dyomkin 2678 views
- 楽天のスクラム - 問題と対策 - by Rakuten, Inc 1379 views
- 地図を捨ててコンパスを頼りに進め by Rakuten, Inc 1363 views
- [Rakuten TechConf2014] [C-6] Levera... by Rakuten, Inc 514 views
- インターネットガバナンス徒然2010-1 by Rakuten, Inc 1317 views

22,377 views

22,146 views

22,146 views

Published on

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!

Published in:
Technology

No Downloads

Total views

22,377

On SlideShare

0

From Embeds

0

Number of Embeds

19,750

Shares

0

Downloads

27

Comments

0

Likes

5

No embeds

No notes for slide

- 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
- 5. 5 Quick Tour
- 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.
- 18. 18 Demonstrations
- 19. 19 The first application of Egison
- 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
- 34. 34 More complex example, Mahjong
- 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
- 39. 39 Collections
- 40. 40 Infinite collections
- 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
- 44. 44 Visions
- 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
- 63. 63 The Current Situation
- 64. 64 Egison website
- 65. 65 Online demonstrations
- 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
- 67. 67 ‘egison-tutorial’ You’ll get Egison easily!
- 68. 68 ‘egison-tutorial’ We can try it online, too!
- 69. 69 Next Plans
- 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)
- 72. 72 Poker hands in Ruby
- 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

No public clipboards found for this slide

×
### Save the most important slides with Clipping

Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.

Be the first to comment