From 1798c4aeca70ac8d0a243684d6a798fbc65735f8 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 14 Jul 2018 20:57:42 +0100 Subject: gentoo resync : 14.07.2018 --- dev-haskell/data-accessor/metadata.xml | 70 ---------------------------------- 1 file changed, 70 deletions(-) delete mode 100644 dev-haskell/data-accessor/metadata.xml (limited to 'dev-haskell/data-accessor/metadata.xml') diff --git a/dev-haskell/data-accessor/metadata.xml b/dev-haskell/data-accessor/metadata.xml deleted file mode 100644 index 1962ea1d1e20..000000000000 --- a/dev-haskell/data-accessor/metadata.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - haskell@gentoo.org - Gentoo Haskell - - - 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. - - -- cgit v1.2.3