0.7.0
tag7657c0b63088229e5b113acd35845b9eb2bf94cb
object 0a42799c5c9264d102b65a82271962701d6484a0
authorHenrik Tidefelt <tiddeweb@gmail.com>
Sat, 6 Feb 2016 08:39:49 +0000 (6 09:39 +0100)
This release is mainy about namespaces and new and redesigned container types.  Because of several backward incompatible changes, the version number was bumped from 0.6.x to 0.7.0.

Introducing namespaces.  Namespaces are used for organizing source code and avoid naming conflicts.  Mapping of namespaces to file system directory hierarchy simplifies organization and loading of a growing number of Shapes extensions.  Namespaces also bring a major reorganization of the Shapes documentation, which is now follows the logical grouping of related things, instead of the old division into value bindings, dynamic variables, and state bindings.  The transition to new namespace organization has come a long way, but is not yet fully settled; more experience is needed before it is clear how to deal with some of the old functions with cases spanning over domains that now belong to different namespaces.

Blank mode operation, allowing Shapes programs that don't produce any graphical output.

The new graph container provides a clean solution for modeling graph-like data.  A graph container consists of nodes and edges, where the edges describe how nodes refer to one another.  Modeling this type of data does not really match the funcitonal paradigm (imperative languages may use some pointer-like mechanism to connect the nodes), so defining a standard way of doing this is important both for convenience and code reuse.

The documentation has been reorganized to become more accessible, by shortening the main tutorial and introducing guide chapters for tutorial-style content that is not essential enough or too lengthy to fit in the main tutorial.

Several backward incompatible changes related to singly linked lists.  Users are no longer exposed to the difference between the efficient singly linked lists used in the kernel, and less efficient lists built from lazy cons pairs.  The terminology singly linked list has been replaced by sequence that better describes what the interface is all about.  The extension conssupport has been removed, and a new extension seq-support has been added.  The arguments passed to the operation in a right fold have been reversed to match right folds in other languages.

Named angular units, including "rad" and "deg".  For example 1.5rad is simply the number 1.5 written to make it clear that it denotes an angle, and 90deg is the angle of a quarter of a turn.

Bugfixes include:
-  No longer forces the result of all immediate expressions.