dependencies:
|
[Dependency "base" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "cass" [[VGte "3.0.0",VLt "5.0.0"]],Dependency "cass-analysis" [[VGte "3.0.0",VLt "5.0.0"]],Dependency "csv" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "currypath" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "directory" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "filepath" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "flatcurry" [[VGte "3.0.0",VLt "5.0.0"]],Dependency "process" [[VGte "3.0.0",VLt "4.0.0"]]]
|
documentation:
|
An analyzer of the residuation behaviour of Curry programs
==========================================================
This package contains a tool to analyze the residuation
behavior of Curry programs. The residuation behavior
is abstracted in the form
* if arguments i1,i2,..,in are ground values, then the
function does not residuate
* the function might residuate or evaluates to a non-ground value
independent of the groundness of the arguments
The tool can simply show these analysis results or store the
results as a Curry term of type
[(String,[Int])]
Thus, it is a list of pairs consisting of the
qualified function name and a list of argument indices
(numbered from 1).
The indices are either the required ground arguments or
`[0]` if the function might residuate.
This information can be used by Curry compiler
(e.g., [PAKCS](https://www.curry-lang.org/pakcs/))
to optimize the compilation of non-residuating operations.
The tool has also options to show all possibly residuating operations
of a module or to print some statistics in CSV format (see option
`--help`).
Documentation
-------------
The ideas about this analysis and its application are described
in this paper:
> M. Hanus: Improving Residuation in Declarative Programs
>
> Proc. of the 21st International Symposium on
> Practical Aspects of Declarative Languages (PADL 2019),
> Springer LNCS 11372, pp. 82-97, 2019
> ([Online](https://doi.org/10.1007/978-3-030-05998-9_6))
|