packages feed

creditmonad-1.1.0: creditmonad.cabal

cabal-version: 2.2

-- This file has been generated from package.yaml by hpack version 0.38.1.
--
-- see: https://github.com/sol/hpack

name:           creditmonad
version:        1.1.0
synopsis:       Reasoning about amortized time complexity
description:    Persistent data structures are ubiquitous in functional
                programming languages and their designers frequently have to
                reason about amortized time complexity. But proving amortized
                bounds is difficult in a persistent setting, and pen-and-paper
                proofs give little assurance of correctness, while a full
                mechanization in a proof assistant can be too involved for the
                casual user. This package defines a domain specific
                language for testing the amortized time complexity of
                persistent data structures using QuickCheck. The DSL can
                give strong evidence of correctness, while imposing low
                overhead on the user. The package includes implementations
                and tests of all lazy data structures given in Okasaki's book.
                See the paper "Lightweight Testing of Persistent Amortized Time
                Complexity in the Credit Monad" (2025) for a detailed description.
category:       Development
homepage:       https://github.com/anfelor/creditmonad#readme
bug-reports:    https://github.com/anfelor/creditmonad/issues
author:         Anton Lorenzen <anton.lorenzen@ed.ac.uk>
maintainer:     Anton Lorenzen <anton.lorenzen@ed.ac.uk>
license:        BSD-3-Clause
build-type:     Simple
extra-doc-files:
    CHANGELOG.md

source-repository head
  type: git
  location: https://github.com/anfelor/creditmonad

library
  exposed-modules:
      Control.Monad.Credit
      Test.Credit
      Test.Credit.Deque.Bankers
      Test.Credit.Deque.Base
      Test.Credit.Deque.Catenable
      Test.Credit.Deque.ImplicitCat
      Test.Credit.Deque.Realtime
      Test.Credit.Deque.SimpleCat
      Test.Credit.Deque.Streams
      Test.Credit.Finger
      Test.Credit.Heap.Base
      Test.Credit.Heap.Binomial
      Test.Credit.Heap.LazyPairing
      Test.Credit.Heap.Pairing
      Test.Credit.Heap.Scheduled
      Test.Credit.Queue.Bankers
      Test.Credit.Queue.Base
      Test.Credit.Queue.Batched
      Test.Credit.Queue.Bootstrapped
      Test.Credit.Queue.Implicit
      Test.Credit.Queue.Physicists
      Test.Credit.Queue.Realtime
      Test.Credit.Queue.Streams
      Test.Credit.RandomAccess.Base
      Test.Credit.RandomAccess.Binary
      Test.Credit.RandomAccess.Zeroless
      Test.Credit.Sortable.Base
      Test.Credit.Sortable.MergeSort
      Test.Credit.Sortable.Scheduled
  other-modules:
      Control.Monad.Credit.Base
      Control.Monad.Credit.CreditM
      Control.Monad.Credit.CounterM
  hs-source-dirs:
      src
  ghc-options: -Wall -Wno-name-shadowing -Wno-unused-matches
  build-depends:
      QuickCheck >=2.14 && <3
    , STMonadTrans ==0.4.*
    , base >=4.13 && <5
    , containers >=0.6 && <1.7
    , mtl ==2.3.*
    , prettyprinter ==1.7.*
  default-language: GHC2021

executable creditmonad
  main-is: Main.hs
  other-modules:
      Implicit
      Intro
  hs-source-dirs:
      app
  ghc-options: -Wall -Wno-name-shadowing -Wno-unused-matches -O2 -fworker-wrapper-cbv -threaded -rtsopts
  build-depends:
      QuickCheck >=2.14 && <3
    , STMonadTrans ==0.4.*
    , base >=4.13 && <5
    , containers >=0.6 && <1.7
    , creditmonad
    , mtl ==2.3.*
    , prettyprinter ==1.7.*
    , unliftio ==0.2.*
  default-language: GHC2021