ELI (programming language)
Paradigm | array |
---|---|
Designed by | Wai-Mee Ching |
Developer | Rapidsoft[2] (Hanfeng Chen[3]) |
First appeared | 2011 |
Stable release | 0.2
/ November 30, 2013 |
Typing discipline | dynamic |
OS | Cross-platform |
Filename extensions | .esf .eli |
Website | fastarray |
Major implementations | |
C++ | |
Influenced by | |
APL, Q |
ELI is an interactive array programming language system based on APL. It has the most of functionalities of ISO APL standard. In addition to classical APL, ELI features list for non-homogeneous or non-rectangular data, complex numbers, symbols, temporal data, and control structures. A scripting file facility helps a user to easily organize programs in a fashion similar to using #include in C, which also provides convenient data input/output. Moreover, ELI has dictionaries, tables and a basic set of SQL-like statements. For performance, ELI offers a compiler restricted to flat array programs.
By replacing each APL character with one or two ASCII characters, ELI retains APL’s succinct and expressive way of doing array programming, i.e. compared with MATLAB or Python, ELI encourages a dataflow style of programming where the output of one operation feeds the input of another that results in greater productivity and clarity of code.
ELI is free and available on Windows, Linux and Mac OS.
Example Code
A line of ELI executes from right to left as a chain of operations; anything to the right of ‘//’ is a comment.
!10 1 2 3 4 5 6 7 8 9 10
Exclamation point (!) is an interval function. It can generate a vector of n integer from 1 to n.
5 * 2 + 10 // from right to left, 5 * (2 + 10) 60
The execution order of ELI is from right to left and all primitive functions have equal precedence.
{add: x+y} // short function form add 1 add 2 // 1+2 3 1 add !10 // 1+(1..10) 2 3 4 5 6 7 8 9 10 11
First, a function add
is declared in a short function form. Then, the arguments of the function can take either a scalar or a vector.
$!10 // rotation 10 9 8 7 6 5 4 3 2 1
The rotation operator returns the reverse order of a vector.
2 3#!6 // 2 dimension array (matrix) 1 2 3 4 5 6
A 2-by-3 matrix (or higher dimension array, e.g. 2 3 4#!24
) can be generated by #
with left argument 2 3
.
x <- !20 // 1..20 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (1 = 2|x) / x // get odd numbers from x 1 3 5 7 9 11 13 15 17 19
The x
is assigned with a vector from 1 to 20. 1 = 2|x
returns odd number True
and even number False
. The /
is a primitive function for reduction that can pick up the value in x
based on the True
value in its left argument.
References
- ^ ELI: a simple system for array programming
- ^ ELI - official site "ELI is freely available on Windows, Linux and Mac OS; see Download for versions and update information. An introductory paper, a tutorial on Programming with Arrarys , a Primer and a Compiler User’s Guide are available in Documents. We give a sample here to illustrate the flavor of the language." "© 2015 by chf"
- ^ ELI - mirror site at Queen's University