packages feed

unpacked-containers-0: unpacked-containers.cabal

name:          unpacked-containers
category:      Language
version:       0
license:       BSD2
license-file:  LICENSE
cabal-version: 2.0
author:        Edward A. Kmett
maintainer:    Edward A. Kmett <ekmett@gmail.com>
stability:     experimental
homepage:      http://github.com/ekmett/unpacked-containers/
bug-reports:   http://github.com/ekmett/unpacked-containers/issues
copyright:     Copyright (C) 2017-2018 Edward A. Kmett
build-type:    Simple
synopsis:      Unpacked containers via backpack
description:   This backpack mixin package supplies unpacked sets and maps exploiting backpack's ability to unpack through signatures.
extra-source-files:
  README.md
  CHANGELOG.md
  LICENSE
  include/containers.h

source-repository head
  type: git
  location: git://github.com/ekmett/unpacked-containers.git

library
  default-language: Haskell2010
  ghc-options: -Wall -O2
  hs-source-dirs: src
  signatures: Key
  exposed-modules:
    Map
    Map.Internal
    Map.Internal.Debug
    Map.Lazy
    Map.Merge.Lazy
    Map.Merge.Strict
    Map.Strict
    Map.Strict.Internal
    Set
    Set.Internal

  build-depends:
    base >= 4.10 && < 5,
    data-default-class ^>= 0.1,
    deepseq ^>= 1.4,
    utils

-- separate internal library to avoid recompiling these all the time
library utils
  default-language: Haskell2010
  hs-source-dirs: utils
  include-dirs: include
  ghc-options: -Wall -O2

  build-depends:
    base >= 4.10 && < 5,
    deepseq >= 1.2 && < 1.5,
    ghc-prim

  exposed-modules:
    Internal.BitUtil
    Internal.BitQueue
    Internal.StrictPair
    Internal.State
    Internal.StrictFold
    Internal.StrictMaybe
    Internal.PtrEquality

-- we have to provide a module in another library that matches the signature 
library example
  default-language: Haskell2010
  hs-source-dirs: example
  exposed-modules: Int
  build-depends: base

executable unpacked-set-example
  default-language: Haskell2010
  main-is: example/Main.hs
  build-depends: base, unpacked-containers, example
  mixins: unpacked-containers (Set as Int.Set) requires (Key as Int)