The Egison Programming Language
Toggle navigation
Egison
Documentations
Documentations
Installation Manual
Install Egison in Mac
Install Egison in Linux
Install Egison in Windows
Emacs Mode
Emacs Mode for Egison
User's Manual
Basics of Syntax and Semantics
Basics of Patterns : Syntax and Semantics
Pattern Matching
Matchers
Basics of I/O
Primitive Functions
Developer's Manual
Pattern-Matching Mechanism
Cheat Sheet
Egison Cheat Sheet
Quick Reference
Egison Quick Reference
Developement Status
ChangeLog on GitHub
Milestones
Others
Concept of Egison
History of Egison
FAQ
Egison Command Line Tutorial
Libraries
List of all core functions
Libraries
lib/core/base.egi
lib/core/collection.egi
lib/core/order.egi
lib/core/number.egi
lib/core/string.egi
lib/core/random.egi
lib/core/io.egi
lib/math/analysis/derivative.egi
-->
Try It Out
Online Tools
Online Egison Interpreter
Online Egison Tutorial
Online Demonstrations
Poker Hands
Mahjong
Prime Numbers
Trees
Graph (Bellman-Ford Algorithm)
Randomized 3-SAT
Time-Series Data
Math
Blog
Community
Tweet
-->
-->
-->
--><br>The Egison Programming Language
- Express Intuition Directly with Essentially New Syntax -
Egison is a programming language that features extensible efficient non-linear pattern matching with backtracking for non-free data types.
We can directly represent pattern matching for a wide range of data types including lists, multisets, sets, trees, graphs, and mathematical expressions.
Egison makes programming dramatically simple!
-- Extract all twin primes from the infinite list of prime numbers with pattern matching!<br>def twinPrimes : [(Integer, Integer)] :=<br>matchAll primes as list integer with<br>| _ ++ $p :: #(p + 2) :: _ -> (p, p + 2)
-- Enumerate first 10 twin primes.<br>assertEqual "first 10 twin primes"<br>(take 10 twinPrimes)<br>[(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73), (101, 103), (107, 109)]
Pattern-Match-Oriented
Egison proposes a new paradigm pattern-match-oriented .<br>The combination of all of the following features enables intuitive powerful pattern matching.
Efficiency of the backtracking algoirthm for non-linear patterns
Extensibility of pattern matching
Polymorphisim in patterns
Pattern matching with lexical scoping
-->
Concept of Egison Pattern Matching (5 mins)--><br>Egison Pattern-Matching Paper
Computer Algebra System
Egison allows programmers to use tensor index notation including the support for differential forms .
Egison introduces two types of parameters, scalar and tensor parameters, and a set of simple index reduction rules for that.
When a tensor is provided to a scalar parameter, the function is applied to each component of the tensor.<br>When a tensor is provided to a tensor parameter, the function treats the tensor argument as a whole.
-->
Demo: Riemann Curvature Tensor of `S^2` »<br>Concept of Egison as CAS (5 mins)<br>--><br>Egison Tensor Paper
Online Demonstrations
Please try Egison's original features.
Pattern Matching
Poker Hands
Mahjong
Twin Primes
Computer Algebra System
Riemann Curvature Tensor of `S^2`
Hodge Operator of Minkowski Space
Hodge Laplacian of Polar Coordinates
[2020/04/13] We've released Egison version 4.0.0!
[2019/12/02] Paper on pattern-match-oriented programming has been accepted to 2020!
[2018/08/13] Paper on the design of Egison pattern matching has been accepted to APLAS 2018!
Installation
Mac OS X<br>Linux<br>Windows<br>Egison Cheat Sheet
Please refer this cheat sheet when you write Egison programs.
Documentations
Egison User's Manual
Basics of Syntax and Semantics
Basics of Patterns : Syntax and Semantics
Pattern Matching
Matchers
Basics of I/O
Primitive Functions
Egison Developer's Manual
Pattern Matching Mechanism
Egison Paper
Pattern-Matching Paper
Tensor Paper
Others
Egison Cheat Sheet
Egison Quick Reference
Try Egison Online
Online Egison Interprter Version 3.3.8 (C) 2011-2014 Satoshi Egi<br>Welcome to Egison Interpreter!<br>** Information **<br>We are supporting Emacs key bindings to move cursor.
Online Egison Interpreter<br>Online Egison Tutorial<br>Online Demonstrations "
-->
Papers on Egison
Satoshi Egi and Yuichi Nishiwaki: Functional Programming in Pattern-Match-Oriented Programming Style, The Art, Science, and Engineering of Programming, 2020, Vol. 4, Issue 3, Article 7
Satoshi Egi: Scheme Macros for Non-linear Pattern Matching with Backtracking for Non-free Data Types, The Scheme and Functional Programming Workshop 2019
Satoshi Egi and Yuichi Nishiwaki: Non-linear Pattern Matching with Backtracking for Non-free Data Types, APLAS 2018 - Asian Symposium on Programming Languages and Systems
Satoshi Egi: Loop Patterns: Extension of Kleene Star Operator for More Expressive Pattern Matching against Arbitrary Data Structures, The Scheme and Functional Programming Workshop 2018
Satoshi Egi: Scalar and Tensor Parameters for Importing Tensor Index Notation including Einstein Summation Notation,...