summaryrefslogtreecommitdiff
path: root/dev-haskell/lens
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-12-01 03:04:39 +0000
committerV3n3RiX <venerix@redcorelinux.org>2017-12-01 03:04:39 +0000
commit407525b571b48cfd65e1ad7a02d250a927c967c9 (patch)
tree844bea44d85dc7218f54970af1c42cc9d55c3f1a /dev-haskell/lens
parent89c6c06b8c42107dd231687a1012354e7d3039fc (diff)
gentoo resync : 01.12.2017
Diffstat (limited to 'dev-haskell/lens')
-rw-r--r--dev-haskell/lens/Manifest2
-rw-r--r--dev-haskell/lens/metadata.xml77
2 files changed, 41 insertions, 38 deletions
diff --git a/dev-haskell/lens/Manifest b/dev-haskell/lens/Manifest
index bb250ab50d3e..bc37c0974ac2 100644
--- a/dev-haskell/lens/Manifest
+++ b/dev-haskell/lens/Manifest
@@ -12,4 +12,4 @@ EBUILD lens-4.14.ebuild 3388 BLAKE2B 0dd145b085606efad2e88a14f4b2d55cb897b126b7b
EBUILD lens-4.2.ebuild 4705 BLAKE2B 6429026254cd996839c80b04b6980640eeea9d43496a974e23b9f0265428de80edba3679b90751048e118697a2aa4a98ea3c23ccb017c65452ce863a6b51bd73 SHA512 b9ad5400b48ad07b29763d60f82aeb4bd85ed5c33219593c02d8acd5da20c665b4251714d324e0bf952838d473ddd64b951c4c52e63e48bee6798a5976979a55
EBUILD lens-4.6.0.1.ebuild 4377 BLAKE2B c4539f4747069a31476099f811e9eaef41c35ace2a204927cac83e4eb71aaf3495efd492273837d55d59d8b43cd3fda9bee3abd31b3e9e7f36bb8eb472b9cd17 SHA512 45885aad6bb5be0a56ff3afc212cdced433d7194a40e1bcab1901ba0687dd11cff2dbd483f84e8566d598ec3dad0b4f8a9b7576cc89d5d787319d28d0747d9fd
EBUILD lens-4.9.1.ebuild 4345 BLAKE2B 1dd85ae708f91e9b127085b60772bba79072f5040db1af4da45b966ecbf8281e422c81a5baf10cb7f786610eb75ce0b319cad63968a9622251f084669239e9f5 SHA512 3c75d0829a98ad1a8a6e883fb5c88e40bf08ed8a955e9186aef1795bf2485dc3ab30f88f413197505df9d0dde08bde81183fe0baa688e5fe1f7f71c0992a0555
-MISC metadata.xml 4960 BLAKE2B 1ef71de036a5736c7de491b0ea7ce42222864f1d24efc3f48f3b005b12faebe080f241fb7d2bb2b20b78bcf3ce7317b653fde2e07513efb5ba71bced8bf3b3f4 SHA512 acbe0f7adbda947da7c57e4da15c576bb0e4a48eb70b68729fb59782dd042df15d264d98575c36a22939f9ac69972f6c7d6b2494af2126ca4e45ab0de9846cdd
+MISC metadata.xml 4924 BLAKE2B 0d937d25157349422abd09755aa6b90b31aab051e838188045fa774b5fa6c428c8ba1b5d6cf6d812441a59ac83ea46e467c21e097ea95ec420ef1c7fad3cef1f SHA512 54ee64d40c56b8ab2857b051ab8e1abf6dd7c68f3f5d539e636518f0c94bcaa34a3e5b038610b067a6473080a23cc2928b61c4405b0e3a2f0823313f6dbdb386
diff --git a/dev-haskell/lens/metadata.xml b/dev-haskell/lens/metadata.xml
index 475ca4ea9656..ffb64447adda 100644
--- a/dev-haskell/lens/metadata.xml
+++ b/dev-haskell/lens/metadata.xml
@@ -9,84 +9,87 @@
This package comes \"Batteries Included\" with many useful lenses for the types
commonly used from the Haskell Platform, and with tools for automatically
generating lenses and isomorphisms for user-supplied data types.
-
+
The combinators in @Control.Lens@ provide a highly generic toolbox for composing
families of getters, folds, isomorphisms, traversals, setters and lenses and their
indexed variants.
-
+
An overview, with a large number of examples can be found in the @README@: &lt;https://github.com/ekmett/lens#lens-lenses-folds-and-traversals&gt;
-
+
A video on how to use lenses and how they are constructed is available from youtube: &lt;http://youtu.be/cefnmjtAolY?hd=1&gt;
-
+
Slides can be obtained here: &lt;http://comonad.com/haskell/Lenses-Folds-and-Traversals-NYC.pdf&gt;
-
+
More information on the care and feeding of lenses, including a brief tutorial and motivation
for their types can be found on the lens wiki: &lt;https://github.com/ekmett/lens/wiki&gt;
-
+
A small game of @pong@ and other more complex examples that manage their state using lenses can be found in the example folder: &lt;https://github.com/ekmett/lens/blob/master/examples/&gt;
-
+
/Lenses, Folds and Traversals/
-
+
The core of the hierarchy of lens-like constructions looks like:
-
-
+
+
&lt;&lt;http://i.imgur.com/4fHw3Fd.png&gt;&gt;
-
+
Local copy (&lt;Hierarchy.png&gt;)
-
+
You can compose any two elements of the hierarchy above using @(.)@ from the @Prelude@, and you can
use any element of the hierarchy as any type it linked to above it.
-
+
The result is their lowest upper bound in the hierarchy (or an error if that bound doesn't exist).
-
+
For instance:
-
+
* You can use any 'Traversal' as a 'Fold' or as a 'Setter'.
-
+
* The composition of a 'Traversal' and a 'Getter' yields a 'Fold'.
-
+
/Minimizing Dependencies/
-
+
If you want to provide lenses and traversals for your own types in your own libraries, then you
can do so without incurring a dependency on this (or any other) lens package at all.
-
+
/e.g./ for a data type:
-
+
&gt; data Foo a = Foo Int Int a
-
+
You can define lenses such as
-
+
&gt; -- bar :: Lens' (Foo a) Int
&gt; bar :: Functor f =&gt; (Int -&gt; f Int) -&gt; Foo a -&gt; f (Foo a)
&gt; bar f (Foo a b c) = fmap (\a' -&gt; Foo a' b c) (f a)
-
+
&gt; -- baz :: Lens (Foo a) (Foo b) a b
&gt; quux :: Functor f =&gt; (a -&gt; f b) -&gt; Foo a -&gt; f (Foo b)
&gt; quux f (Foo a b c) = fmap (Foo a b) (f c)
-
+
without the need to use any type that isn't already defined in the @Prelude@.
-
+
And you can define a traversal of multiple fields with 'Control.Applicative.Applicative':
-
+
&gt; -- traverseBarAndBaz :: Traversal' (Foo a) Int
&gt; traverseBarAndBaz :: Applicative f =&gt; (Int -&gt; f Int) -&gt; Foo a -&gt; f (Foo a)
&gt; traverseBarAndBaz f (Foo a b c) = Foo &lt;$&gt; f a &lt;*&gt; f b &lt;*&gt; pure c
-
+
What is provided in this library is a number of stock lenses and traversals for
common haskell types, a wide array of combinators for working them, and more
exotic functionality, (/e.g./ getters, setters, indexed folds, isomorphisms).
</longdescription>
<use>
- <flag name="benchmark-uniplate">Enable benchmarking against Neil Mitchell's
- uniplate library for comparative performance analysis. Defaults to being
- turned off to avoid the extra dependency.</flag>
- <flag name="inlining">Generate inline pragmas when using
- template-haskell. This defaults to enabled, but you can
- to shut it off to benchmark the relative performance impact,
- or as last ditch effort to address compile errors resulting
- from the myriad versions of template-haskell that all purport to be 2.8.</flag>
- <flag name="old-inline-pragmas">Some 7.6.1-rc1 users report their TH still
- uses old style inline pragmas. This lets them turn on inlining.</flag>
+ <flag name="benchmark-uniplate">
+ Enable benchmarking against Neil Mitchell's
+ uniplate library for comparative performance analysis. Defaults to being
+ turned off to avoid the extra dependency.
+ </flag>
+ <flag name="inlining">
+ Generate inline pragmas when using
+ template-haskell. This defaults to enabled, but you can
+ to shut it off to benchmark the relative performance impact,
+ or as last ditch effort to address compile errors resulting
+ from the myriad versions of template-haskell that all purport to be 2.8.
+ </flag>
+ <flag name="old-inline-pragmas">Some 7.6.1-rc1 users report their TH still uses old style inline pragmas. This lets them turn on inlining.</flag>
<flag name="safe">Disallow unsafeCoerce</flag>
<flag name="dump-splices">Build and run the doctests test-suite.</flag>
<flag name="j">Attempt a parallel build with GHC 7.8.</flag>