Jump to content

M-expression

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 217.159.81.198 (talk) at 22:02, 28 February 2005. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

M-Expressions are so-called meta-expressions which were intended to be used in Lisp.

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.