Module AnalyzeResiduation

A tool to analyze the residuation behavior of a module. It can just show the results, making some statistics, or writes the results into a file which can be used by PAKCS to optimize the implementation of non-residuating operations.

Author: Michael Hanus

Version: December 2020

Summary of exported operations:

:: String   
main :: IO ()   
residuationInfoOf :: String -> IO [((String,String),ResiduationInfo)]   
Returns the residuation information of all operations defined in a module.
genResInfo :: Options -> String -> IO ()   
writeResInfoFile :: Options -> [((String,String),ResiduationInfo)] -> IO ()   
Writes a file containing residuation information in Curry term format.
allResOps :: [((String,String),ResiduationInfo)] -> [String]   
Returns the list of possibly residuating operations.
countResOps :: String -> IO [String]   
Counts all possibly residuating and non-residuating operations.
countResOps2CSV :: [String] -> IO ()   

Exported operations:

main :: IO ()   

residuationInfoOf :: String -> IO [((String,String),ResiduationInfo)]   

Returns the residuation information of all operations defined in a module.

genResInfo :: Options -> String -> IO ()   

writeResInfoFile :: Options -> [((String,String),ResiduationInfo)] -> IO ()   

Writes a file containing residuation information in Curry term format. The term is a list of pairs consisting of the qualified function name together with the list of argument positions which must be ground values to ensure that the function call does not residuate and yields a ground value. If the function might always residuate, the argument position list is [0].

allResOps :: [((String,String),ResiduationInfo)] -> [String]   

Returns the list of possibly residuating operations.

countResOps :: String -> IO [String]   

Counts all possibly residuating and non-residuating operations.

countResOps2CSV :: [String] -> IO ()