diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 21:03:06 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-07-14 21:03:06 +0100 |
commit | 8376ef56580626e9c0f796d5b85b53a0a1c7d5f5 (patch) | |
tree | 7681bbd4e8b05407772df40a4bf04cbbc8afc3fa /dev-haskell/data-accessor | |
parent | 30a9caf154332f12ca60756e1b75d2f0e3e1822d (diff) |
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-haskell/data-accessor')
-rw-r--r-- | dev-haskell/data-accessor/Manifest | 3 | ||||
-rw-r--r-- | dev-haskell/data-accessor/data-accessor-0.2.2.7.ebuild | 25 | ||||
-rw-r--r-- | dev-haskell/data-accessor/metadata.xml | 70 |
3 files changed, 98 insertions, 0 deletions
diff --git a/dev-haskell/data-accessor/Manifest b/dev-haskell/data-accessor/Manifest new file mode 100644 index 000000000000..8af07e108a96 --- /dev/null +++ b/dev-haskell/data-accessor/Manifest @@ -0,0 +1,3 @@ +DIST data-accessor-0.2.2.7.tar.gz 9670 BLAKE2B ac672adce3fe9dcf4bd01b47a05c089fef14e485835271627b9dc3f4a85aa39b98e2cc36213988516d2eb45bd9acb03e9ba2f822d215bfc322a35e7a9a0cf73b SHA512 42f78d5be738e83e2bc64a2f38bc70748ecb741433916c4e527355f5e808a844e43b14607cfff149a5951f557c73a947469c878340738244e3778f475ccd021d +EBUILD data-accessor-0.2.2.7.ebuild 664 BLAKE2B cf379029ceebdf445c92a97ea97ff8aa501dd7a190ba237b7468d014ba607e1c92fb200b07ecaa4ea60675cc3091decbae61aea733122b9b7066d3ae6b2324ea SHA512 938a72120625172d0e72e5e96ef16b239c25d3c49671efff544e7c7cfc242a63dba50f870c6ee530b01a01a9e1c54838539ea5124ba21d074e9d52c6da580b55 +MISC metadata.xml 2766 BLAKE2B 479dee85b4b018bdfc63524d77c5655bef1135dea72120d1dea1a0798d544af47996b7317a44624abf311f1156837f5fb8bd2ec2d198438b6ee59ad190e979ee SHA512 3431d5aac5f153e477c641a57f39dd2e1a2ebe690db42f9e41737991cb0098c16d2ce09943d3eb09451574cc7865f9ac769f1a8e08c808ad918a9de329d31636 diff --git a/dev-haskell/data-accessor/data-accessor-0.2.2.7.ebuild b/dev-haskell/data-accessor/data-accessor-0.2.2.7.ebuild new file mode 100644 index 000000000000..6d552dd120b6 --- /dev/null +++ b/dev-haskell/data-accessor/data-accessor-0.2.2.7.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 + +# ebuild generated by hackport 0.4.6.9999 + +CABAL_FEATURES="lib profile haddock hoogle hscolour" +inherit haskell-cabal + +DESCRIPTION="Utilities for accessing and manipulating fields of records" +HOMEPAGE="http://www.haskell.org/haskellwiki/Record_access" +SRC_URI="mirror://hackage/packages/archive/${PN}/${PV}/${P}.tar.gz" + +LICENSE="BSD" +SLOT="0/${PV}" +KEYWORDS="~amd64 ~x86" +IUSE="" + +RDEPEND=">=dev-haskell/transformers-0.2:=[profile?] <dev-haskell/transformers-0.6:=[profile?] + >=dev-lang/ghc-7.4.1:= +" +DEPEND="${RDEPEND} + >=dev-haskell/cabal-1.6 +" diff --git a/dev-haskell/data-accessor/metadata.xml b/dev-haskell/data-accessor/metadata.xml new file mode 100644 index 000000000000..1962ea1d1e20 --- /dev/null +++ b/dev-haskell/data-accessor/metadata.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>haskell@gentoo.org</email> + <name>Gentoo Haskell</name> + </maintainer> + <longdescription> + In Haskell 98 the name of a record field + is automatically also the name of a function which gets the value + of the according field. + E.g. if we have + + data Pair a b = Pair + first :: a, second :: b + + then + + > first :: Pair a b -> a + > second :: Pair a b -> b + + However for setting or modifying a field value + we need to use some syntactic sugar, which is often clumsy. + + modifyFirst :: (a -> a) -> (Pair a b -> Pair a b) + modifyFirst f r\@(Pair + first=a + ) = r + first = f a + + With this package you can define record field accessors + which allow setting, getting and modifying values easily. + The package clearly demonstrates the power of the functional approach: + You can combine accessors of a record and sub-records, + to make the access look like the fields of the sub-record belong to the main record. + + Example: + + > *Data.Accessor.Example> (first^:second^=10) (('b',7),"hallo") + > (('b',10),"hallo") + + You can easily manipulate record fields in a 'Control.Monad.State.State' monad, + you can easily code 'Show' instances that use the Accessor syntax + and you can parse binary streams into records. + See @Data.Accessor.Example@ for demonstration of all features. + + It would be great if in revised Haskell versions the names of record fields + are automatically 'Data.Accessor.Accessor's + rather than plain @get@ functions. + For now, the package @data-accessor-template@ provides Template Haskell functions + for automated generation of 'Data.Acesssor.Accessor's. + See also the other @data-accessor@ packages + that provide an Accessor interface to other data types. + The package @enumset@ provides accessors to bit-packed records. + + For similar packages see @lenses@ and @fclabel@. + A related concept are editors + <http://conal.net/blog/posts/semantic-editor-combinators/>. + Editors only consist of a modify method + (and @modify@ applied to a 'const' function is a @set@ function). + This way, they can modify all function values of a function at once, + whereas an accessor can only change a single function value, + say, it can change @f 0 = 1@ to @f 0 = 2@. + This way, editors can even change the type of a record or a function. + An Arrow instance can be defined for editors, + but for accessors only a Category instance is possible ('(.)' method). + The reason is the @arr@ method of the @Arrow@ class, + that conflicts with the two-way nature (set and get) of accessors. + </longdescription> +</pkgmetadata> |