NAME

eddie - run Haskell filters from the command line

SYNOPSYS

eddie [ options ] [ EXPRESSION ] FILE ...

DESCRIPTION

eddie evalutes the provided EXPRESSION on either the contents of the FILE arguments concatenated together, or standard input if no FILE arguments are present.

The --lines, --files and --names options can be used to cause expression to be used to process each line, each file, or tuple of (name, content) for each file, respectively. The --lists option can be used with --lines, --files and --names to cause the files to be processed as a list instead of one element at a time.

The ClassyPrelude module is used instead of the default Prelude when building expressions. The default type for input and output is Text, but input or both can be changed to ByteString with the --binary and --text options.

Other modules may be added with the --Module and --module options.

OPTIONS

--expression

The --expression EXPRESSION (short form -e EXPRESSION ) option concatenates it's value to the Haskell expression being evaluated with a newline separator. Multiple occurrences can be used to build up a multi-line expression.

If no -e EXPRESSION option is present, the first non-flag argument will be used for the Haskell expression.

--lines

The --lines (short form -l) option causes eddie to process the input one line at a time. The EXPRESSION will be run on each line and the results concatenated together (using unlines).

The command

eddie -l EXPRESSION file ...

is equivalent to the command

eddie "unlines . map EXPRESSION  . lines" file ...

Note that the --lines, --files and --names options cannot be used together.

--files

The --files (short form -f) causes each file to be processed individually.

Note that the --lines, --files and --names options cannot be used together.

--names

The --names (short form -n) causes each file to be processed individually, as a tuple of (name, content).

Note that the --lines, --files and --names options cannot be used together.

--list

The --list (short form -L) option causes eddie to pass the expression a list of lines or files. This requires one of the --list, --files or --names options be used.

The command

eddie -l -L EXPRESSION file ...

is equivalent to the command

eddie "EXPRESSION . lines" file ...
--binary
The --binary (short form -b) option changes the data from Text to ByteString. This disable all processing of the input and output.
--lazy

The --lazy (no short form) option switches the data types to their lazy versions.

Note that using this is NOT recommended unless you know what you are doing. It seems to break type checking, cause hangs, or incorrect results when used. Even if everything works as expected, using it improperly can drastically increase memory usage and run time.

--text

The --text (short form -t) option switches the output type back to Text if the --binary or --lazy option was used.

Using --text without --binary or --lazy is an error.

--input-encoding

The --input-encoding ENCODING (no short form) option sets the encoding of the input file(s) to ENCODING.

It is an error to use --input-encoding with --binary.

--output-encoding

The --output-encoding ENCODING (no short form) option sets the encoding of the output file to ENCODING.

It is an error to use --output-encoding with --binary unless --text is also specified.

--encoding

The --encoding ENCODING (no short form) option sets the encoding of all text files to ENCODING, whether for input or output.

It is an error to use --encoding with --binary unless --text is also specified.

--module
The --module NAME (short form -m NAME) option is used to import module NAME into Haskell before evaluating the expression.
--Module
The --Module NAME,AS (short form -M NAME,AS) option imports the NAME module using a qualified import with an as clause, with AS being the value for the as clause.
--extension
The --extension EXTENSION (short form -X EXTENSION) option is used to enable the named GHC extension when evaluating the expression.

DIAGNOSTICS

If the command runs with no problems, eddie will exit with a status of 0. If there are problems with the options, such that the expression is never evaluated, then eddie will exit with a status of 1. If Haskell returns an error - probably a compilation problem - then eddie will exit with the status of 2.

SEE ALSO

The wiki at https://chiselapp.com/user/mwm/repository/eddie/wcontent for examples.

BUGS

See the issues list at https://chiselapp.com/user/mwm/repository/eddie/rptview?rn=1.

AUTHOR

Mike Meyer