M-expression
|
M-Expressions are so-called meta-expressions which were intended to be used in Lisp. M-expressions were used for the original theoretical language in early papers about Lisp, but they were never actually implemented.
S-expressions intended to represent data structures or parsed mathematical expressions look like this:
(+ 4 (- 5 3))
which is simply prefix notation for 4 + (5 - 3). However, in LISP, lists and programming constructs such as a conditional branch are also represented in this way, e.g.
(if (> a 5) dothis orelsedothis)
A representation was developed so that this could be written down in a more user friendly way, for example [1, 2, 3] for a list. These M-expressions were then to be translated to S-expressions to be executed, hence the meta designation.
A few examples of an M-expression and the equivalent S-expression follow.
[1, 2, 3] (quote (1 2 3)) car[X] (car X) car[append[[1,2,3], [4,5,6]]] (car (append '(1 2 3) '(4 5 6)))
However, Lisp programmers quickly adapted to use S-expressions directly for both data and program code, and M-expressions fell into disuse.