ニアル


Nial

イランの村については「ニアル, イラン」をご覧
 “Nial”  
Nial (「Nested Interactive Array Language」から) は、カナダのオンタリオ州キングストンにあるクイーンズ大学のMike Jenkins によって 1981 年頃から開発された高水準の配列プログラミング言語です。Jenkins は、 Jenkins–Traub アルゴリズムを共同作成しました。
ニアル
パラダイム
配列
によって設計された
マイク・ジェンキンス
デベロッパー
ニール・システムズ株式会社
初登場 1981年 安定版リリース
7.0 / 2017 ; 6年前 ( 2017 )
タイピングの規律
動的
ライセンス GNU GPLv3 ファイル名拡張子
.ndf、.nlg
Webサイト
www .nial-array-language .org
主な実装
クニアル
に影響を受けた APL、Lisp Nial は、 Trenchard Moreによって開発された配列理論に基づく配列の関数型プログラミング表記法と、数値、文字、および記号データの構造化プログラミングの概念を組み合わせています。
プロトタイピングや人工知能に最もよく使用されます。
コンテンツ
1 クニアル
2 ニールのコンセプト
3 操作の適用
4 アトラス
5 例
5.1 配列の作成 5.2 平均の計算 5.3 階乗の計算 5.4 配列の反転 5.5 素数の生成
5.5.1 説明
5.6 クイックソート
6 参考文献

クニアル
1982 年、Jenkins は Nial の言語と Q’Nial 実装を販売する会社 (Nial Systems Ltd) を設立しました。2014 年現在、同社の Web サイトは Q’Nial ソフトウェアのオープン ソース プロジェクトをサポートしており、バイナリとソースをダウンロードできます。そのライセンスはArtistic License 1.0から派生したものであり、唯一の違いは前文、「著作権所有者」の定義 (「パッケージの著作権または著作権で名前が付けられている人」から「NIAL Systems Limited」に変更されている) です。 「whoever」のインスタンス (「whoever」に変更されます)。

ニールのコンセプト
Nial は、バージョン 4 で一般化された表現力豊かな配列理論を使用していますが、関数モデルの一般性の一部を犠牲にし、バージョン 6 で配列理論を修正しました。現在、バージョン 6 のみが利用可能です。
Nial は、すべてのデータ型をネストされた長方形配列として定義します。ints、booleans、chars などは、単一の配列または単一のメンバーを含む配列と見なされます。配列自体には、任意の深さの構造を形成するために他の配列を含めることができます。Nial は Records も提供します。それらは、不均一な配列構造として定義されています。
Nial の関数はオペレーションと呼ばれます。Nial マニュアルより: 「操作は、引数配列を与えられ、結果配列を返す機能オブジェクトです。引数値を与えて操作を実行するプロセスは、操作呼び出しまたは操作アプリケーションと呼ばれます。」

操作の適用
Nial は、他の APL 派生言語と同様に、二項演算子と演算の統合を可能にします。したがって、以下の表記は同じ意味を持ちます。注:sumと同じです+
二項演算:
2 + 32 合計 3
配列表記:+ 合計
ストランド表記:+ 2 3合計 2 3
グループ表記:+ (2 3)合計 (2 3)
Nial は、高次関数である変換器も使用します。引数 operation を使用して、新しい変更された操作を構築します。
2 倍はトランス f (ff)二回休む |6 7 8

アトラス
Nial のアトラスは、コンポーネント操作の配列で構成される操作です。アトラスを値に適用すると、アトラスの各要素が順番に値に適用され、結果が得られます。これは、ポイントフリー (変数なし) スタイルの定義を提供するために使用されます。トランスフォーマーにも使われています。以下の例 ‘inner ‘ では、リスト ” はアトラスです。

配列の作成
6を数える|1 2 3 4 5 6
配列はリテラルにすることもできます
到着:= |5 6 7 8 9
Shape は配列の次元を指定し、 reshape を使用して次元を再形成できます。
形状着|5
a := 2 3 reshape Arr# reshape は 2 つの引数を持つ 2 項演算です。接頭辞で次のように書くこともできます。# a := reshape |5 6 7|8 9 5
b := 3 2 reshape Arr|5 6|7 8|9 5
a inner b|130 113|148 145

平均の計算
定義は、’ is ‘ の形式です。
平均は / 平均到着|7.

階乗の計算
事実は繰り返される [0 =、最初に 1、合格、積、-1 +]事実4|24

配列の反転
rev は reshape [ shape, across [pass, pass, converse append ] ]リビジョン |4 3 2 1

素数の生成
APLとの対比
素数はサブリストです [ each (2 = sum eachright (0 = mod) ), pass ] 残りのカウント素数 10|2 3 5 7

説明
A が B で割り切れるかどうかのチェックis_divisible is 0 = mod
is_prime フィルターの定義
is_prime is 2 = 各権利の合計 is_divisible
Count は配列 を生成し、パスは N (恒等演算) です。eachright は、カウント生成配列の各要素に is_divisible (パス、要素) を適用します。したがって、これは、カウント生成された配列を、N を割り切れる数が ‘1’ に置き換えられ、それ以外が ‘0’ に置き換えられる配列に変換します。したがって、数値 N が素数の場合、合計 は 2 (それ自体と 1) でなければなりません。
あとは、カウント N を使用して別の配列を生成し、素数でないものをすべてフィルター処理するだけです。
primes is sublist [each is_prime, pass] レストカウント

クイックソート
linkその引数配列を結合します
sublist は、A で指定されたブール値のリストに従って選択された B の項目のリストを返し、A の対応する項目が true である B の項目を選択します。
X では、最初の A が述語であり、A(X) が true の場合、B(X) が返され、それ以外の場合は C(X) が返されます。
Pass配列の同一性操作です。
クイックソートは fork [ >= , 合格、 リンク [ クイックソートサブリスト 、
サブリスト 、
クイックソート サブリスト ]
それを使用して:
クイックソート |3 4 5 7 8

参考文献
^ 「ニアル言語」 . GitHub . 2021 年 12 月 17 日。
^ 「Q’Nial Dictionary V7」 .