the egison programming language2 profile of egison paradigm pattern-matching-oriented, pure...

75
The Egison Programming Language Vol.01 Mar/28/2014 Satoshi Egi Rakuten Institute of Technology http://rit.rakuten.co.jp/

Upload: others

Post on 17-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Egison Programming Language2 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

The Egison Programming Language

Vol.01 Mar/28/2014 Satoshi Egi Rakuten Institute of Technology http://rit.rakuten.co.jp/

Page 2: The Egison Programming Language2 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

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.

Page 3: The Egison Programming Language2 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

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

Page 4: The Egison Programming Language2 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

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

Page 5: The Egison Programming Language2 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

5

Quick Tour

Page 6: The Egison Programming Language2 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

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.

Page 7: The Egison Programming Language2 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

7

The ‘match-all’ expression

Target

Pattern-match against the target data {1 1 2 3 2}

Page 8: The Egison Programming Language2 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

8

The ‘match-all’ expression

Matcher Target

Pattern-match against the target data {1 1 2 3 2} as the multiset of integers

Page 9: The Egison Programming Language2 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

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 _>>

Page 10: The Egison Programming Language2 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

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.

Page 11: The Egison Programming Language2 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

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.

Page 12: The Egison Programming Language2 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

12

The ‘cons’ pattern constructor

Divide a collection into an element and a collection of rest of elements.

Page 13: The Egison Programming Language2 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

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.

Page 14: The Egison Programming Language2 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

14

The nested ‘cons’ pattern constructor

Extracting two elements using the ‘cons’ patterns.

Page 15: The Egison Programming Language2 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

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.

Page 16: The Egison Programming Language2 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

16

Not-patterns

One more ‘x’

No more ‘x’

Patterns that match if the pattern does not match.

Page 17: The Egison Programming Language2 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

17

The ‘join’ pattern constructor

Divide a collection into two collections.

Page 18: The Egison Programming Language2 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

18

Playing with the ‘join’ pattern constructor

Enumerate all two combination of elements.

Page 19: The Egison Programming Language2 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

19

Demonstrations

Page 20: The Egison Programming Language2 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

20

The first application of Egison

Page 21: The Egison Programming Language2 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

21

The first application of Egison

Match as a set of cards

Page 22: The Egison Programming Language2 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

22

The first application of Egison

Pattern for straight flash

Page 23: The Egison Programming Language2 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

23

The pattern for straight flush

Page 24: The Egison Programming Language2 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

24

The pattern for straight flush

Same suit with $s

Page 25: The Egison Programming Language2 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

25

The pattern for straight flush

Same suit with $s

Numbers are serial from $n

Page 26: The Egison Programming Language2 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

26

The pattern for straight flush

Same suit with $s

Numbers are serial from $n

We can write any expression after ‘,’

Page 27: The Egison Programming Language2 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

27

The first application of Egison

Pattern for two pair

Page 28: The Egison Programming Language2 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

28

The pattern for two pair

Page 29: The Egison Programming Language2 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

29

The pattern for two pair

Matches with any suit

Matches with any card

Page 30: The Egison Programming Language2 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

30

The pattern for two pair

Matches with any suit

Matches with any card

Same number with $m

Same number with $n

Page 31: The Egison Programming Language2 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

31

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

Page 32: The Egison Programming Language2 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

32

The first application of Egison

Non-linear patterns enables to represent all hands in a single pattern

Page 33: The Egison Programming Language2 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

33

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

Page 34: The Egison Programming Language2 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

34

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

Page 35: The Egison Programming Language2 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

35

More complex example, Mahjong

Page 36: The Egison Programming Language2 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

36

More complex example, Mahjong

Two same tiles

Three consecutive tiles

Three same tiles

Page 37: The Egison Programming Language2 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

37

More complex example, Mahjong

Two same tiles

Three consecutive tiles

Three same tiles

Seven twins or one twin + four shuntsu or kohtsu

Page 38: The Egison Programming Language2 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

38

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!

Page 39: The Egison Programming Language2 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

39

One More Exciting Demonstration

Page 40: The Egison Programming Language2 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

40

Collections

Page 41: The Egison Programming Language2 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

41

Infinite collections

Page 42: The Egison Programming Language2 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

42

Beautiful example on elementary mathematics

Pattern matching against an infinite collection

Page 43: The Egison Programming Language2 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

43

This sample is on the homepage of Egison

Page 44: The Egison Programming Language2 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

44

Egison design policy

Beautiful and Elegant -> Simple

Page 45: The Egison Programming Language2 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

45

Visions

Page 46: The Egison Programming Language2 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

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

Page 47: The Egison Programming Language2 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

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

Page 48: The Egison Programming Language2 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

48

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

Page 49: The Egison Programming Language2 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

49

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:

Page 50: The Egison Programming Language2 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

50

SQL version

•  Complex and difficult to understand •  Complex where clause contains “NOT EXIST” •  Subquery

Page 51: The Egison Programming Language2 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

51

Egison version

•  Very Simple •  No where clauses •  No subquery

Page 52: The Egison Programming Language2 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

52

Egison version

•  Very Simple •  No where clauses •  No subquery

Joining 4 tables

Page 53: The Egison Programming Language2 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

53

Egison version

•  Very Simple •  No where clauses •  No subquery

Joining 4 tables

1. Get id of “__Egi”

Page 54: The Egison Programming Language2 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

54

Egison version

•  Very Simple •  No where clauses •  No subquery

Joining 4 tables

1. Get id of “__Egi” 2. Followed by ‘uid’

Page 55: The Egison Programming Language2 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

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 back not

Page 56: The Egison Programming Language2 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

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 back not 4. Get name of ‘fid’

Page 57: The Egison Programming Language2 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

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 back not 4. Get name of ‘fid’ Return the results

Page 58: The Egison Programming Language2 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

58

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 back not 4. Get name of ‘fid’ Return the results

We can run this query against data in SQLite!

Page 59: The Egison Programming Language2 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

59

GUI frontend

•  We’ll provide GUI for intuitive data access •  Data access for even non-engineers •  Engineers can concentrate on data analysis

Very Easy!

Page 60: The Egison Programming Language2 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

60

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

Page 61: The Egison Programming Language2 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

61

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.

Page 62: The Egison Programming Language2 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

62

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

Page 63: The Egison Programming Language2 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

63

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

Page 64: The Egison Programming Language2 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

64

The Current Situation

Page 65: The Egison Programming Language2 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

65

Egison website

Page 66: The Egison Programming Language2 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

66

Online demonstrations

Page 67: The Egison Programming Language2 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

67

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

Page 68: The Egison Programming Language2 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

68

‘egison-tutorial’

You’ll get Egison easily!

Page 69: The Egison Programming Language2 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

69

‘egison-tutorial’

We can try it online, too!

Page 70: The Egison Programming Language2 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

70

Next Plans

Page 71: The Egison Programming Language2 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

71

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.

Page 72: The Egison Programming Language2 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

72

Extending other languages

•  Ruby https://github.com/egison/egison-ruby

•  Python (planning) •  Haskell (planning)

Page 73: The Egison Programming Language2 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

73

Poker hands in Ruby

Page 74: The Egison Programming Language2 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

74

Database support

I appreciate your request for support !

We will extend support for high speed data storages as the backend of Egison.

Page 75: The Egison Programming Language2 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

75

Thank you!

Please visit our website! http://www.egison.org

Follow us in Twitter @Egison_Lang

Let’s talk and collaborate with us! [email protected]