From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40057) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e4ejT-0001Ur-EE for guix-patches@gnu.org; Tue, 17 Oct 2017 23:09:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e4ejS-0004jx-1u for guix-patches@gnu.org; Tue, 17 Oct 2017 23:09:23 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:38369) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e4ejR-0004jl-TU for guix-patches@gnu.org; Tue, 17 Oct 2017 23:09:21 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1e4ejR-0004mE-KV for guix-patches@gnu.org; Tue, 17 Oct 2017 23:09:21 -0400 Subject: [bug#28884] [PATCH 32/38] gnu: Add ghc-vector-builder. Resent-Message-ID: From: rsiddharth Date: Wed, 18 Oct 2017 03:07:52 +0000 Message-Id: <20171018030758.1211-32-s@ricketyspace.net> In-Reply-To: <20171018030758.1211-1-s@ricketyspace.net> References: <20171018030217.1001-1-s@ricketyspace.net> <20171018030758.1211-1-s@ricketyspace.net> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 28884@debbugs.gnu.org Cc: s@ricketyspace.net * gnu/packages/haskell.scm (ghc-vector-builder): New variable. --- gnu/packages/haskell.scm | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 129f1792e..682f2da1e 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -9981,4 +9981,61 @@ The package is intended to rapidly evolve with the contribution from the community, with the missing features being added with pull-requests.") (license license:expat))) +(define-public ghc-vector-builder + (package + (name "ghc-vector-builder") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "vector-builder-" version "/" + "vector-builder-" version ".tar.gz")) + (sha256 + (base32 + "1l6sfgd2s107zkp1qd1w6jdjcbznp31769qf99pxar087f697wvp")))) + (build-system haskell-build-system) + (inputs `(("ghc-vector" ,ghc-vector) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-base-prelude" ,ghc-base-prelude))) + (native-inputs `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-hunit" ,ghc-tasty-hunit) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck) + ("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck-instances" ,ghc-quickcheck-instances) + ("ghc-rebase" ,ghc-rebase))) + (home-page "https://github.com/nikita-volkov/vector-builder") + (synopsis "Vector builder for Haskell") + (description "This Haskell package provides an API for constructing vectors. + +It provides the composable @code{Builder} abstraction, which has instances of the +@code{Monoid} and @code{Semigroup} classes. + +Usage: + +First you use the @code{Builder} abstraction to specify the structure of the +vector. Then you execute the builder to actually produce the vector. + +Example: + +The following code shows how you can efficiently concatenate different +datastructures into a single immutable vector: + +@verbatim +import qualified Data.Vector as A +import qualified VectorBuilder.Builder as B +import qualified VectorBuilder.Vector as C + +myVector :: A.Vector a -> [a] -> a -> A.Vector a +myVector vector list element = + C.build builder + where + builder = + B.vector vector <> + foldMap B.singleton list <> + B.singleton element +@end verbatim +") + (license license:expat))) + ;;; haskell.scm ends here -- 2.15.0.rc0