vector-instances-3.3.1/0000755000000000000000000000000012562161426013200 5ustar0000000000000000vector-instances-3.3.1/.ghci0000644000000000000000000000012512562161426014111 0ustar0000000000000000:set -isrc -idist/build/autogen -optP-include -optPdist/build/autogen/cabal_macros.h vector-instances-3.3.1/.gitignore0000644000000000000000000000010412562161426015163 0ustar0000000000000000dist docs wiki TAGS tags wip .DS_Store .*.swp .*.swo *.o *.hi *~ *# vector-instances-3.3.1/.travis.yml0000644000000000000000000000034512562161426015313 0ustar0000000000000000language: haskell notifications: irc: channels: - "irc.freenode.org#haskell-lens" skip_join: true template: - "\x0313vector-instances\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}" vector-instances-3.3.1/.vim.custom0000644000000000000000000000137712562161426015315 0ustar0000000000000000" Add the following to your .vimrc to automatically load this on startup " if filereadable(".vim.custom") " so .vim.custom " endif function StripTrailingWhitespace() let myline=line(".") let mycolumn = col(".") silent %s/ *$// call cursor(myline, mycolumn) endfunction " enable syntax highlighting syntax on " search for the tags file anywhere between here and / set tags=TAGS;/ " highlight tabs and trailing spaces set listchars=tab:‗‗,trail:‗ set list " f2 runs hasktags map :exec ":!hasktags -x -c --ignore src" " strip trailing whitespace before saving " au BufWritePre *.hs,*.markdown silent! cal StripTrailingWhitespace() " rebuild hasktags after saving au BufWritePost *.hs silent! :exec ":!hasktags -x -c --ignore src" vector-instances-3.3.1/CHANGELOG.markdown0000644000000000000000000000030512562161426016231 0ustar00000000000000003.3.1 ----- * Support `vector` 0.11 3.3.0.1 ------- * Support for GHC 7.10.1 3.3 --- * Added more `Semigroup` instances. 3.2.1 ----- * Refactored build system. * Removed bounds on dependencies. vector-instances-3.3.1/LICENSE0000644000000000000000000000276112562161426014213 0ustar0000000000000000Copyright (c)2010, Edward Kmett All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Edward Kmett nor the names of other contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. vector-instances-3.3.1/README.markdown0000644000000000000000000000110312562161426015674 0ustar0000000000000000vector-instances ================ [![Hackage](https://img.shields.io/hackage/v/vector-instances.svg)](https://hackage.haskell.org/package/vector-instances) [![Build Status](https://secure.travis-ci.org/ekmett/vector-instances.png?branch=master)](http://travis-ci.org/ekmett/vector-instances) This provides a standard place for lots of orphan instances for the `vector` package. Contact Information ------------------- Contributions and bug reports are welcome! Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net. -Edward Kmett vector-instances-3.3.1/Setup.lhs0000644000000000000000000000014512562161426015010 0ustar0000000000000000#!/usr/bin/env runhaskell > import Distribution.Simple > main = defaultMainWithHooks simpleUserHooks vector-instances-3.3.1/vector-instances.cabal0000644000000000000000000000175412562161426017462 0ustar0000000000000000name: vector-instances version: 3.3.1 synopsis: Orphan Instances for 'Data.Vector' homepage: http://github.com/ekmett/vector-instances bug-reports: http://github.com/ekmett/vector-instances/issues license: BSD3 license-file: LICENSE author: Edward Kmett maintainer: ekmett@gmail.com category: Data, Data Structures build-type: Simple cabal-version: >=1.6 extra-source-files: .travis.yml .ghci .vim.custom .gitignore CHANGELOG.markdown README.markdown source-repository head type: git location: git://github.com/ekmett/vector-instances.git library other-extensions: TypeFamilies exposed-modules: Data.Vector.Instances hs-source-dirs: src build-depends: base >= 4 && < 5, vector >= 0.9 && < 0.12, semigroupoids >= 3, semigroups >= 0.8.3.1, comonad >= 3, pointed >= 3, keys >= 3 vector-instances-3.3.1/src/0000755000000000000000000000000012562161426013767 5ustar0000000000000000vector-instances-3.3.1/src/Data/0000755000000000000000000000000012562161426014640 5ustar0000000000000000vector-instances-3.3.1/src/Data/Vector/0000755000000000000000000000000012562161426016102 5ustar0000000000000000vector-instances-3.3.1/src/Data/Vector/Instances.hs0000644000000000000000000000661712562161426020377 0ustar0000000000000000{-# LANGUAGE CPP #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE MultiParamTypeClasses #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Vector.Instances -- Copyright : (c) Edward Kmett 2010 -- License : BSD3 -- Maintainer : ekmett@gmail.com -- Stability : experimental -- Portability : portable -- ----------------------------------------------------------------------------- module Data.Vector.Instances () where import Prelude hiding ((++), drop, length) import Control.Applicative import Control.Monad import Data.Semigroup import Data.Key import Data.Functor.Bind import Data.Functor.Extend import Data.Functor.Plus import Data.Pointed import Data.Monoid (Monoid(..)) import qualified Data.Vector as Vector import qualified Data.Vector.Generic as G #if MIN_VERSION_vector(0,11,0) import qualified Data.Vector.Fusion.Bundle as Stream import Data.Vector.Fusion.Bundle.Size #else import qualified Data.Vector.Fusion.Stream as Stream import Data.Vector.Fusion.Stream.Size #endif import Data.Vector (Vector,(++),drop,length,imap,ifoldr, ifoldl, izipWith,(!?),(//), generate) import qualified Data.Vector as Vector import qualified Data.Vector.Unboxed as Unboxed import qualified Data.Vector.Storable as Storable import qualified Data.Vector.Primitive as Primitive type instance Key Vector = Int instance Keyed Vector where mapWithKey = Vector.imap {-# INLINE mapWithKey #-} instance Zip Vector where zipWith = Vector.zipWith {-# INLINE zipWith #-} instance ZipWithKey Vector where zipWithKey = Vector.izipWith {-# INLINE zipWithKey #-} instance Indexable Vector where index = (!) {-# INLINE index #-} instance Lookup Vector where lookup = flip (!?) {-# INLINE lookup #-} instance Adjustable Vector where adjust f n v = case v !? n of Just a -> v // [(n, f a)] Nothing -> v {-# INLINE adjust #-} replace n a v = v // [(n,a)] {-# INLINE replace #-} instance FoldableWithKey Vector where foldrWithKey = Vector.ifoldr {-# INLINE foldrWithKey #-} foldlWithKey = Vector.ifoldl {-# INLINE foldlWithKey #-} instance Apply Vector where fs <.> as = G.unstream $ Stream.sized results (Exact n) where n = Vector.length fs * Vector.length as results = Stream.concatMap body $ G.stream fs body f = Stream.map f $ G.stream as {-# INLINE (<.>) #-} instance Pointed Vector where point = Vector.singleton {-# INLINE point #-} instance Bind Vector where v >>- f = Vector.concatMap f v {-# INLINE (>>-) #-} instance Semigroup (Vector a) where (<>) = (++) {-# INLINE (<>) #-} instance Alt Vector where () = (++) {-# INLINE () #-} instance Plus Vector where zero = Vector.empty {-# INLINE zero #-} instance TraversableWithKey Vector where traverseWithKey f v = Vector.fromListN (Vector.length v) <$> traverseWithKey f (Vector.toList v) {-# INLINE traverseWithKey #-} instance Extend Vector where duplicated v = generate (length v) (`drop` v) {-# INLINE duplicated #-} extended f v = generate (length v) (\n -> f (drop n v)) {-# INLINE extended #-} instance Unboxed.Unbox a => Semigroup (Unboxed.Vector a) where (<>) = (Unboxed.++) {-# INLINE (<>) #-} instance Storable.Storable a => Semigroup (Storable.Vector a) where (<>) = (Storable.++) {-# INLINE (<>) #-} instance Primitive.Prim a => Semigroup (Primitive.Vector a) where (<>) = (Primitive.++) {-# INLINE (<>) #-}