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 (5-3) + 4 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 are then translated to S-expressions to be executed, hence the meta designation.