cabal-version:      2.2
category:           Random, Vector
build-type:         Simple

name:               perfect-vector-shuffle
synopsis:           Library for performing vector shuffles
version:            0.1.0

author:             Callan McGill
maintainer:         callan.mcgill@gmail.com
homepage:           https://github.com/Boarders/perfect-vector-shuffle
bug-reports:        https://github.com/Boarders/perfect-vector-shuffle/issues
copyright:          2019
license:            BSD-3-Clause
description:
    .
    This package contains functions for performing shuffles on mutable and
    immutable vectors. The shuffles are uniform at random amongst all
    permuations.
    .
    For an example of how to use it:
    .
    @
        module Example where
        .
        import Data.Vector
        import Immutable.Shuffle
        .
        myVector :: Vector Int
        myVector = fromList [1..10]
        .
        shuffleMyVector :: IO (Vector Int)
        shuffleMyVector = shuffleM myVector
    @
    .
    This gives the following:
    .
    @
    > shuffleMyVector
    [1,10,4,7,2,3,5,9,8,6]
    > shuffleMyVector
    [7,4,2,10,9,8,6,5,1,3]
    @

extra-source-files: CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/Boarders/perfect-vector-shuffle


Library

  hs-source-dirs:   src

  ghc-options:      -Wall

  build-depends:    base        ^>= 4.12.0.0
                  , MonadRandom >= 0.5.1.1  && < 0.6
                  , primitive   >= 0.6.4.0  && < 0.7
                  , random      ^>= 1.1
                  , vector      >= 0.12.0   && < 0.13

  exposed-modules:  Immutable.Shuffle
                    Mutable.Shuffle

  other-modules:

  default-language: Haskell2010


Test-Suite testsuite

  type:             exitcode-stdio-1.0

  main-is:          Test.hs

  hs-source-dirs:   test

  ghc-options:      -Wall
                    -Wincomplete-patterns

  build-depends:    perfect-vector-shuffle ^>= 0.1.0
                  , base                   ^>= 4.12.0.0
                  , QuickCheck             ^>= 2.12.6.1
                  , random                 ^>= 1.1
                  , tasty                  >= 1.2    && < 1.3
                  , tasty-quickcheck       ^>= 0.10
                  , vector                 >= 0.12.0 && < 0.13
                  , quickcheck-instances   >= 0.3.19 && < 0.4


  other-modules:
                    Immutable.Test

  default-language: Haskell2010