Name: vector Version: 0.3.1 x-revision: 2 License: BSD3 License-File: LICENSE Author: Roman Leshchinskiy Maintainer: Roman Leshchinskiy 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 Extra-Source-Files: tests/vector-tests.cabal tests/LICENSE tests/Setup.hs tests/Main.hs tests/Boilerplater.hs tests/Properties.hs tests/Utilities.hs 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 < 0.3.1, ghc >= 6.9 && < 7 -- -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