|
1 | 1 | # The Egison Programming Language
|
2 | 2 |
|
3 |
| -Egison is the pattern-matching-oriented purely functional programming language. |
4 |
| -We can directly represent pattern-matching against lists, multisets, sets, trees, graphs and any kind of data types. |
| 3 | +Egison is a functional programming language featuring its expressive pattern-matching facility. |
| 4 | +Egison allows users to define efficient and expressive pattern-matching methods for arbitrary user-defined data types including non-free data types such as lists, multisets, sets, trees, graphs, and mathematical expressions. |
5 | 5 | This is the repository of the interpreter of Egison.
|
6 | 6 |
|
7 | 7 | For more information, visit <a target="_blank" href="https://www.egison.org">our website</a>.
|
8 | 8 |
|
9 |
| -## Non-Linear Pattern-Matching against Non-Free Data Types |
| 9 | +## Non-Linear Pattern-Matching for Non-Free Data Types |
10 | 10 |
|
11 |
| -We can do non-linear pattern-matching against non-free data types in Egison. |
12 |
| -An non-free data type is a data type whose data have no canonical form, a standard way to represent that object. |
13 |
| -It enables us to write elegant programs. |
| 11 | +We can describe non-linear pattern-matching for non-free data types in Egison. |
| 12 | +A non-free data type is a data type whose data have no canonical form, a standard way to represent that object. |
| 13 | +For example, multisets are non-free data types because the multiset {a,b,b} has two other equivalent but literally different forms {b,a,b} and {b,b,a}. |
| 14 | +Expressive pattern-matching for these data types enables us to write elegant programs. |
14 | 15 |
|
15 | 16 | ### Twin Primes
|
16 | 17 |
|
@@ -54,12 +55,12 @@ We can use it for pattern-matching also against graphs and tree-structures such
|
54 | 55 |
|
55 | 56 | ## Egison as a Computer Algebra System
|
56 | 57 |
|
57 |
| -As an application of Egison, we implemented a computer algebra system on Egison. |
58 |
| -The most part of this computer algebra system is written in Egison and extensible in Egison. |
| 58 | +As an application of Egison pattern matching, we have implemented a computer algebra system on Egison. |
| 59 | +The most part of this computer algebra system is written in Egison and extensible using Egison. |
59 | 60 |
|
60 | 61 | ### Symbolic Algebra
|
61 | 62 |
|
62 |
| -Unbound variables are treated as symbols. |
| 63 | +Egison treats unbound variables as symbols. |
63 | 64 |
|
64 | 65 | ```
|
65 | 66 | > x
|
@@ -279,16 +280,17 @@ Here are more samples.
|
279 | 280 |
|
280 | 281 | There are <a target="_blank" href="https://ghc.haskell.org/trac/ghc/wiki/ViewPatterns#Relatedwork">a lot of existing work</a> for pattern-matching.
|
281 | 282 |
|
282 |
| -The advantage of Egison is that it achieves **all of the following features** at the same time. |
| 283 | +The advantage of Egison is that it fulfillss **all the following two requirement** at the same time. |
283 | 284 |
|
284 |
| -* Modularization of the way of pattern-matching for each data type |
285 |
| -* Pattern-matching with multiple results (backtracking) |
286 |
| -* Non-linear pattern-matching with **lexical scoping** |
287 |
| -* Parametric polymorphism of pattern-constructors |
| 285 | +(1) Efficient backtracking algorithm for non-linear pattern matching. |
| 286 | +(2) Extensibility of patterns. |
288 | 287 |
|
289 |
| -The <a target="_blank" href="https://www.egison.org/manual/mechanism.html">Pattern-Matching Mechanism</a> section in Egison developer's manual explains how we achieve that. |
| 288 | +Additionally, it fulfills the following requirements. |
290 | 289 |
|
291 |
| -Please read <a target="_blank" href="http://arxiv.org/abs/1407.0729">our paper on arXiv.org</a> for details. |
| 290 | +(3) Polymorphism of patterns. |
| 291 | +(4) Pattern matching with infinitely many results. |
| 292 | + |
| 293 | +Please read <a target="_blank" https://arxiv.org/abs/1808.10603">our paper</a> for details. |
292 | 294 |
|
293 | 295 | ## Installation
|
294 | 296 |
|
@@ -387,7 +389,7 @@ Please follow us.
|
387 | 389 |
|
388 | 390 | ## Acknowledgement
|
389 | 391 |
|
390 |
| -I thank Ryo Tanaka, Takahisa Watanabe, Takuya Kuwahara, Kentaro Honda, and Mayuko kori for their help to implement the interpreter. |
| 392 | +I thank Ryo Tanaka, Takahisa Watanabe, Takuya Kuwahara, Kentaro Honda, and Mayuko Kori for their help to implement the interpreter. |
391 | 393 |
|
392 | 394 | ## License
|
393 | 395 |
|
|
0 commit comments