ELI
is an interactive
array programming
In computer science, array programming refers to solutions which allow the application of operations to an entire set of values at once. Such solutions are commonly used in scientific and engineering settings.
Modern programming languages that s ...
language system based on the
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
APL. It has most of the functions of the
International Organization for Standardization
The International Organization for Standardization (ISO ) is an international standard development organization composed of representatives from the national standards organizations of member countries. Membership requirements are given in Ar ...
(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
In computing, input/output (I/O, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, possibly a human or another information processing system. Inputs are the signals ...
. ELI has dictionaries, tables, and a basic set of
SQL-like statements. For performance, it has a
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
restricted to flat array programs.
By replacing each
APL character with one or two
ASCII
ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because of ...
characters, ELI retains APL's succinct and expressive way of array programming compared with
MATLAB
MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation ...
or
Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
, ELI encourages a
dataflow programming
In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. Dataflow programming languages share ...
style, where the output of one operation feeds the input of another.
ELI is available without charge, as
freeware
Freeware is software, most often proprietary, that is distributed at no monetary cost to the end user. There is no agreed-upon set of rights, license, or EULA that defines ''freeware'' unambiguously; every publisher defines its own rules for the f ...
, on
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
,
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
, and
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
.
Version 0.3
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.
* Like: string match
* Match
* []PP: printing precision control
* )time: performance measure
* []: standard input
* Date and time attributes
* File handle: []open, []close, []write, and []get
* Semicolon (;)
Example code
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.
!10
1 2 3 4 5 6 7 8 9 10
The execution order of ELI is from right to left, and all primitive functions have equal precedence.
5 * 2 + 10 // from right to left, 5 * (2 + 10)
60
In the next example a function
add
is declared in a short function form. The arguments of the function can be either a scalar or a vector.
// 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
The
$
rotation operator returns the reverse order of a vector.
$!10 // reverse
10 9 8 7 6 5 4 3 2 1
A 2-by-3 matrix (or higher dimension array, e.g.,
2 3 4#!24
) can be generated by
#
with left argument
2 3
.
2 3#!6 // 2 dimension array (matrix)
1 2 3
4 5 6
In first line below the
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.
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
File extensions
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.
)out MyScript
)lib
MyScript.esf
)fload MyScript
saved 2017.02.17 10:23:55 (gmt-5)
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.
)save MyWorkspace
)load MyWorkspace
saved 2017.02.17 10:57:19 (gmt-5)
References
External links
*
Online documentationYouTube channel
{{APL programming language
APL programming language family
Array programming languages