The Egison Programming Language

Tomte1 pts0 comments

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` &raquo<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,...

egison pattern matching tensor programming online

Related Articles