homepage: https://gitlab.utc.fr/gsabbagh/sets
changelog-type: markdown
hash: 2d062cd5f9e205b636f751b6f2ebd6cb1fa4c2a61ac1278a6ea5e0baf77b7bb1
test-bench-deps:
  base: ^>=4.15.0.0
  WeakSets: -any
maintainer: guillaumesabbagh@protonmail.com
synopsis: Simple set types. Useful to create sets of arbitrary types and nested sets.
changelog: "# Revision history for Sets\r\n\r\n## 0.1.0.0 -- YYYY-mm-dd\r\n\r\n* First
  version. Released on an unsuspecting world.\r\n"
basic-deps:
  base: ^>=4.15.0.0
all-versions:
- 0.1.0.0
author: Guillaume Sabbagh
latest: 0.1.0.0
description-type: markdown
description: |+
  # WeakSets

  This is a Haskell package which defines sets in a more general way than Data.Set.

  Data.Set only allows to create sets of types which implements the Ord typeclass, this package introduces HomogeneousSet which does not require the typeclass Ord.

  The PureSet type allows to create nested sets easily. It may be used to study set theory for example.

  ## General info

  The homogenous sets implemented in this package require the type contained in the set to implement the typeclass Eq. It ensures there are no duplicate element in the set and that the order of elements does not matter when testing equality. It is slower than Data.Set because we do not require the Ord typeclass, if you only use types which are orderable, use Data.Set instead.

  The pure set type implemented in this package is a tree like structure where the order of branches does not matter. It allows arbitrary nesting of sets which is useful to do set theoretic constructions.

  ## Installation

  `cabal install WeakSets`

  ## Usage

  Example usage of homogenous sets :

  ```haskell
  ghci> import HomogeneousSet
  ghci> data Foo = Foo Int Char deriving (Eq) -- an arbitrary type which is not required to implement >Ord typeclass
  ghci> s1 = set [Foo 3 'a', Foo 2 'c', Foo 3 'a']
  ghci> s2 = set [Foo 2 'c', Foo 3 'a']
  ghci> s1 == s2
  True
  ```

  Example usage of pure sets :

  ```haskell
  ghci> import PureSet
  ghci> numberToSet 3
  (pureSet [(pureSet []),(pureSet [(pureSet [])]),(pureSet [(pureSet []),(pureSet [(pureSet [])])])])
  ghci> putStrLn.prettify $ numberToSet 3
  {{}, {{}}, {{}, {{}}}}
  ```

  ## Contribution

  Any input is appreciated ! Send an email for any remark or question.
  The git repository : https://gitlab.utc.fr/gsabbagh/sets

license-name: LGPL-3.0-or-later

Update from Hackage at 2022-07-12T13:13:08Z
Update from Hackage at 2022-07-12T13:13:08Z
