aesiniath / unbeliever

Opinionated Haskell Interoperability
https://hackage.haskell.org/package/unbeliever
MIT License
33 stars 11 forks source link
command-line haskell library

A library helping you write Haskell programs

This library is for writing command-line applications, be they tools or long-running daemons. It provides the following:

What's so opinionated about this?

This project started as an effort to record library choices, useful idioms, and recommended practices for teams writing Haskell programs in a large corporate environment. We quickly realized that a cookbook would be far less helpful than a library which simply presented these opinions as a framework application developers could just use out of the box.

Our approach has been to create wrapper layers around existing functionality to bring them together in a useful gestalt. There are some extremely powerful libraries in the Haskell ecosystem, but using them together can sometimes be difficult. Packages date from different eras of Haskell's growth as an industrial language and so they often follow different usage idioms making interoperability a challenge.

The working title for the as-yet unpublished text on this topic is Haskell for Unbelievers and so unbeliever became the name for this library. We've since split the library into a number of packages with smaller dependency footprints. This repo contains the sources for the core-text, core-data, and core-program packages on Hackage.

Some goals:

If you wish to dismiss this library as a giant bikeshedding exercise you would not be wrong. Hopefully you'll like the colour of our bikeshed.

Getting Started

To learn about the text type, see the documentation for Core.Text.Rope. To use the Program monad, you can get started by looking at Core.Program.Execute.