Not logged in
Public Repositories
mwm's Repositories

Changes from Eddie 0.5 to 1.0

Text and ByteStrings instead of Strings

In order to facilitate modern text processing features and enhance performance, the default input and output type is now Text, not String. If --binary is used, then the type becomes ByteString. If you wish to generate Text output, then you can use --text along with --binary to get Text output and ByteString input.

Text IO uses encoding, whose default values will depend on your operating system. Those can be set for Text input and output with --input-encoding and --output-encoding, respectively. --encoding sets both to the same value.

ClassyPrelude, instead of Prelude and extras

To avoid having to use Text or ByteString specific versions of the all the Haskell List functions, ClassyPrelude is used instead of the default Prelude. Data.List and Data.Char are no longer included by default, as most of the useful functions are included in ClassyPrelude.

This does mean that some common functions have changed names. Any partial functions have been replaced with a version with Ex appended to the name. There are also alternatives that take default values or return Maybe instances instead of raising exceptions.

The show function is still around, except that the output type is now Text instead of String so that filtering works properly. This means that if you need to display a calculated value, you'll need to use tshow instead of show

New option parsing library

Option parsing is now handled by optparse-applicative. This has simplified the code. It also makes it possible to use shorter forms of the "long" form for options, so long as they aren't ambiguous. So the --line and -file options have been pluralized. And --expr has been expanded to --expression.

The downside - at least for now - is that you can no longer have multiple short options in a single argument. So -lL has to be written out as -l -L.

For similar reasons, --modules and --Modules are no longer plural.

Misfeatures removed

The --list option now disabled the automatic catenation of an output list. About half the time, the expression doesn't generate a list in any case. And if you're processing files, there's no easy way to get the current behavior using the old behavior, whereas it's easy to add the appropriate catenation function to the current behavior if it's needed.