First-class array support
Multidimensional arrays are the primary data structure of Nial, and much of its standard library is based around their usage and manipulation.
Multiparadigm
Nial allows both Imperative and Functional style programming to be used in conjunction with each other, allowing much more flexible use of its array programming lineage.
New features
Atlases, unification of prefix and infix notation, errors as data and much more.
Function AtlasesImperative supportFirst-class errors
% A simple atlas applies a list of functions: ;
[+, opposite] 1
1 -1
2 [+, opposite] 1
+-+-----+
|3|-2 -1|
+-+-----+
% Defining an average function: ;
average is /[sum, tally]
average 1 2 3 4
2.5
% Nested atlases! ;
[sum, tally, [product, 7 times]] 1 2 3 4
+--+-+---------------+
|10|4|+--+----------+|
| | ||24|7 14 21 28||
| | |+--+----------+|
+--+-+---------------+
About
Nial (Nested Interactive Array Language) is a general purpose programming language based on a formal model of Arrays developed by Trenchard More and Michael Jenkins.
Nial is part of the APL family of programming languages, with the philosophy that the best design could come from a combination of both functional and imperative styles in an array language. It differs from standard APL in that it offers a more traditional programming language syntax.
Nested arrays of multiple dimensions are the primary data type of Nial. Arrays together with an extensible core set of functions/operators to manipulate arrays and a programming language for the construction of more complex computations allow for the development of efficient programs that can take advantage of the characteristics of modern CPUs.
If Nial looks like a language you’d like to program in, Try it now!
Community
The main place for Nial discussion is the APL Farm, which you can join at these links:
Whether you are a newbie or have been using Nial for a while now, feel free to join!
The r/apljk subreddit also welcomes discussion relating to Nial.
If you would like to contribute to Nial or the Nial ecosystem, you can check out the niallang organization on github, which contains many active projects that are being worked on. Contributions are highly appreciated.