Wednesday, August 29, 2012

Rev 3.2 of alpha release 0.5 now available

We just released a new version of the ParaSail compiler and virtual machine. This includes one major new feature (using polymorphic types as actual parameters), and a number of smaller features:

1) Support instantiating a module with a polymorphic actual type, such as:

   var VP : Vector<Expr+>;

This allows the construction of heterogeneous containers.

2) Improve detection of inappropriate calls on abstract operations. Detect when interface of operation uses polymorphic type for a parameter, while implementation uses non-polymorphic type, or vice-versa.

3) Support "continue" statement with named or multiple values, such as:

   continue loop with X => X.Left;
   continue loop with (I => I+1, J => J-1);"

4) Support defining an operation with a single expression, as in:

   func Square(X : Integer) -> Integer is (X**2);

5) Support case expressions, such as:

   (case C of [#red] => X; [#green] => Y; [#blue] => Z)


Version 3.2 is available at the same URL as version 3.1:


  1. How do you make a double-linked list, which supports insert at front and end in constant time, and remove any place in constant time?

  2. I'll post such an example shortly.