Skip to content

mlochbaum/ILanguage

Repository files navigation

The I programming language

I is a language which generalizes the array and functional capabilities of the array-programming language J to deal with a much broader variety of data structures.

Some features and design goals of I include:

  • Automatic mapping. Like J's array operations, I will map over lists, sets, associated arrays, and functions.
  • Soft typing built into the core of the language.
  • Automatic optimization when types are known, using JIT compilation.
  • Functional programming. Everything in I is a function.
  • Near-nonexistent syntax. Everything is function application.
  • Whitespace defines the order of precedence in a visually intuitive way.

Portability

The master branch contains version 0.1, which uses JIT compilation to do some operations very quickly. The compilation currently targets only the x86-64 architecture. Nearly all 64-bit desktop or laptop processors should use this architecture, but if your machine does not, you may want to use version 0.0, branch v0.0. All versions of I have only been tested on Linux and would probably require a small amount of modification to work with other operating systems.

Building I

To build, run gcc *.c -o I. Then ./I is a command-line interpreter.

Resources

See doc/introduction.md to begin learning about I.

The flash of insight that started I, built-in mapping, is documented at doc/BuiltInMapping/BuiltInMapping.pdf. It is presented in a manner that should be accessible to programmers without any specific language knowledge aside from functional programming.

About

An interpreter for a J-inspired language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published