vector-0.3: vector.cabal
Name: vector
Version: 0.3
License: BSD3
License-File: LICENSE
Author: Roman Leshchinskiy
Maintainer: Roman Leshchinskiy <rl@cse.unsw.edu.au>
Copyright: (c) Roman Leshchinskiy 2008
Homepage: http://darcs.haskell.org/vector
Category: Data Structures
Synopsis: Efficient Arrays
Description:
.
An efficient but highly experimental implementation of Int-indexed
arrays with a powerful loop fusion framework.
.
Cabal-Version: >= 1.2
Build-Type: Simple
Flag EnableAssertions
Description: Enable assertions that check parameters to functions are reasonable.
These will impose a moderate performance cost on users of the library,
with the benefit that you get reasonable errors rather than segmentation faults!
Default: False
Library
Extensions: CPP
Exposed-Modules:
Data.Vector.Fusion.Util
Data.Vector.Fusion.Stream.Size
Data.Vector.Fusion.Stream.Monadic
Data.Vector.Fusion.Stream
Data.Vector.MVector
Data.Vector.MVector.New
Data.Vector.IVector
Data.Vector.Unboxed.Unbox
Data.Vector.Unboxed.Mutable.ST
Data.Vector.Unboxed.Mutable.IO
Data.Vector.Unboxed
Data.Vector.Mutable.ST
Data.Vector.Mutable.IO
Data.Vector
Include-Dirs:
include
Install-Includes:
phases.h
Build-Depends: base >= 2 && < 4, array, ghc-prim,
ghc >= 6.9
-- -finline-if-enough-args is ESSENTIAL. If we don't have this the partial application
-- of e.g. Stream.Monadic.++ to the monad dictionary at the use site in Stream.++ causes
-- it to be fruitlessly inlined. This in turn leads to a huge RHS for Stream.++, so it
-- doesn't get inlined at the final call site and fusion fails to occur.
Ghc-Options: -finline-if-enough-args
-- It's probably a good idea to compile the library with -O2 as well. However, it's probably
-- not as essential as you think because most of the optimisation occurs when the library
-- functions from here are inlined into the user programs (which SHOULD be compiled with -O2!).
--
-- We have to fiddle with the assertion stuff at this point too because -O2 implies -fno-ignore-asserts,
-- meaning that their relative ordering is CRUCIAL. Setting them together guarantees it.
if flag(enableassertions)
-- Asserts are ignored by default at -O1 or higher
Ghc-Options: -O2 -fno-ignore-asserts
else
Ghc-Options: -O2