Moby    up
  Description: 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 sharing constraints.
  • Polymorphism: Moby supports parametric polymorphism with explicit quantification (including bounded quantification). Because function types are explicit in the syntax, polymorphic recursion is supported.
  • 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 concurrency.
  • 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.

 Hello World   Michael Neumann
// Hello World in Moby
module Main {
  val () = ConsoleIO.print "Hello World\n"
Prints "Hello World" onto the screen.