packages feed

prefix-units-0.1.0: README.md

prefix-units package
====================

This package defines a datatype (`Unit`) and associated
parsing/formatting functions so that command line applications can
handle "nice" values like:

    $ cmd create-file foo 100G
    Done.
    $ cmd ls-file foo
    Size is 100Gi
    $ cmd ls-files
    foo 100Gi
    bar  14Ki

And so on. For details on the API, look at the Haddock documentation
for the `Data.Prefix.Units` module.

For building and installing, `cabal configure` and related commands
are enough. Run `cabal configure --enable-tests && cabal build &&
cabal test` if you want to run the unit-tests.

TODO
----

The current interface of the library works, but is not nicely
composable. I'm still looking for a nicer way to expose the parsing
functionality.

Currently, the binary and SI units are mixed in the same
data-type. This works, but at some level I think two separate types
would be more "correct", at the expense of a more complex API.

The RationalConvertible type class has only a few instances; ideally
we'd have `instance Integral a => RationalConvertible a` and similar
for `Fractional`, but this doesn't work as such in Haskell, so we're
stuck with the manual derivation.

The current behaviour is case-sensitive for all units in `ParseExact`
mode, which means that one has to use (in this mode) `Ki` for the
binary unit `Kibi`. This seems suboptimal, since the binary units are
unique irrespective of casing.