packages feed

harpie-0.2.0.0: harpie.cabal

cabal-version: 3.0
name: harpie
version: 0.2.0.0
license: BSD-3-Clause
license-file: LICENSE
copyright: Tony Day (c) 2016-2024
category: math
author: Tony Day
maintainer: tonyday567@gmail.com
homepage: https://github.com/tonyday567/harpie#readme
bug-reports: https://github.com/tonyday567/harpie/issues
synopsis: Haskell array programming.
description:
  This package provides Haskell array programming, interface and environment.

  Module names clash with each other and with the Prelude.

  == Usage

  >>> import Harpie.Fixed qualified as F
  >>> import Harpie.Shape qualified as S
  >>> import Harpie.Array qualified as A

  >>> a = F.range @[2,3,4]
  >>> F.shape a
  [2,3,4]
  >>> pretty a
  [[[0,1,2,3],
    [4,5,6,7],
    [8,9,10,11]],
   [[12,13,14,15],
    [16,17,18,19],
    [20,21,22,23]]]

  >>> a = A.range [2,3,4]
  >>> F.shape a
  [2,3,4]
  >>> pretty a
  [[[0,1,2,3],
    [4,5,6,7],
    [8,9,10,11]],
   [[12,13,14,15],
    [16,17,18,19],
    [20,21,22,23]]]

build-type: Simple
tested-with:
  ghc ==9.10.3
  ghc ==9.12.2
  ghc ==9.14.1

extra-doc-files:
  ChangeLog.md
  readme.md

source-repository head
  type: git
  location: https://github.com/tonyday567/harpie

common ghc-options-stanza
  ghc-options:
    -Wall
    -Wcompat
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wpartial-fields
    -Wredundant-constraints

common ghc2021-stanza
  default-language: GHC2021

common ghc2024-stanza
  if impl(ghc >=9.10)
    default-language:
      GHC2024
  elif impl(ghc >=9.2)
    default-language:
      GHC2021

    default-extensions:
      DataKinds
      DerivingStrategies
      DisambiguateRecordFields
      ExplicitNamespaces
      GADTs
      LambdaCase
      MonoLocalBinds
      RoleAnnotations
  else
    default-language:
      Haskell2010

    default-extensions:
      BangPatterns
      BinaryLiterals
      ConstrainedClassMethods
      ConstraintKinds
      DeriveDataTypeable
      DeriveFoldable
      DeriveFunctor
      DeriveGeneric
      DeriveLift
      DeriveTraversable
      DoAndIfThenElse
      EmptyCase
      EmptyDataDecls
      EmptyDataDeriving
      ExistentialQuantification
      ExplicitForAll
      FlexibleContexts
      FlexibleInstances
      ForeignFunctionInterface
      GADTSyntax
      GeneralisedNewtypeDeriving
      HexFloatLiterals
      ImplicitPrelude
      InstanceSigs
      KindSignatures
      MonomorphismRestriction
      MultiParamTypeClasses
      NamedFieldPuns
      NamedWildCards
      NumericUnderscores
      PatternGuards
      PolyKinds
      PostfixOperators
      RankNTypes
      RelaxedPolyRec
      ScopedTypeVariables
      StandaloneDeriving
      StarIsType
      TraditionalRecordSyntax
      TupleSections
      TypeApplications
      TypeOperators
      TypeSynonymInstances

  if impl(ghc <9.2) && impl(ghc >=8.10)
    default-extensions:
      ImportQualifiedPost
      StandaloneKindSignatures

library
  import: ghc-options-stanza
  import: ghc2024-stanza
  hs-source-dirs: src
  build-depends:
    adjunctions >=4.0 && <5,
    base >=4.18 && <5,
    distributive >=0.4 && <0.7,
    first-class-families >=0.8.1 && <0.9,
    prettyprinter >=1.7 && <1.8,
    random >=1.2 && <1.4,
    vector >=0.12.3 && <0.14,
    vector-algorithms >=0.9.0 && <0.10,

  exposed-modules:
    Harpie.Array
    Harpie.Fixed
    Harpie.Shape
    Harpie.Sort

common ghc-options-exe-stanza
  ghc-options:
    -fforce-recomp
    -funbox-strict-fields
    -rtsopts
    -threaded
    -with-rtsopts=-N

executable harpie-bug-issue1
  import: ghc-options-exe-stanza
  import: ghc-options-stanza
  import: ghc2024-stanza
  main-is: harpie-bug-issue1.hs
  hs-source-dirs: test
  build-depends:
    adjunctions >=4.0 && <5,
    base >=4.14 && <5,
    first-class-families >=0.8.1 && <0.9,
    harpie,