ELI (programming language)

Last updated
ELI [1]
Paradigm array
Designed by Wai-Mee Ching
Developer Hanfeng Chen [2] (Rapidsoft)
First appeared2011;9 years ago (2011)
Stable release
0.3 / August 10, 2015;5 years ago (2015-08-10)
Typing discipline dynamic
Implementation language C++, Qt
Platform IA-32, x86-64
OS Cross-platform: Windows, Linux, macOS
License Freeware
Filename extensions .esf .eli
Website fastarray.appspot.com
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.

Contents

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 on Windows, Linux, and macOS.

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. [4]

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

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) 

Related Research Articles

APL is a programming language developed in the 1960s by Kenneth E. Iverson. Its central datatype is the multidimensional array. It uses a large range of special graphic symbols to represent most functions and operators, leading to very concise code. It has been an important influence on the development of concept modeling, spreadsheets, functional programming, and computer math packages. It has also inspired several other programming languages.

AWK is a domain-specific language designed for text processing and typically used as a data extraction and reporting tool. It is a standard feature of most Unix-like operating systems.

MATLAB Numerical computing environment and programming language

MATLAB is a multi-paradigm numerical computing environment and proprietary programming language developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages.

Lua (programming language) Lightweight programming language

Lua is a lightweight, high-level, multi-paradigm programming language designed primarily for embedded use in applications. Lua is cross-platform, since the interpreter of compiled bytecode is written in ANSI C, and Lua has a relatively simple C API to embed it into applications.

GRASS is a programming language created to script 2D vector graphics animations. GRASS was similar to BASIC in syntax, but added numerous instructions for specifying 2D object animation, including scaling, translation and rotation over time. These functions were directly supported by the Vector General 3D graphics terminal GRASS was written for. It quickly became a hit with the artistic community who were experimenting with the new medium of computer graphics, and is most famous for its use by Larry Cuba to create the original "attacking the Death Star will not be easy" animation in Star Wars (1977).

Commodore BASIC, also known as PET BASIC or CBM-BASIC, is the dialect of the BASIC programming language used in Commodore International's 8-bit home computer line, stretching from the PET of 1977 to the C128 of 1985.

ActionScript object-oriented programming language

ActionScript is an object-oriented programming language originally developed by Macromedia Inc.. It is influenced by HyperTalk, the scripting language for HyperCard. It is now an implementation of ECMAScript, though it originally arose as a sibling, both being influenced by HyperTalk.

In some programming languages, eval is a function which evaluates a string as though it were an expression and returns a result; in others, it executes multiple lines of code as though they had been included instead of the line including the eval. The input to eval is not necessarily a string; it may be structured representation of code, such as an abstract syntax tree, or of special type such as code. The analog for a statement is exec, which executes a string as if it were a statement; in some languages, such as Python, both are present, while in other languages only one of either eval or exec is.

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.

F-Script is an object-oriented scripting programming language for Apple's macOS operating system developed by Philippe Mougin. F-Script is an interactive language based on Smalltalk, using macOS's native Cocoa API.

Comparison of command shells Wikimedia list article

A command shell is a command line interface computer program to an operating system.

In computer programming, an entry point is where the first instructions of a program are executed, and where the program has access to command line arguments.

Rank is a generalization of looping as used in scalar (non-array-oriented) programming languages. It is also a generalization of mapcar in the language Lisp and map in modern functional programming languages, and a generalization of scalar extension, inner (matrix) product, and outer product in APL\360. The canonical implementation of rank may be the language J, but it is also available in Dyalog APL, the International Organization for Standardization (ISO) technical standard on Extended APL, and NARS2000.

The programming language APL is distinctive in being symbolic rather than lexical: its primitives are denoted by symbols, not words. These symbols were originally devised as a mathematical notation to describe algorithms. APL programmers often assign informal names when discussing functions and operators but the core functions and operators provided by the language are denoted by non-textual symbols.

In computing, exec is a functionality of an operating system that runs an executable file in the context of an already existing process, replacing the previous executable. This act is also referred to as an overlay. It is especially important in Unix-like systems, although exists elsewhere. As a new process is not created, the process identifier (PID) does not change, but the machine code, data, heap, and stack of the process are replaced by those of the new program.

Tacit programming, also called point-free style, is a programming paradigm in which function definitions do not identify the arguments on which they operate. Instead the definitions merely compose other functions, among which are combinators that manipulate the arguments. Tacit programming is of theoretical interest, because the strict use of composition results in programs that are well adapted for equational reasoning. It is also the natural style of certain programming languages, including APL and its derivatives, and concatenative languages such as Forth. The lack of argument naming gives point-free style a reputation of being unnecessarily obscure, hence the epithet "pointless style".

In computer programming, an anonymous function is a function definition that is not bound to an identifier. Anonymous functions are often arguments being passed to higher-order functions, or used for constructing the result of a higher-order function that needs to return a function. If the function is only used once, or a limited number of times, an anonymous function may be syntactically lighter than using a named function. Anonymous functions are ubiquitous in functional programming languages and other languages with first-class functions, where they fulfil the same role for the function type as literals do for other data types.

Speakeasy (computational environment) numerical computing interactive environment also featuring an interpreted programming language

Speakeasy is a numerical computing interactive environment also featuring an interpreted programming language. It was initially developed for internal use at the Physics Division of Argonne National Laboratory by the theoretical physicist Stanley Cohen. He eventually founded Speakeasy Computing Corporation to make the program available commercially.

John M. Scholes British computer scientist

John Morley Scholes (1948–2019) was a British computer scientist. His professional career was devoted to the development of the programming language APL. He was the designer and implementer of direct functions.

A direct function is an alternative way to define a function and operator in the programming language APL. A direct operator can also be called a dop. They were invented by John Scholes in 1996. They are a unique combination of array programming, higher-order function, and functional programming, and are a major distinguishing advance of early 21st century APL over prior versions.

References

  1. ELI: a simple system for array programming
  2. ELI - mirror site in the Sable lab at McGill University
  3. ELI - official site Hosted on Google App Engine
  4. Chen, Hanfeng (2015). "Overview". ELI, a System for Programming with Arrays. Fastarray.appspot.com. Retrieved 26 February 2018.