From 56bd759df1d0c750a065b8c845e93d5dfa6b549d Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 8 Aug 2015 13:49:04 -0700 Subject: proj/gentoo: Initial commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson X-Thanks: Alec Warner - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring - wrote much python to improve cvs2svn X-Thanks: Rich Freeman - validation scripts X-Thanks: Patrick Lauer - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed --- dev-haskell/lens/metadata.xml | 100 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 dev-haskell/lens/metadata.xml (limited to 'dev-haskell/lens/metadata.xml') diff --git a/dev-haskell/lens/metadata.xml b/dev-haskell/lens/metadata.xml new file mode 100644 index 000000000000..e817d8842f5f --- /dev/null +++ b/dev-haskell/lens/metadata.xml @@ -0,0 +1,100 @@ + + + + haskell + + 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@: <https://github.com/ekmett/lens#lens-lenses-folds-and-traversals> + + A video on how to use lenses and how they are constructed is available from youtube: <http://youtu.be/cefnmjtAolY?hd=1> + + Slides can be obtained here: <http://comonad.com/haskell/Lenses-Folds-and-Traversals-NYC.pdf> + + 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: <https://github.com/ekmett/lens/wiki> + + A small game of @pong@ and other more complex examples that manage their state using lenses can be found in the example folder: <https://github.com/ekmett/lens/blob/master/examples/> + + /Lenses, Folds and Traversals/ + + The core of the hierarchy of lens-like constructions looks like: + + + <<http://i.imgur.com/4fHw3Fd.png>> + + Local copy (<Hierarchy.png>) + + 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: + + > data Foo a = Foo Int Int a + + You can define lenses such as + + > -- bar :: Lens' (Foo a) Int + > bar :: Functor f => (Int -> f Int) -> Foo a -> f (Foo a) + > bar f (Foo a b c) = fmap (\a' -> Foo a' b c) (f a) + + > -- baz :: Lens (Foo a) (Foo b) a b + > quux :: Functor f => (a -> f b) -> Foo a -> f (Foo b) + > 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': + + > -- traverseBarAndBaz :: Traversal' (Foo a) Int + > traverseBarAndBaz :: Applicative f => (Int -> f Int) -> Foo a -> f (Foo a) + > traverseBarAndBaz f (Foo a b c) = Foo <$> f a <*> f b <*> 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). + + + Enable benchmarking against Neil Mitchell's + uniplate library for comparative performance analysis. Defaults to being + turned off to avoid the extra dependency. + 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. + Some 7.6.1-rc1 users report their TH still + uses old style inline pragmas. This lets them turn on inlining. + Disallow unsafeCoerce + Build and run the doctests test-suite. + Attempt a parallel build with GHC 7.8. + Build and run the doctests test-suite. + You can disable the hlint test suite with -f-test-hlint + You can disable the hunit test suite with -f-test-hunit + Build the properties test if we're building tests + Assert that we are trustworthy when we can + Turn on ghc-options: -Werror + + + ekmett/lens + + -- cgit v1.2.3-65-gdbad