|
Linearity optimizer for function patterns and non-strict unification
Replace occurrences of (fp =:<= x) by (fp =:<<= x) if the function pattern fp always evaluates to a linear term.
Author: Michael Hanus
Version: November 2020
main
:: IO () |
optimizeNonstrictEqualityInModuleIfNecessary
:: String -> IO () |
optimizeNonstrictEqualityInModule
:: String -> IO () |
storeOptimizedModule
:: (Data a, Show b, Show c) => String -> ([(String,String)],c,b,a) -> IO () |
hasCommentOption
:: String -> String -> IO Bool |
readWordsInFirstCommentLine
:: String -> IO [String] |
getCommentString
:: Handle -> IO String |
getCommentString'
:: Handle -> IO String |
optimizeNonstrictEquality
:: [FuncDecl] -> Prog -> ([(String,String)],Int,Int,Prog) |
optimizeFun
:: [((String,String),[(String,String)])] -> [((String,String),Bool)] -> FuncDecl -> (Maybe (String,String),Int,Int,FuncDecl) |
isDependent
:: [((String,String),[(String,String)])] -> (String,String) -> (String,String) -> Bool |
optimizeExp
:: ((String,String) -> Bool,[((String,String),Bool)]) -> Expr -> (Bool,Int,Int,Expr) |
onlyLinearFunctions
:: [((String,String),Bool)] -> Expr -> Bool |
funcsOfProg
:: Prog -> [FuncDecl] |
sum
:: Num a => [a] -> a |
unzip4
:: [(a,b,c,d)] -> ([a],[b],[c],[d]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|