M Ausdruck

In der Computerprogrammierung war M Ausdrücke (oder Meta-Ausdrücke) beabsichtigt, um die Ausdrücke zu sein, die verwendet sind, um Funktionen auf der Lispeln-Programmiersprache zu schreiben. Zu manipulierende Daten mit der M Ausdrücke sollten mit S-Ausdrücken geschrieben werden. M Ausdrücke wurde für die ursprüngliche theoretische Sprache in frühen Zeitungen über das Lispeln verwendet, aber die erste Arbeitsdurchführung des Lispelns hat encodings der M Ausdrücke als S-Ausdrücke interpretiert, und M Ausdrücke wurde nie wirklich durchgeführt.

Historische Beziehung zu S-Ausdrücken

Ein S-Ausdruck vertritt Daten, die aus Atomen und Paaren zusammengesetzt sind. Wie ursprünglich beschrieben, war ein Atom ein Symbol, das in Großbuchstaben geschrieben ist, und ein Paar wurde durch Parenthesen abgegrenzt. Schnellschrift-Listennotation wurde beschrieben, obwohl sie ursprünglich Listenelemente durch Kommas aber nicht whitespace getrennt hat. Zum Beispiel (Räume aber nicht Kommas verwendend):

((EIN B) (C D) (E F))

der eine Liste von drei Elementen vertritt, von denen jedes eine Liste von zwei Symbolen ist.

Eine M Ausdruck konnte auch Maschinenbediener-Namen, Meta-Variablen und Argument-Listen verwenden. Maschinenbediener-Namen und Meta-Variablennamen waren in der unteren Umschaltung, um zu zeigen, dass sie nicht Symbole (d. h., nicht Daten) waren. Argument-Listen wurden durch Klammern abgegrenzt, und ihre Elemente wurden durch Strichpunkte getrennt. Zum Beispiel:

Auto [lernt [(A. B); x]]

der eine zweiteilige Operation vertritt. Der erste Teil baut ein Paar von der Datenstruktur, und was auch immer Daten durch die genannte Meta-Variable vertreten werden. Der zweite Teil zieht das erste Element des gebauten Paares heraus.

In der ursprünglichen veröffentlichten Zeitung von McCarthy auf dem Lispeln, als eine Demonstration der theoretischen Allgemeinheit der Sprache, hat er eine Funktion beschrieben, die als Eingang eine S-Ausdruck-Verschlüsselung einer M Ausdruck nehmen, und die M durch diesen S-Ausdruck verschlüsseltes Ausdruck-Programm durchführen würde. Hier sind einige Beispiele der M Ausdrücke und ihr encodings als S-Ausdrücke (wieder die moderne Listennotation verwendend):

(EIN B C) (ZITAT (EIN B C))

Auto [x] (AUTO X)

Auto [hängt [(Ein B C) an; (D E F)]] (AUTO (HÄNGEN (ZITAT (Ein B C)) (ZITAT (D E F)) AN))

Wie man

erwartete, war die anfängliche Durchführung des Lispelns ein sehr langer Prozess, wie, wie man erwartete, Bearbeiter zurzeit Jahre genommen haben, um zu schreiben. Durchführung hat mit handkompilierenden besonderen Funktionen begonnen, während die M Ausdruck-Subsprache noch versuchsweise war. Jedoch haben Stephen B. Russell und Daniel J. Edwards begriffen, dass eine Durchführung dessen tatsächlich eine volle Durchführung des S-Expression-Encoded-Lispelns als ein Dolmetscher sein würde. Er handkompilierte Funktion - eine sehr leichte Aufgabe, im Vergleich zum vorausgesehenen riesigen Vieljahr-Bearbeiter-Aufbau - und eine Gemeinschaft von S-Ausdruck-Lispeln-Programmierern hat sich schnell entwickelt. M Ausdrücke ist in die Vernachlässigung gefallen und wurde nie durchgeführt.

Späterer Gebrauch der M Ausdrücke

Während es für Lispeln-Programmierer ziemlich üblich ist, eine abwechselnde Form für die Sprache auszudenken (von denen MLISP ein Beispiel ist), von denen einige M Ausdrücke verwenden, haben solche Dialekte allgemein am homoiconicity von S-Ausdrücken Mangel, der als ein wichtiger Teil des Ausdrucksvollen der Sprache betrachtet wird. Infolgedessen eigentlich behalten alle Hauptströmungslispeln-Dialekte S-Ausdrücke als die Hauptsache (oder alleinig) Syntax. Ausnahmen dazu schließen Firmenzeichen ein, das, wie man betrachten konnte, (lose) eine M Ausdruck-Lispeln war. Mehrere andere Sprachen, wie Dylan und Ruby, borgen schwer vom Lispeln, aber verwenden eine EINEM ALGOL ähnliche Syntax, die sich von beiden S-Ausdrücken und M Ausdrücke unterscheidet.

Es gibt auch eine Durchführung eines Dolmetschers für die M LISPELN im allgemeinen Lispeln, das M Ausdrücke bewertet.

Varianten

Die Syntax von ML (Metasprache), eine funktionelle Programmiersprache, stellt etwas ähnliche Syntax zur Verfügung, weil es aus Mathenotation ebenso abgeleitet wird. Jedoch verbergen zusätzliche Konzepte wie Typ-Anmerkungen und regelmäßige Ausdrücke diese Ähnlichkeit. Die Mathematica Sprache verwendet eine der ursprünglichen M Ausdruck-Syntax ähnliche Syntax, wo Listen mit geschweiften Klammern geschrieben werden können (der auch mit der M Ausdruck-Notation geschrieben werden kann), und Funktionen mit der M Ausdrücke.

Eine neuere Variante ist I-Ausdrücke, die Einrückung verwenden, um Parenthesen implizit anzuzeigen, und so in mancher Hinsicht zwischen S-Ausdrücken und M Ausdrücke Zwischen-sind. I-Ausdrücke wurden in der Schema-Bitte Um die Durchführung 49 als eine Hilfssyntax für das Schema eingeführt, aber sie sind nicht weit angenommen worden.

Außenverbindungen


Harvey Parnell / Alpha-Amanitin
Impressum & Datenschutz