Dear friends of Curry,
I'd like to inform you about some changes and new features in the recent releases of the Curry systems PAKCS (3.7.0) and KiCS2 (3.1.0). These new release include two (hopefully useful) bigger changes:
1. The libraries for encapsulating search, in particular, set functions, are now part of the base libraries, i.e., they can be directly used without depending on any package.
Set functions are available by importing the module
Control.Search.SetFunctions
It has the same interface as the old package `setfunctons`, see
https://cpm.curry-lang.org/DOC/base-3.2.0/Control.Search.SetFunctions.html for the API documentation.
Furthermore, there are also modules
Control.Search.AllValues and Control.Search.Unsafe
containing more primitive "all values"-like operations where the order of results might depend on the scheduling strategy.
Actually, there is also an operationally complete implementation of Curry, Curry2Go (https://www-ps.informatik.uni-kiel.de/curry2go/), where non-determinism is implemented by lightweight threads so that the order of non-deterministic results might differ between different runs.
2. In previous releases, the case mode of identifiers were free, i.e., there were no constraints (upper/lower case) on identifers, as specified in the Curry report. Since this caused sometimes confusion to users, the current releases support a new "Curry" case mode, which is the default: the Curry mode is identical to the Haskell mode (variables, type variables, and functions start with a lower case letter, type and data constructors start with an upper case letter) but a warning (instead of an error) is emitted if the Haskell mode is not obeyed. The old behavior (without warnings) can be enforced by putting the line
{-# OPTIONS_FRONTEND --case-mode=free #-}
in the head of the module, i.e., by explicitly setting the free case mode.
More details are available in the manuals of the systems. As before, there are also docker images (currylang/pakcs and currylang/kics2) with the newest releases available.
Comments and suggestions are welcome!
Best regards,
Michael