||From Moby's homepage:
Moby is an experiment in language design and
implementation. Our goal is to combine support for class-based
object-oriented programming and higher-order concurrency with
the desirable features of ML-like languages: advanced module
systems, parametric polymorphism, inductive datatypes, pattern
matching, and first-class functions. The Moby project
started out as a testbed for the design of ML2000.
- Modules: Moby has an ML-style module system with opaque
signature matching. Definitional specifications are used instead of
- Polymorphism: Moby supports parametric polymorphism with
explicit quantification (including bounded quantification). Because
function types are explicit in the syntax, polymorphic recursion is
- Subtyping: Moby supports structural subtyping on object
types and by-name subtyping on tagtypes and class types. Subtyping
is extended to other type constructors in the standard ways.
- Objects: Moby supports objects with self-application
semantics. An object type specifies the interface of an object, but
not its implementation.
- Classes: Moby supports object creation via classes.
Unlike the more complicated class mechanisms of Java and C++,
Moby's class mechanism only supports those mechanisms that are
intrinsic to classes. We rely on the module system to support
namespace management and visibility control.
- Concurrency: Moby supports CML-style higher-order
- Data constructors: Moby supports a variety of mechanisms
for defining data constructors, including ML-style datatypes,
extensible tagtypes, and abstract value constructors.
- Pattern matching: Moby supports ML-style pattern
matching for control-flow and data deconstruction.