homepage: https://github.com/ejconlon/haskell-linenoise#readme
changelog-type: ''
hash: 6499211e76abf721e1e92870e9992da5ce2e5c64c18c5b4849876e529972e971
test-bench-deps: {}
maintainer: ejconlon@gmail.com
synopsis: A lightweight readline-replacement library for Haskell
changelog: ''
basic-deps:
  exceptions: ! '>=0.10'
  bytestring: ! '>=0.10'
  base: ! '>=4.12 && <5'
  text: ! '>=1.2'
  linenoise: -any
  unliftio-core: ! '>=0.1'
  mtl: ! '>=2.2'
all-versions:
- 0.3.0
author: Stephen Diehl, Eric Conlon
latest: 0.3.0
description-type: markdown
description: |
  # linenoise

  [![CircleCI](https://circleci.com/gh/ejconlon/haskell-linenoise/tree/master.svg?style=svg)](https://circleci.com/gh/ejconlon/haskell-linenoise/tree/master)

  A lightweight readline-replacement library for Haskell based on the `linenoise` library. (Not production ready!)
  See the [demo app](https://github.com/ejconlon/haskell-linenoise/blob/master/app/Main.hs) for usage, or see the [climb](https://github.com/ejconlon/climb) library for higher-level building blocks for GHCi-like REPLs with colon-commands.

  ## Differences from alternatives

  * `haskeline`
    * This uses FFI to a minimal C library vs pure Haskell
    * This uses standard MTL/Unlift typeclasses vs custom ones.
    * This does not require the use of a specific monad transformer.
  * `readline`
    * This offers a `MonadIO/MonadUnliftIO` interface vs raw `IO`.
    * This vendors and statically links its underlying library to simplify the build process.

  ## License and attribution

  This library includes the source code and license for `linenoise` in `cbits`.
  It is a fork of an older [library](https://github.com/sdiehl/haskell-linenoise) with all licensing and
  attribution preserved.

  ## Development workflow

  This project uses `stack` to build.

  The `Makefile` has a bunch of relevant phony targets for a development workflow including

  * `build` - Build the library and demo
  * `download` - Update vendored `linenoise`
  * `demo` - Run the demo app
  * `deps` - Install dev tools
  * `lint` - Lint with `hlint`
  * `format` - Format with `stylish-haskell`
  * `docs` - Generate docs

  In addition, there are targets starting with `ci` that are invoked in various CI phases.

  ## TODO

  * Support unicode (may involve vendoring a `linenoise` [fork](https://github.com/yhirose/linenoise/tree/utf8-support))
  * Verify that the FFI modifications for `ByteString` are memory-safe
  * Upload to Hackage
license-name: BSD-3-Clause

Update from Hackage at 2020-01-09T20:01:03Z
Update from Hackage at 2020-01-09T20:01:03Z
