-
Notifications
You must be signed in to change notification settings - Fork 7
/
faq.html
134 lines (98 loc) · 5.16 KB
/
faq.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html>
<html lang="en">
<head>
<!--# include file="/templates/header.html" -->
<title>Egison - FAQ</title>
</head>
<body data-spy="scroll" data-target=".bs-sidebar" data-offset="0">
<!--# include file="/templates/navbar.html" -->
<div class="container manual">
<div class="row">
<div class="col-md-12" id="top" role="complementary">
<h1>Questions and Answers</h1>
</div>
</div>
<div class="row">
<div class="col-md-12" role="main">
<hr/>
<ul>
<!--# include file="/templates/faq.html" -->
</ul>
<hr/>
<h2 id="what-is-egison">What is Egison?</h2>
<p>
Egison is a programming language with the strong expressive power of pattern-matching.<br/>
With Egison, we can express pattern-matching against a wide range of data types including multisets and sets.<br/>
For example, we can use pattern-matching to express <a href="/demonstrations/poker-hands.html">poker hands</a>, <a href="/demonstrations/mahjong.html">mahjong</a>, and <a href="/ja/demonstrations/primes.html">enumeration of twin primes</a>.
</p>
<h2 id="why-the-name-is-egison">Why the name is Egison?</h2>
<p>
The name <b>Egi-son</b> is given by the creator <a target="_blank" href="/~egi/">Satoshi Egi</a> to make it clear that he (<b>Egi</b>) <b>created</b> that.
</p>
<h2 id="why-new-language">Why new language?</h2>
<p>
Implementation of the Egison pattern-matching has big influence for whole design of a programming language.<br/>
The patterns and the new notions <i>matchers</i>, which defines how to pattern-matching for each data type, have really important role as functions.<br/>
What was the best design changes by introducing this new pattern-matching.<br/>
Additionally, I had to do a lot of experiments to theorize it.<br/>
</p>
<h2 id="history">Tell me the history of Egison!</h2>
<p>
Please read <a href="/history.html">this page</a>!
</p>
<h2 id="logic-programming">What is a difference between logic programming?</h2>
<p>
Pattern-matching of Egison is realized with backtracking as Prolog.<br/>
The difference is that Egison realizes these strong expression in pattern-matching.<br/>
The pattern-matching itself of Prolog is similar with ordinal pattern-matching of the other functional languages.<br/>
</p>
<h2 id="related-work">What is the advantage of Egison over the existing work?</h2>
<p>
There are <a target="_blank" href="https://ghc.haskell.org/trac/ghc/wiki/ViewPatterns#Relatedwork">a lot of existing work</a> for pattern-matching.
</p>
<p>
The advantage of Egison is that it realizes <b>all of the following features</b> at the same time.
</p>
<ul>
<li>Modularization of the way of pattern-matching for each data type</li>
<li>Pattern-matching with multiple results (backtracking)</li>
<li>Non-linear pattern-matching</li>
</ul>
<p>
It enables us to express non-linear pattern-matching against non-free data types intuitively as above demonstrations.
</p>
<p>
Furthermore, Egison realizes the following feature.
We can even modularize patterns like functions keeping above features.
</p>
<ul>
<li>Non-linear pattern-matching with <b>lexical scoping</b></li>
</ul>
<h2 id="how-to-contribute">How to contribute?</h2>
<p>
Please try Egison and give <a target="_blank" href="/~egi/">me</a> feedback.<br/>
If it is interesting for you, please talk and tweet about Egison.<br/>
What is the happiest thing for me is to read Egison code by the people with various backgrounds.<br/>
I believe Egison will be helpful and give breakthrough for the various fields.<br/>
</p>
<p>
I really appreciate if you could create the extensions for the other languages such as Haskell, Python and JavaScript.<br/>
I think these work will have great impact.<br/>
I'd like to do that by myself.<br/>
However, I don't have thorough knowledge of each language to implement extensions, yet.<br/>
I've already implemented <a target="_blank" href="https://github.com/egison/egison-ruby">the Ruby extension</a>.
</p>
<h2 id="next">Next Action...</h2>
<p>
<a class="btn btn-lg btn-primary" href="/" role="button">Back to Home</a>
</p>
</div>
</div><!--/row-->
<hr class="divider">
<div class="row">
<!--# include file="/templates/disqus-main.html" -->
</div><!--/row-->
</div><!-- /.container -->
<!--# include file="/templates/footer.html" -->
</body>
</html>