citeproc-hs is a library for automatically formatting
bibliographic reference citations into a variety of styles using a
macro language called Citation Style Language (CSL). More details
on CSL can be found here: http://citationstyles.org/.

Introduction

citeproc-hs provides functions for reading bibliographic
databases, for reading and parsing CSL files and for generating
citations in an internal format, FormattedOutput, that can be
easily rendered into different final formats. At the present time
only Pandoc and plain text rendering functions are provided by
the library.

The library also provides a wrapper around hs-bibutils, the Haskell
bindings to Chris Putnam's bibutils, a library that interconverts
between various bibliography formats using a common MODS-format XML
intermediate. For more information about hs-bibutils see here:
http://hackage.haskell.org/package/hs-bibutils.

citeproc-hs can natively read MODS and JSON formatted
bibliographic databases. The JSON format is only partially
documented. It is used by citeproc-js, by the CSL processor
test-suite and is derived by the CSL scheme. More information can
be read here:
http://citationstyles.org/.