next up previous contents
Next: Equational pattern matching Up: Simplicity, expressiveness, and performance Previous: Simplicity   Contents


Expressiveness

The above examples illustrate a general fact, namely, that Maude can express with equal ease and naturalness deterministic computations, which lead to a unique final result, and concurrent, nondeterministic computations. The first kind is typically programmed with equations in functional modules, and the second with rules (and perhaps with some equations for the ``data'' part) in system modules.

In fact, functional modules define a functional sublanguage1.2 of Maude. In a functional language true to its name, functions have unique values as their results, and it is neither easy nor natural to deal with highly concurrent and nondeterministic systems while keeping the language's functional semantics. It is well known that such systems pose a serious expressiveness challenge for functional languages. In Maude this challenge is met by system modules, which extend the purely functional semantics of equations to the concurrent rewriting semantics of rules.1.3 Although certainly declarative in the sense of having a clear logical semantics, system modules are of course not functional: that is their entire raison d'être.

Besides this generality in expressing both deterministic and nondeterministic computations, further expressiveness is gained by the following features:

We briefly discuss each of these features in what follows.



Subsections
next up previous contents
Next: Equational pattern matching Up: Simplicity, expressiveness, and performance Previous: Simplicity   Contents
The Maude Team