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