packages feed

MapWith-0.2.0.0: MapWith.cabal

name:                MapWith
version:             0.2.0.0

synopsis:            mapWith: like fmap, but with additional parameters (isFirst, isLast, etc).
category:            Combinators
maintainer:          dj112358@outlook.com

description:         fmap over Traversables (including lists), but pass additional parameters to the map function, such as
                     isFirst, isLast, prevElt, nextElt, index from start or end, custom params.
                     For examples see https://github.com/davjam/MapWith/blob/master/doc/examples.hs
homepage:            https://github.com/davjam/MapWith#readme

license:             BSD3
license-file:        LICENSE
author:              David James
copyright:           (c) David James, 2020.

build-type:          Simple
tested-with:         GHC==8.0.2, GHC==8.4.3, GHC==8.8.3, GHC==8.10.1
extra-source-files:  ChangeLog.md
                     README.md

cabal-version:       >=1.10

source-repository head
  type:              git
  location:          https://github.com/davjam/MapWith.git

library
  exposed-modules:     MapWith
                       CurryTF
  hs-source-dirs:      src
  ghc-options:         -Wall
  other-extensions:    ExistentialQuantification
  default-language:    Haskell2010
  build-depends:       base >= 4.9.1 && < 4.15

Test-Suite test-MapWith
  main-is:             MapWithTest.hs
  Other-modules:       MapWith
                       CurryTF
  type:                exitcode-stdio-1.0
  hs-source-dirs:      src test
  default-language:    Haskell2010
  build-depends:       base

Test-Suite test-CurryTF
  main-is:             CurryTFTest.hs
  Other-modules:       CurryTF
  type:                exitcode-stdio-1.0
  hs-source-dirs:      src test
  default-language:    Haskell2010
  build-depends:       base

--without -fno-prof-auto, SCCs are added to too many functions and then prevent inlining from happening (which gives bad results for uncurryN)
--supposedly I can control this with a cabal.project file - but so far cabal doesn't seem to pick it up, and none of the options 
--here (https://cabal.readthedocs.io/en/latest/cabal-project.html?highlight=cabal.project.local#cfg-field-profiling-detail) seem to be quite what I want.
--So adding SCCs explicitly (per https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html#inserting-cost-centres-by-hand)

--cabal bench tuning --ghc-options="-O2 -ddump-simpl -dsuppress-all -ddump-to-file -fno-prof-auto"
--cabal bench tuning --ghc-options="-O2 -ddump-rule-firings -fno-prof-auto"
--cabal bench tuning --ghc-options="-O2 -fno-prof-auto" --benchmark-options="+RTS -P -hd"
--hp2ps -e8in -c tuning.hp
benchmark tuning
  main-is:             Tuning.hs
  Other-modules:       MapWith
                       CurryTF
  hs-source-dirs:      src perf
  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  build-depends:       base

--cabal bench benchmarks --ghc-options="-O2 -funfolding-use-threshold=150 -fno-prof-auto" --benchmark-options="+RTS -p -RTS" --benchmark-option="100000000 19"
--cabal bench benchmarks --ghc-options="-O2 -funfolding-use-threshold=150 -fno-prof-auto" --benchmark-options="+RTS -P -hd -xt -RTS" --benchmark-option="1000000 19" 
--hp2ps -e8in -c benchmarks.hp
benchmark benchmarks
  main-is:             BechmarksPerf.hs
  Other-modules:       MapWith
                       CurryTF
                       Benchmarks
  hs-source-dirs:      src perf
  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  build-depends:       base

--cabal bench BenchmarksSimpl --ghc-options="-O2 -ddump-simpl -dsuppress-all -ddump-to-file -fno-prof-auto"
--cabal bench BenchmarksSimpl --ghc-options="-O2 -ddump-rule-firings -fno-prof-auto"
benchmark BenchmarksSimpl
  main-is:             BechmarksSimpl.hs
  Other-modules:       MapWith
                       CurryTF
                       Benchmarks
  hs-source-dirs:      src perf
  type:                exitcode-stdio-1.0
  default-language:    Haskell2010
  build-depends:       base