ELI[1] | |
Paradigm: | array |
Designer: | Wai-Mee Ching |
Developer: | Hanfeng Chen[2] (Rapidsoft) |
Latest Release Version: | 0.3 |
Typing: | dynamic |
Programming Language: | C++, Qt |
Platform: | IA-32, x86-64 |
Operating System: | Cross-platform |
License: | Freeware |
File Ext: | .esf .eli |
Influenced By: | APL, Q |
ELI[3] is an interactive array programming language system based on the programming language APL. It has most of the functions of the International Organization for Standardization (ISO) APL standard ISO/IEC 13751:2001, and also list for non-homogeneous or non-rectangular data, complex numbers, symbols, temporal data, and control structures. A scripting file facility is available to organize programs in a fashion similar to using #include
in C, which also provides convenient data input/output. ELI has dictionaries, tables, and a basic set of SQL-like statements. For performance, it has 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 array programming compared with MATLAB or Python, ELI encourages a dataflow programming style, where the output of one operation feeds the input of another.
ELI is available without charge, as freeware, on Windows, Linux, and macOS.
ELI version 0.3, described as a stable release, was released on August 10, 2015. It integrates with a cross-platform IDE, ELI Studio, which provides a code editor with specialized functions to write and load ELI code. Three added widgets are used to monitor functions, variables, libraries and command history.
Version 0.3 adds several new features.[4]
A line of ELI executes from right to left as a chain of operations; anything to the right of ‘//’ is a comment.
Exclamation point (!) is an interval function. It can generate a vector of n integer from 1 to n.add
is declared in a short function form. The arguments of the function can be either a scalar or a vector.$
rotation operator returns the reverse order of a vector.2 3 4#!24
) can be generated by #
with left argument 2 3
.x
is assigned with a vector from 1 to 20. Then, 1 = 2|x
returns odd number True
and even number False
. The /
is a primitive function for compression which picks up the value in x
corresponding to the True
values in its left argument.
Two file extensions are used in ELI for exchanging and sharing code for different purposes: .esf
and .eli
.
An ELI file with extension .esf
is a script file which contains all methods and data. A simple way to create a script file is using the command )out
. However, a clean workspace with no debugging or error information left is needed before a script file can be created. Later the command )fload
can be used to reload the script file.
An ELI file with extension .eli
is an ELI workspace file which contains everything in a workspace. save
and load
are commands for workspace files.