packages feed

htree-0.1.1.0: htree.cabal

cabal-version:   3.4
name:            htree
tested-with:     GHC ==9.2.8 || ==9.4.8 || ==9.6.4 || ==9.8.1
version:         0.1.1.0
synopsis:
  a library to build and work with heterogeneous, type level indexed rose trees

description:
  This library implements a heterogeneous rose-tree (HTree) that is indexed by a type-level rosetree (TyTree).

  It also offers some useful functions, highlights include:

      searching in the tree and creating evidence on the term-level via typeclasses
      record-dot syntax for accessing elements in the tree.
      mapping and traversing trees

license:         AGPL-3.0-or-later
license-file:    LICENSE
author:          mangoiv
maintainer:      contact@mangoiv.com
category:        Data
build-type:      Simple
extra-doc-files:
  CHANGELOG.md
  README.md

common warnings-and-imports
  ghc-options:
    -Wall -fprint-explicit-kinds -fprint-explicit-foralls
    -Wno-unticked-promoted-constructors -Wunused-packages

  default-extensions:
    BlockArguments
    DataKinds
    DerivingStrategies
    FunctionalDependencies
    GADTs
    LambdaCase
    NoStarIsType
    OverloadedLists
    OverloadedStrings
    PatternSynonyms
    QuantifiedConstraints
    TypeFamilies
    ViewPatterns

  build-depends:      base >=4.16 && <5

library
  import:           warnings-and-imports
  exposed-modules:
    Data.HTree
    Data.HTree.Constraint
    Data.HTree.Existential
    Data.HTree.Families
    Data.HTree.Labeled
    Data.HTree.List
    Data.HTree.Tree

  hs-source-dirs:   src
  default-language: GHC2021

test-suite htree-test
  import:           warnings-and-imports
  default-language: GHC2021
  other-modules:
    Spec.HTree.Fixtures
    Spec.HTree.Fold
    Spec.HTree.Helpers
    Spec.HTree.Labeled
    Spec.HTree.Orphans
    Spec.HTree.TH
    Spec.HTree.Traverse

  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  main-is:          Main.hs
  build-depends:
    , containers
    , hspec
    , htree
    , QuickCheck
    , quickcheck-instances
    , template-haskell
    , th-compat