Jump to content

ELI (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Pol098 (talk | contribs) at 18:09, 16 October 2017 (wording). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
ELI[1]
Paradigmarray
Designed byWai-Mee Ching
DeveloperHanfeng Chen[2] (Rapidsoft)
First appeared2011
Stable release
0.3 / August 10, 2015
Typing disciplinedynamic
OSCross-platform
Filename extensions.esf .eli
Websitefastarray.appspot.com
Major implementations
C++, Qt
Influenced by
APL, Q

ELI[3] is an interactive array programming computer language system based on APL. It has most of the functionality of ISO APL standard, 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, 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 array programming compared with MATLAB or Python, ELI encourages a dataflow style of programming where the output of one operation feeds the input of another.

ELI is available without charge on Windows, Linux and Mac OS.

Version 0.3

ELI version 0.3 was released on August 10, 2015. It integrates with a cross-platform IDE, ELI Studio, which provides a code editor with specialized functionalities to write and load ELI code. Three additional widgets are used to monitor functions, variables, libraries and command history.

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
  • Semi Colon (;)

Documentation:

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.

      {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

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

There are two kinds of file extensions in ELI: .esf and .eli. Both are designed for exchanging and sharing code based on different purposes.

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 without any debugging or error information left is required 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 designed for workspace files.

      )save MyWorkspace
      )load MyWorkspace
saved 2017.02.17 10:57:19 (gmt-5)

Development notes

  • (Dec. 2016) ELI began to actively maintain its online language reference manual which can be found at fastarray/docs
  • (Dec. 2016) An ELI primer was released

See also

  • APL, the first array programming language
  • J, another APL-inspired language
  • Q, programming language from Kx Systems

References