Nial

Nial (aus der "Verschachtelten Interaktiven Reihe-Sprache") ist eine Reihe-Programmiersprache auf höchster Ebene entwickelt ungefähr von 1981 von Mike Jenkins von Universität der Königin, Kingston, Ontario, Kanada.

Nial verbindet eine funktionelle Programmiernotation für die Reihe, die auf der Reihe-Theorie gestützt ist, die durch Trenchard Mehr mit strukturierten Programmierkonzepten für den numerischen, den Charakter und die symbolischen Daten entwickelt ist.

Es wird meistenteils für prototyping und künstliche Intelligenz verwendet.

1982 hat Jenkins eine Gesellschaft Nial Systems Ltd gebildet, um die Sprache und die Durchführung von Q'Nial von Nial auf den Markt zu bringen. Bezüglich 2006 unterstützt die Firmenwebsite ein Projekt des Open Sources für die Software von Q'Nial mit der Dualzahl und Quelle, die für das Download in Form von einer Künstlerischen Lizenz verfügbar ist.

Nial Concepts

Nial verwendet eine verallgemeinerte und ausdrucksvolle Reihe-Theorie in seiner Version 4, aber hat etwas von der Allgemeinheit des funktionellen Modells geopfert, und hat die Reihe-Theorie in der Version 6 modifiziert. Nur Version 6 ist jetzt verfügbar.

Nial definiert seinen ganzen datatypes als verschachtelte rechteckige Reihe. ints, booleans, werden Rotforellen usw. als eine einsame Reihe oder eine Reihe betrachtet, die ein einzelnes Mitglied enthält. Reihe selbst kann andere Reihe enthalten, um willkürlich Tiefenstrukturen zu bilden. Nial stellt auch Aufzeichnungen zur Verfügung. Sie werden als non-homogenous Reihe-Struktur definiert.

Funktionen in Nial werden Operationen genannt. Aus dem Handbuch von Nial: "Eine Operation ist ein funktioneller Gegenstand, der eine Argument-Reihe gegeben wird und eine Ergebnis-Reihe zurückgibt. Der Prozess, eine Operation durch das Geben ihm eines Argument-Werts durchzuführen, wird einen Operationsanruf oder eine Operationsanwendung genannt."

Anwendung von Operationen

Nial wie anderer APL hat abgestammt Sprachen erlauben die Vereinigung von binären Maschinenbedienern und Operationen. So unter Notationen haben dieselbe Bedeutung.

Zeichen: Ist dasselbe als

binäre Operation

2 + 3

2 Summe 3

in der Reihe-Notation

+ [2,3]

Summe [2,3]

Ufer-Notation

+ 2 3

resümieren Sie 2 3

gruppierte Notation

+ (2 3)

Summe (2 3)

Nial verwendet auch Transformatoren, die höhere Ordnungsfunktionen sind. Sie verwenden die Argument-Operation, um eine neue modifizierte Operation zu bauen.

zweimal ist Transformator f (f f)

zweimal Rest [4, 5, 6, 7, 8]

|6 7 8

Atlas

Ein Atlas in Nial ist eine aus einer Reihe von Teiloperationen zusammengesetzte Operation. Wenn ein Atlas auf einen Wert angewandt wird, wird jedes Element des Atlasses der Reihe nach auf den Wert angewandt, um ein Endergebnis zur Verfügung zu stellen. Das wird verwendet, um Punkt freien Stil (ohne Variablen) von Definitionen zur Verfügung zu stellen. Es wird auch durch die Transformatoren verwendet. In unter Beispielen 'inner [+ *]' ist die Liste' [+, *]' ein Atlas.

Beispiele

Das Schaffen der Reihe

Punkt der Klagebegründung 6

|1 2 3 4 5 6

Reihe kann auch wörtlicher sein

Arr: = [5, 6, 7, 8, 9]

|5 6 7 8 9

Gestalt gibt die Reihe-Dimensionen, und formen Sie neu kann verwendet werden, um die Dimensionen neu zu formen.

gestalten Sie Arr

|5

a: = 2 3 formen Arr neu

# formen neu ist eine binäre Operation mit zwei Argumenten. Es kann auch im Infix als geschrieben werden

# a: = formen 2,3], Arr] neu

|5 6 7

|8 9 5

b: = 3 2 formen Arr neu

|5 6

|7 8

|9 5

ein innerer [+, *] b

|130 113

|148 145

Rechendurchschnitt

Definitionen sind von der Form'

Durchschnitt ist / [Summe, Aufzeichnung]

durchschnittlicher Arr

|7.

Computerwissenschaft Factorial

Tatsache ist kehren [0 =, 1 erster, Pass, Produkt,-1 +] wieder

Tatsache 4

|24

Das Umkehren einer Reihe

Umdrehung ist formen [Gestalt, über [Pass neu, Pass, gegenteilig hängen]] an

Umdrehung [1, 2, 3, 4]

|4 3 2 1

Das Erzeugen der Blüte

Unähnlichkeit mit APL

Blüte ist Subliste [jeder (2 = summieren eachright (0 = mod) [Pass, Zählung]), Pass] Rest zählt auf

Blüte 10

|2 3 5 7

Erklärung

Die Überprüfung der Teilbarkeit durch B

is_divisible ist 0 = mod [A, B]

Das Definieren is_prime Filter

is_prime ist 2 = summieren eachright is_divisible [Pass, Zählung]

Graf erzeugt eine Reihe [1.. N] und ist Pass N (Identitätsoperation).

eachright wendet is_divisible (Pass, Element) in jedem Element der Zählungserzeugten Reihe an.

So gestaltet das die Zählungserzeugte Reihe in eine Reihe um, wo Zahlen, die N teilen können, durch '1' und andere durch '0' ersetzt werden. Folglich, wenn die Nummer N, Summe [erst ist, muss umgestaltete Reihe] 2 (selbst und 1) sein.

Jetzt soll alles, was bleibt, eine andere Reihe mit dem Punkt der Klagebegründung N und Filter alles erzeugen, was nicht erst sind.

Blüte ist Subliste [jeder is_prime, Pass] Rest zählt auf

QuickSort

Verbindung trifft seine Argument-Reihe zusammen

Subliste [A, B] gibt eine Liste von Sachen von B zurück, der gemäß der Liste von in A gegebenem booleans gewählt ist, jene Sachen von B auswählend, wo der entsprechende Artikel von A wahr ist.

In einer Gabel [A, B, C] X ist der erste A ein Prädikat, und wenn (X) wahr ist, dann wird B (X) sonst C (X) zurückgegeben wird zurückgegeben.

Pass ist eine Identitätsoperation wegen der Reihe.

Schnellsortierung ist Gabel [> = [1 erster, Aufzeichnung],

Pass,

Verbindung [

Schnellsortierungssubliste [

]

]

Das Verwenden davon.

Schnellsortierung [5, 8, 7, 4, 3]

|3 4 5 7 8

Außenverbindungen


Noam Chomsky / Nörgler Hammadi
Impressum & Datenschutz