CurryInfo: curry-source-1.3.0

categories: Info
 Analysis
dependencies: Info
 [Dependency "base" [[VGte "3.2.0",VLt "4.0.0"]],Dependency "abstract-curry" [[VGte "3.0.0",VLt "5.0.0"]],Dependency "flatcurry" [[VGte "5.0.0",VLt "6.0.0"]],Dependency "exact-print" [[VGte "2.0.0",VLt "3.0.0"]],Dependency "curry-ast" [[VGte "3.1.0",VLt "4.0.0"]],Dependency "string-trie" [[VGte "0.0.2",VLt "1.0.0"]]]
documentation: Info
 
curry-source: Libraries to check Curry source programs
======================================================

This package contains libraries to deal with the source code level
of Curry programs.

Source code checks
------------------

The following package libraries provide operations to check the intended
usage of some Curry features.

* `Language.Curry.CheckDetUsage`: check the correct use of `DET`
  annotations to mark deterministic operations as described in
  <http://dx.doi.org/10.1007/978-3-319-51676-9_1>

* `Language.Curry.CheckOperations`: check the correct use of
  [set functions](http://doi.acm.org/10.1145/1599410.1599420)
  and whether some auxiliary operations are not used, mainly
  the non-strict equality operation `Prelude.=:<=` which used
  to implement [functional patterns](https://doi.org/10.1007/11680093_2).

Source code classification
--------------------------

The following package libraries provide operations to classify the
source code of Curry modules into various classes of entities.

* `Language.Curry.SourceCodeClassifier`: This library provides
  operations to extract from a given Curry module all defined operations,
  types, and classes and returns lists containing the entity names and
  span information of the comments and source code of these entities.

* `Language.Curry.StringClassifier`: classify a string
  containing Curry source code into various categories,
  like module head, comments, code, etc.

Auxiliary libraries for matching AbstractCurry/FlatCurry expressions
--------------------------------------------------------------------

In addition to the libraries listed above, this package contains also
the libraries `AbstractCurry.Match` and `FlatCurry.Match`
which defines operations intended to be used
as functional patterns in order to match subexpressions
in `AbstractCurry` or `FlatCurry` programs at arbitrary depth.
They are used in the module `Language.Curry.CheckOperations`.

Examples
--------

The directory `examples` of this package contains
example programs showing unintended uses of Curry features
which are detected by the `Check` libraries of this package.
Note that these libraries are integrated in CurryCheck
so that these unintended uses are detected when processing
these examples with CurryCheck.
exportedmodules: Info
 AbstractCurry.Match FlatCurry.Match Language.Curry.CheckDetUsage Language.Curry.CheckOperations Language.Curry.SourceCodeClassifier Language.Curry.StringClassifier
modules: Info
 AbstractCurry.Match FlatCurry.Match Language.Curry.CheckDetUsage Language.Curry.CheckOperations Language.Curry.SourceCodeClassifier Language.Curry.StringClassifier
version: Info
 1.3.0