This library defines I/O actions to read Curry programs and transform them into the FlatCurry representation.
readFlatCurry
:: String -> IO Prog
I/O action which parses a Curry module and returns the corresponding FlatCurry program. The argument is the module name (without suffix ".curry" or ".lcurry") and the result is a FlatCurry term representing this module.
If one wants to parse a Curry module in another directory,
e.g., the file examples/Mod.curry
, one can use the operation
runModuleAction
from module System.CurryPath
of package currypath
to transform this I/O action so that it switches into the directory
before reading:
> runModuleAction readFlatCurry examples/Mod.curry
readFlatCurryWithParseOptions
:: String -> FrontendParams -> IO Prog
I/O action which parses a Curry module with respect to some parser options and returns the corresponding FlatCurry program. The argument is the module name (without suffix ".curry" or ".lcurry") and the result is a FlatCurry term representing this module.
:: String
|
the module name (without suffix ".curry") |
-> FrontendParams
|
parameters passed to the front end |
-> IO Prog
|
flatCurryFileName
:: String -> String
Transforms a name of a Curry module (with or without suffix ".curry" or ".lcurry") into the name of the file containing the corresponding FlatCurry program.
flatCurryIntName
:: String -> String
Transforms a name of a Curry module (with or without suffix ".curry" or ".lcurry") into the name of the file containing the corresponding FlatCurry program.
readFlatCurryFile
:: String -> IO Prog
I/O action which reads a FlatCurry program from a file in .fcy
format.
In contrast to readFlatCurry
, this action does not parse
a source program. Thus, the argument must be the name of an existing
file (with suffix .fcy
) containing a FlatCurry program in .fcy
format and the result is a FlatCurry term representing this program.
readFlatCurryInt
:: String -> IO Prog
I/O action which returns the interface of a Curry module, i.e., a FlatCurry program containing only "Public" entities and function definitions without rules (i.e., external functions). The argument is the module name (without suffix ".curry" or ".lcurry") and the result is a FlatCurry term representing the interface of this module.
If one wants to parse a Curry module in another directory,
e.g., the file examples/Mod.curry
, one can use the operation
runModuleAction
from module System.CurryPath
of package currypath
to transform this I/O action so that it switches into the directory
before reading:
> runModuleAction readFlatCurryInt "examples/Mod.curry"
readFlatCurryIntWithParseOptions
:: String -> FrontendParams -> IO Prog
I/O action which parses a Curry module with respect to some parser options and returns the FlatCurry interface of this program, i.e., a FlatCurry program containing only "Public" entities and function definitions without rules (i.e., external functions). The argument is the module name without suffix ".curry" (or ".lcurry") and the result is a FlatCurry term representing the interface of this module.
writeFlatCurry
:: Prog -> IO ()
Writes a FlatCurry program into a file in .fcy
format.
The file is written in the standard location for intermediate files,
i.e., in the flatCurryFileName
relative to the directory of the
Curry source program (which must exist!).
writeFlatCurryFile
:: String -> Prog -> IO ()
Writes a FlatCurry program into a file in .fcy
format.
The first argument must be the name of the target file
(usually with suffix .fcy
).
writeFCY
:: String -> Prog -> IO ()
Writes a FlatCurry program into a file in .fcy
format.
The first argument must be the name of the target file
(usually with suffix .fcy
).
lookupFlatCurryFileInLoadPath
:: String -> IO (Maybe String)
Returns the name of the FlatCurry file of a module in the load path, if this file exists.
getFlatCurryFileInLoadPath
:: String -> IO String
Returns the name of the FlatCurry file of a module in the load path, if this file exists.