Module Sequential

Module defining main operations to transform programs in order to implement a sequential rule selection strategy.

Author: Lasse Folger (with changes by Michael Hanus)

Version: September 2015

Summary of exported operations:

transSequentialRules :: Int -> [String] -> String -> CurryProg -> IO CurryProg   
Start sequentializer in "preprocessor mode":
translate :: CurryProg -> String -> CurryProg   
Main operation to translate a Curry module into a new one implementing a sequential rule selection strategy.
renameQN :: String -> String -> (String,String) -> (String,String)   
renameT :: String -> String -> [CTypeDecl] -> [CTypeDecl]   
renameF :: String -> String -> [CFuncDecl] -> [CFuncDecl]   

Exported operations:

transSequentialRules :: Int -> [String] -> String -> CurryProg -> IO CurryProg   

Start sequentializer in "preprocessor mode":

translate :: CurryProg -> String -> CurryProg   

Main operation to translate a Curry module into a new one implementing a sequential rule selection strategy. It consists of the selection of operations defined by non-deterministic patterns, reduce patterns to a normalized structure, and renaming qualified names to the name of the output module.

renameQN :: String -> String -> (String,String) -> (String,String)   

renameT :: String -> String -> [CTypeDecl] -> [CTypeDecl]   

renameF :: String -> String -> [CFuncDecl] -> [CFuncDecl]