multiplate-simplified (empty) → 0.0.0.1
raw patch · 35 files changed
+1787/−0 lines, 35 filesdep +basedep +multiplatedep +transformerssetup-changedbinary-added
Dependencies added: base, multiplate, transformers
Files
- CHANGELOG +0/−0
- Data/Generics/Multiplate/Simplified.hs +337/−0
- LICENSE +20/−0
- Setup.lhs +4/−0
- dist/build/Data/Generics/Multiplate/NoProjector.hi binary
- dist/build/Data/Generics/Multiplate/NoProjector.o binary
- dist/build/Data/Generics/Multiplate/Simplified.hi binary
- dist/build/Data/Generics/Multiplate/Simplified.o binary
- dist/build/HSmultiplate-noprojector-0.0.0.1.o binary
- dist/build/HSmultiplate-noprojector-0.0.1.1.o binary
- dist/build/HSmultiplate-simplified-0.0.0.1.o binary
- dist/build/autogen/Paths_multiplate_noprojector.hs +29/−0
- dist/build/autogen/Paths_multiplate_simplified.hs +29/−0
- dist/build/autogen/cabal_macros.h +23/−0
- dist/build/libHSmultiplate-noprojector-0.0.0.1.a binary
- dist/build/libHSmultiplate-noprojector-0.0.1.1.a binary
- dist/build/libHSmultiplate-simplified-0.0.0.1.a binary
- dist/doc/html/multiplate-simplified/Data-Generics-Multiplate-Simplifi +118/−0
- dist/doc/html/multiplate-simplified/doc-index.html +4/−0
- dist/doc/html/multiplate-simplified/frames.html +28/−0
- dist/doc/html/multiplate-simplified/haddock-util.js +311/−0
- dist/doc/html/multiplate-simplified/haddock.css +297/−0
- dist/doc/html/multiplate-simplified/haskell_icon.gif binary
- dist/doc/html/multiplate-simplified/hslogo-16.png binary
- dist/doc/html/multiplate-simplified/index-frames.html +4/−0
- dist/doc/html/multiplate-simplified/index.html +8/−0
- dist/doc/html/multiplate-simplified/mini_Data-Generics-Multiplate-Sim +4/−0
- dist/doc/html/multiplate-simplified/minus.gif binary
- dist/doc/html/multiplate-simplified/multiplate-simplified.haddock binary
- dist/doc/html/multiplate-simplified/ocean.css +542/−0
- dist/doc/html/multiplate-simplified/plus.gif binary
- dist/doc/html/multiplate-simplified/synopsis.png binary
- dist/package.conf.inplace +2/−0
- dist/setup-config +2/−0
- multiplate-simplified.cabal +25/−0
@@ -0,0 +1,337 @@+{-# LANGUAGE MultiParamTypeClasses #-}++{-|+0\. Given these data types for a simple language:++@data Prog a = Prog a [Decl]++data Decl = VarDecl Var Expr+ | FunDecl Var [Var] [Decl]+ | Return Expr++data Expr = Ref String+ | Number Int+ | Add Expr Expr+ | Mul Expr Expr++data Var = Var String+@++\----------------------------------------++1\. Define a @Plate f@ data type++The name of the fields should refer to the actual data type: they will be prefixed with a \"p\" here.+These field accessors are called projectors for the given plate and the actual data type (see the @Projector p a@ type alias).+You have to use projectors to provide definition for the @multiplate@ method, and also for functions like @foldFor@.+With this module, you only need projectors for the 'IsProjector' instance definition.+(However you do have to use projectors anyway if @List, Maybe, (,)@, etc. are not part of the plate,+in which case you have to explicitly traverse them to expose their structure to Multiplate. See: point 3.)++@data Plate f = Plate+ { pProg :: forall a. Prog a -> f (Prog a)+ , pDecl :: Decl -> f Decl+ , pExpr :: Expr -> f Expr+ , pVar :: Var -> f Var+ }+@++\----------------------------------------++2\. Define 'IsProjector' instances for @Plate@ and all the actual data types++@instance IsProjector Plate (Prog a) where+ getProjector _ _ = pProg++instance IsProjector Plate Decl where+ getProjector _ _ = pDecl++instance IsProjector Plate Expr where+ getProjector _ _ = pExpr++instance IsProjector Plate Var where+ getProjector _ _ = pVar+@++\----------------------------------------++3\. Define a single @Multiplate@ instance for @Plate@++Definitions required without this module are given in the comments.+(The \"b\" prefixes in functions stand for \"build\".)++@+instance Multiplate Plate where+ mkPlate build = Plate (build pProg) (build pDecl) (build pExpr) (build pVar)+ multiplate p = Plate bProg bDecl bExpr bVar where+@++@ \-- you have to define these here to capture the \'p\' parameter+ constr \<$>: a = constr \<$> (getProjector p a) p a+ appl \<*>: a = appl \<*> (getProjector p a) p a+ infixl 4 \<$>:+ infixl 4 \<*>:+@++@+ \-- definitions:+@+ +@ \-- lists, maybe values, etc. have a Traversable instance, which has to be used for these \[\*\]+ bProg (Prog a decls) = Prog \<$> pure a \<*> traverse (pDecl p) decls +@++@ bDecl (VarDecl var expr) = VarDecl \<$>: var \<*>: expr+ \-- bDecl (VarDecl str expr) = VarDecl \<$> pVar p var \<*> pExpr p expr+ bDecl (FunDecl var vars decls) = FunDecl \<$>: var \<*> traverse (pVar p) vars \<*> traverse (pDecl p) decls+ bDecl (Return expr) = Return \<$>: expr+ \-- bDecl (Return expr) = Return \<$> pExpr p expr+@++@ bExpr (Ref str) = Ref \<$> pure str+ bExpr (Number int) = Number \<$> pure int+ bExpr (Add expr expr\') = Add \<$>: expr \<*>: expr\'+ \-- bExpr (Add expr expr\') = Add \<$> pExpr p expr \<*> pExpr p expr\'+ bExpr (Mul expr expr\') = Mul \<$>: expr \<*>: expr\'+ \-- bExpr (Mul expr expr\') = Mul \<$> pExpr p expr \<*> pExpr p expr\'+@+++@ bVar (Var str) = Var \<$> pure str+@++\[\*\] However, tuples for example are not @Traversable@ (since they don't have the appropriate kind)+so instead of @traverse@ one can use a function like this:++@traverseTuple fa fb (a, b) = (,) \<$> fa a \<*> fb b++bConstr (Constr a b) = Constr \<$> traverseTuple (pTypeOfA p) (pTypeOfB p) (a, b)+@++OR+simply add tuples for the plate definition, just like @Expr@ or @Decl@.+This also can be done for @List, Maybe@, etc., and then the @traverse@ functions can be replaced with @\<$>:@, @\<*>:@,+and generic functions defined in this module can be used for these too.++\----------------------------------------++4\. Using multiplate++In a given program:++@var a = 1;+function func(arg1, arg2){+ return a + arg1+}+@++and its representation:++@prog :: Prog ()+prog = Prog () [VarDecl (Var \"a\") (Number 1)+ ,FunDecl (Var \"func\") [(Var \"arg1\"), (Var \"arg2\")]+ [Return (Add (Ref \"a\") (Ref \"arg1\"))]]+@++to get the list of variables one has to define a plate by+updating another plate containing defaults for all types (@purePlate@) by+modifying the field that correpsondes to 'Var' data type.+Then create another plate where the order of traversal is set (@preorderFold@),+and finally call 'gfoldFor' with the plate we defined, and then with the actual data type.+Without this module instead of 'gfoldFor' one can only use @foldFor@,+which requires an extra argument (a projector), which corresponds to the root datatype:+in this case it's @pProg@ because our program has a 'Prog' data type.+But 'gfoldFor', 'gtraverseFor', etc. can be used with any data type,+because in the 'IsProjector' instances we already defined what it's projector is.++@+variablesPlate :: Plate (Constant [String])+variablesPlate = preorderFold purePlate { pVar = (\(Var str) -> Constant [str]) }++vars :: (IsProjector Plate a) => a -> [String]+vars x = gfoldFor variablesPlate x++vars' :: Prog a -> [String]+vars' x = foldFor pProg variablesPlate x+@++@> vars prog+[\"a\",\"func\",\"arg1\",\"arg2\"]+@++\----------------------------------------++All of this code is included in the source at the end of this file for easier copying.++Multiplate documentation: <http://hackage.haskell.org/package/multiplate>++-}+++module Data.Generics.Multiplate.Simplified where++import Data.Generics.Multiplate+import Data.Functor.Identity+import Data.Functor.Constant+import Data.Functor.Compose+import Data.Monoid++class (Multiplate p) => IsProjector p a where+ getProjector :: p appl -> a -> Projector p a+++--traverseFor :: (Multiplate p) => Projector p a -> p Identity -> a -> a+--traverseFor proj f = runIdentity . proj f+gtraverseFor :: (IsProjector p a) => p Identity -> a -> a+gtraverseFor f a = traverseFor (getProjector f a) f a++--traverseMFor :: (Multiplate p, Monad m) => Projector p a -> p m -> a -> m a+--traverseMFor proj f = proj f+gtraverseMFor :: (IsProjector p a, Monad m) => p m -> a -> m a+gtraverseMFor f a = traverseMFor (getProjector f a) f a++--foldFor :: (Multiplate p) => Projector p a -> p (Constant o) -> a -> o+--foldFor proj f = getConstant . proj f+gfoldFor :: (IsProjector p a) => p (Constant o) -> a -> o+gfoldFor f a = foldFor (getProjector f a) f a++--unwrapFor :: (Multiplate p) => (o -> b) -> Projector p a -> p (Constant o) -> a -> b+--unwrapFor unwrapper proj f = unwrapper . foldFor proj f+gunwrapFor :: (IsProjector p a) => (o -> b) -> p (Constant o) -> a -> b+gunwrapFor unwrapper f a = unwrapFor unwrapper (getProjector f a) f a+++gsumFor :: (IsProjector p a) => p (Constant (Sum n)) -> a -> n+gsumFor = gunwrapFor getSum++gproductFor :: (IsProjector p a) => p (Constant (Product n)) -> a -> n+gproductFor = gunwrapFor getProduct++gallFor :: (IsProjector p a) => p (Constant All) -> a -> Bool+gallFor = gunwrapFor getAll++ganyFor :: (IsProjector p a) => p (Constant Any) -> a -> Bool+ganyFor = gunwrapFor getAny++gfirstFor :: (IsProjector p a) => p (Constant (First b)) -> a -> Maybe b+gfirstFor = gunwrapFor getFirst++glastFor :: (IsProjector p a) => p (Constant (Last b)) -> a -> Maybe b+glastFor = gunwrapFor getLast++++{-++{-# LANGUAGE Rank2Types, MultiParamTypeClasses #-} + +import Data.Generics.Multiplate +import Data.Generics.Multiplate.Simplified +import Data.Functor.Identity +import Data.Functor.Constant +import Data.Functor.Compose +import Data.Monoid +import Data.Traversable +import Control.Applicative +--import Control.Monad +--import Control.Monad.Trans.Maybe +--import Control.Newtype + + + +data Prog a = Prog a [Decl] + +data Decl = VarDecl Var Expr + | FunDecl Var [Var] [Decl] + | Return Expr + +data Expr = Ref String + | Number Int + | Add Expr Expr + | Mul Expr Expr + +data Var = Var String + + + +data Plate f = Plate + { pProg :: forall a. Prog a -> f (Prog a) + , pDecl :: Decl -> f Decl + , pExpr :: Expr -> f Expr + , pVar :: Var -> f Var + } + + + +instance IsProjector Plate (Prog a) where + getProjector _ _ = pProg + +instance IsProjector Plate Decl where + getProjector _ _ = pDecl + +instance IsProjector Plate Expr where + getProjector _ _ = pExpr + +instance IsProjector Plate Var where + getProjector _ _ = pVar + + + + +instance Multiplate Plate where + + mkPlate build = Plate (build pProg) (build pDecl) (build pExpr) (build pVar) + + multiplate p = Plate bProg bDecl bExpr bVar where + + -- you have to define these here to capture the 'p' parameter + constr <$>: a = constr <$> (getProjector p a) p a + appl <*>: a = appl <*> (getProjector p a) p a + infixl 4 <$>: + infixl 4 <*>: + + -- definitions + + -- lists, maybe values, etc. have a Traversable instance, which has to be used for these [*] + + bProg (Prog a decls) = Prog <$> pure a <*> traverse (pDecl p) decls + + bDecl (VarDecl var expr) = VarDecl <$>: var <*>: expr + -- bDecl (VarDecl str expr) = VarDecl <$> pVar p var <*> pExpr p expr + + bDecl (FunDecl var vars decls) = FunDecl <$>: var <*> traverse (pVar p) vars <*> traverse (pDecl p) decls + + bDecl (Return expr) = Return <$>: expr + -- bDecl (Return expr) = Return <$> pExpr p expr + + bExpr (Ref str) = Ref <$> pure str + + bExpr (Number int) = Number <$> pure int + + bExpr (Add expr expr') = Add <$>: expr <*>: expr' + -- bExpr (Add expr expr') = Add <$> pExpr p expr <*> pExpr p expr' + + bExpr (Mul expr expr') = Mul <$>: expr <*>: expr' + -- bExpr (Mul expr expr') = Mul <$> pExpr p expr <*> pExpr p expr' + + bVar (Var str) = Var <$> pure str + + +-- var a = 1; +-- function func(arg1, arg2){ +-- return a + arg1 +-- } + + +-- prog :: Prog () +prog = Prog () [VarDecl (Var "a") (Number 1) + ,FunDecl (Var "func") [(Var "arg1"), (Var "arg2")] + [Return (Add (Ref "a") (Ref "arg1"))]] + +-- variablesPlate :: Plate (Constant [String]) +variablesPlate = preorderFold purePlate { pVar = (\(Var str) -> Constant [str]) } + +vars x = gfoldFor variablesPlate x +vars' x = foldFor pProg variablesPlate x ++-}
@@ -0,0 +1,20 @@+Copyright (c) 2011+Balazs Endresz++Permission is hereby granted, free of charge, to any person obtaining a copy+of this software and associated documentation files (the "Software"), to deal+in the Software without restriction, including without limitation the rights+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+copies of the Software, and to permit persons to whom the Software is+furnished to do so, subject to the following conditions:++The above copyright notice and this permission notice shall be included in+all copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+THE SOFTWARE.
@@ -0,0 +1,4 @@+#! /usr/bin/env runhaskell+ +> import Distribution.Simple+> main = defaultMain
binary file changed (absent → 5536 bytes)
binary file changed (absent → 6850 bytes)
binary file changed (absent → 7408 bytes)
binary file changed (absent → 8278 bytes)
binary file changed (absent → 6333 bytes)
binary file changed (absent → 6327 bytes)
binary file changed (absent → 8001 bytes)
@@ -0,0 +1,29 @@+module Paths_multiplate_noprojector (+ version,+ getBinDir, getLibDir, getDataDir, getLibexecDir,+ getDataFileName+ ) where++import Data.Version (Version(..))+import System.Environment (getEnv)++version :: Version+version = Version {versionBranch = [0,0,0,1], versionTags = []}++bindir, libdir, datadir, libexecdir :: FilePath++bindir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\bin"+libdir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-noprojector-0.0.0.1\\ghc-6.12.3"+datadir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-noprojector-0.0.0.1"+libexecdir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-noprojector-0.0.0.1"++getBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath+getBinDir = catch (getEnv "multiplate_noprojector_bindir") (\_ -> return bindir)+getLibDir = catch (getEnv "multiplate_noprojector_libdir") (\_ -> return libdir)+getDataDir = catch (getEnv "multiplate_noprojector_datadir") (\_ -> return datadir)+getLibexecDir = catch (getEnv "multiplate_noprojector_libexecdir") (\_ -> return libexecdir)++getDataFileName :: FilePath -> IO FilePath+getDataFileName name = do+ dir <- getDataDir+ return (dir ++ "\\" ++ name)
@@ -0,0 +1,29 @@+module Paths_multiplate_simplified (+ version,+ getBinDir, getLibDir, getDataDir, getLibexecDir,+ getDataFileName+ ) where++import Data.Version (Version(..))+import System.Environment (getEnv)++version :: Version+version = Version {versionBranch = [0,0,0,1], versionTags = []}++bindir, libdir, datadir, libexecdir :: FilePath++bindir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\bin"+libdir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-simplified-0.0.0.1\\ghc-7.0.2"+datadir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-simplified-0.0.0.1"+libexecdir = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-simplified-0.0.0.1"++getBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath+getBinDir = catch (getEnv "multiplate_simplified_bindir") (\_ -> return bindir)+getLibDir = catch (getEnv "multiplate_simplified_libdir") (\_ -> return libdir)+getDataDir = catch (getEnv "multiplate_simplified_datadir") (\_ -> return datadir)+getLibexecDir = catch (getEnv "multiplate_simplified_libexecdir") (\_ -> return libexecdir)++getDataFileName :: FilePath -> IO FilePath+getDataFileName name = do+ dir <- getDataDir+ return (dir ++ "\\" ++ name)
@@ -0,0 +1,23 @@+/* DO NOT EDIT: This file is automatically generated by Cabal */++/* package base-4.3.1.0 */+#define VERSION_base "4.3.1.0"+#define MIN_VERSION_base(major1,major2,minor) (\+ (major1) < 4 || \+ (major1) == 4 && (major2) < 3 || \+ (major1) == 4 && (major2) == 3 && (minor) <= 1)++/* package multiplate-0.0.1.1 */+#define VERSION_multiplate "0.0.1.1"+#define MIN_VERSION_multiplate(major1,major2,minor) (\+ (major1) < 0 || \+ (major1) == 0 && (major2) < 0 || \+ (major1) == 0 && (major2) == 0 && (minor) <= 1)++/* package transformers-0.2.2.0 */+#define VERSION_transformers "0.2.2.0"+#define MIN_VERSION_transformers(major1,major2,minor) (\+ (major1) < 0 || \+ (major1) == 0 && (major2) < 2 || \+ (major1) == 0 && (major2) == 2 && (minor) <= 2)+
binary file changed (absent → 9946 bytes)
binary file changed (absent → 9934 bytes)
binary file changed (absent → 12852 bytes)
@@ -0,0 +1,118 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Data.Generics.Multiplate.Simplified</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ +window.onload = function () {pageLoad();setSynopsis("mini_Data-Generics-Multiplate-Simplified.html");}; +//]]> +</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">multiplate-simplified-0.0.0.1: Shorter, more generic functions for Multiplate.</p></div><div id="content"><div id="module-header"><p class="caption">Data.Generics.Multiplate.Simplified</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>0. Given these data types for a simple language: +</p><pre>data Prog a = Prog a [Decl] + +data Decl = VarDecl Var Expr + | FunDecl Var [Var] [Decl] + | Return Expr + +data Expr = Ref String + | Number Int + | Add Expr Expr + | Mul Expr Expr + +data Var = Var String +</pre><p>---------------------------------------- +</p><p>1. Define a <code>Plate f</code> data type +</p><p>The name of the fields should refer to the actual data type: they will be prefixed with a "p" here. +These field accessors are called projectors for the given plate and the actual data type (see the <code>Projector p a</code> type alias). +You have to use projectors to provide definition for the <code>multiplate</code> method, and also for functions like <code>foldFor</code>. +With this module, you only need projectors for the <code><a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a></code> instance definition. +(However you do have to use projectors anyway if <code>List, Maybe, (,)</code>, etc. are not part of the plate, +in which case you have to explicitly traverse them to expose their structure to Multiplate. See: point 3.) +</p><pre>data Plate f = Plate + { pProg :: forall a. Prog a -> f (Prog a) + , pDecl :: Decl -> f Decl + , pExpr :: Expr -> f Expr + , pVar :: Var -> f Var + } +</pre><p>---------------------------------------- +</p><p>2. Define <code><a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a></code> instances for <code>Plate</code> and all the actual data types +</p><pre>instance IsProjector Plate (Prog a) where + getProjector _ _ = pProg + +instance IsProjector Plate Decl where + getProjector _ _ = pDecl + +instance IsProjector Plate Expr where + getProjector _ _ = pExpr + +instance IsProjector Plate Var where + getProjector _ _ = pVar +</pre><p>---------------------------------------- +</p><p>3. Define a single <code>Multiplate</code> instance for <code>Plate</code> +</p><p>Definitions required without this module are given in the comments. +(The "b" prefixes in functions stand for "build".) +</p><pre> +instance Multiplate Plate where + mkPlate build = Plate (build pProg) (build pDecl) (build pExpr) (build pVar) + multiplate p = Plate bProg bDecl bExpr bVar where +</pre><pre> -- you have to define these here to capture the 'p' parameter + constr <$>: a = constr <$> (getProjector p a) p a + appl <*>: a = appl <*> (getProjector p a) p a + infixl 4 <$>: + infixl 4 <*>: +</pre><pre> + -- definitions: +</pre><pre> -- lists, maybe values, etc. have a Traversable instance, which has to be used for these [*] + bProg (Prog a decls) = Prog <$> pure a <*> traverse (pDecl p) decls +</pre><pre> bDecl (VarDecl var expr) = VarDecl <$>: var <*>: expr + -- bDecl (VarDecl str expr) = VarDecl <$> pVar p var <*> pExpr p expr + bDecl (FunDecl var vars decls) = FunDecl <$>: var <*> traverse (pVar p) vars <*> traverse (pDecl p) decls + bDecl (Return expr) = Return <$>: expr + -- bDecl (Return expr) = Return <$> pExpr p expr +</pre><pre> bExpr (Ref str) = Ref <$> pure str + bExpr (Number int) = Number <$> pure int + bExpr (Add expr expr') = Add <$>: expr <*>: expr' + -- bExpr (Add expr expr') = Add <$> pExpr p expr <*> pExpr p expr' + bExpr (Mul expr expr') = Mul <$>: expr <*>: expr' + -- bExpr (Mul expr expr') = Mul <$> pExpr p expr <*> pExpr p expr' +</pre><pre> bVar (Var str) = Var <$> pure str +</pre><p>[*] However, tuples for example are not <code>Traversable</code> (since they don't have the appropriate kind) +so instead of <code>traverse</code> one can use a function like this: +</p><pre>traverseTuple fa fb (a, b) = (,) <$> fa a <*> fb b + +bConstr (Constr a b) = Constr <$> traverseTuple (pTypeOfA p) (pTypeOfB p) (a, b) +</pre><p>OR +simply add tuples for the plate definition, just like <code>Expr</code> or <code>Decl</code>. +This also can be done for <code>List, Maybe</code>, etc., and then the <code>traverse</code> functions can be replaced with <code><$>:</code>, <code><*>:</code>, +and generic functions defined in this module can be used for these too. +</p><p>---------------------------------------- +</p><p>4. Using multiplate +</p><p>In a given program: +</p><pre>var a = 1; +function func(arg1, arg2){ + return a + arg1 +} +</pre><p>and its representation: +</p><pre>prog :: Prog () +prog = Prog () [VarDecl (Var "a") (Number 1) + ,FunDecl (Var "func") [(Var "arg1"), (Var "arg2")] + [Return (Add (Ref "a") (Ref "arg1"))]] +</pre><p>to get the list of variables one has to define a plate by +updating another plate containing defaults for all types (<code>purePlate</code>) by +modifying the field that correpsondes to <code>Var</code> data type. +Then create another plate where the order of traversal is set (<code>preorderFold</code>), +and finally call <code><a href="Data-Generics-Multiplate-Simplified.html#v:gfoldFor">gfoldFor</a></code> with the plate we defined, and then with the actual data type. +Without this module instead of <code><a href="Data-Generics-Multiplate-Simplified.html#v:gfoldFor">gfoldFor</a></code> one can only use <code>foldFor</code>, +which requires an extra argument (a projector), which corresponds to the root datatype: +in this case it's <code>pProg</code> because our program has a <code>Prog</code> data type. +But <code><a href="Data-Generics-Multiplate-Simplified.html#v:gfoldFor">gfoldFor</a></code>, <code><a href="Data-Generics-Multiplate-Simplified.html#v:gtraverseFor">gtraverseFor</a></code>, etc. can be used with any data type, +because in the <code><a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a></code> instances we already defined what it's projector is. +</p><pre> +variablesPlate :: Plate (Constant [String]) +variablesPlate = preorderFold purePlate { pVar = ((Var str) -> Constant [str]) } + +vars :: (IsProjector Plate a) => a -> [String] +vars x = gfoldFor variablesPlate x + +vars' :: Prog a -> [String] +vars' x = foldFor pProg variablesPlate x +</pre><pre>> vars prog +["a","func","arg1","arg2"] +</pre><p>---------------------------------------- +</p><p>All of this code is included in the source at the end of this file for easier copying. +</p><p>Multiplate documentation: <a href="http://hackage.haskell.org/package/multiplate">http://hackage.haskell.org/package/multiplate</a> +</p></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> Multiplate p => <a name="t:IsProjector" class="def">IsProjector</a> p a <span class="keyword">where</span></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:getProjector" class="def">getProjector</a> :: p appl -> a -> Projector p a</p></div></div><div class="top"><p class="src"><a name="v:gtraverseFor" class="def">gtraverseFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p Identity -> a -> a</p></div><div class="top"><p class="src"><a name="v:gtraverseMFor" class="def">gtraverseMFor</a> :: (<a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a, <a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> m) => p m -> a -> m a</p></div><div class="top"><p class="src"><a name="v:gfoldFor" class="def">gfoldFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p (Constant o) -> a -> o</p></div><div class="top"><p class="src"><a name="v:gunwrapFor" class="def">gunwrapFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => (o -> b) -> p (Constant o) -> a -> b</p></div><div class="top"><p class="src"><a name="v:gsumFor" class="def">gsumFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p (Constant (<a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Monoid.html#t:Sum">Sum</a> n)) -> a -> n</p></div><div class="top"><p class="src"><a name="v:gproductFor" class="def">gproductFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p (Constant (<a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Monoid.html#t:Product">Product</a> n)) -> a -> n</p></div><div class="top"><p class="src"><a name="v:gallFor" class="def">gallFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p (Constant <a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Monoid.html#t:All">All</a>) -> a -> <a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:ganyFor" class="def">ganyFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p (Constant <a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Monoid.html#t:Any">Any</a>) -> a -> <a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:gfirstFor" class="def">gfirstFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p (Constant (<a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Monoid.html#t:First">First</a> b)) -> a -> <a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b</p></div><div class="top"><p class="src"><a name="v:glastFor" class="def">glastFor</a> :: <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">IsProjector</a> p a => p (Constant (<a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Monoid.html#t:Last">Last</a> b)) -> a -> <a href="C:\Program Files\Haskell Platform\2011.2.0.0\lib/../doc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> b</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>
@@ -0,0 +1,4 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>multiplate-simplified-0.0.0.1: Shorter, more generic functions for Multiplate. (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ +window.onload = function () {pageLoad();}; +//]]> +</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">multiplate-simplified-0.0.0.1: Shorter, more generic functions for Multiplate.</p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">gallFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gallFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">ganyFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:ganyFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">getProjector</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:getProjector">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">gfirstFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gfirstFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">gfoldFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gfoldFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">glastFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:glastFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">gproductFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gproductFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">gsumFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gsumFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">gtraverseFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gtraverseFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">gtraverseMFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gtraverseMFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">gunwrapFor</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#v:gunwrapFor">Data.Generics.Multiplate.Simplified</a></td></tr><tr><td class="src">IsProjector</td><td class="module"><a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector">Data.Generics.Multiplate.Simplified</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>
@@ -0,0 +1,28 @@+<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">+<head>+<script src="haddock-util.js" type="text/javascript"></script>+<script type="text/javascript"><!--+/*++ The synopsis frame needs to be updated using javascript, so we hide+ it by default and only show it if javascript is enabled.++ TODO: provide some means to disable it.+*/+function load() {+ var d = document.getElementById("inner-fs");+ d.rows = "50%,50%";+ postReframe();+}+--></script>+<frameset id="outer-fs" cols="25%,75%" onload="load()">+ <frameset id="inner-fs" rows="100%,0%">+ <frame src="index-frames.html" name="modules">+ <frame src="" name="synopsis">+ </frameset>+ <frame src="index.html" name="main">+</frameset>+</html>
@@ -0,0 +1,311 @@+// Haddock JavaScript utilities++var rspace = /\s\s+/g,+ rtrim = /^\s+|\s+$/g;++function spaced(s) { return (" " + s + " ").replace(rspace, " "); }+function trim(s) { return s.replace(rtrim, ""); }++function hasClass(elem, value) {+ var className = spaced(elem.className || "");+ return className.indexOf( " " + value + " " ) >= 0;+}++function addClass(elem, value) {+ var className = spaced(elem.className || "");+ if ( className.indexOf( " " + value + " " ) < 0 ) {+ elem.className = trim(className + " " + value);+ }+}++function removeClass(elem, value) {+ var className = spaced(elem.className || "");+ className = className.replace(" " + value + " ", " ");+ elem.className = trim(className);+}++function toggleClass(elem, valueOn, valueOff, bool) {+ if (bool == null) { bool = ! hasClass(elem, valueOn); }+ if (bool) {+ removeClass(elem, valueOff);+ addClass(elem, valueOn);+ }+ else {+ removeClass(elem, valueOn);+ addClass(elem, valueOff);+ }+ return bool;+}+++function makeClassToggle(valueOn, valueOff)+{+ return function(elem, bool) {+ return toggleClass(elem, valueOn, valueOff, bool);+ }+}++toggleShow = makeClassToggle("show", "hide");+toggleCollapser = makeClassToggle("collapser", "expander");++function toggleSection(id)+{+ var b = toggleShow(document.getElementById("section." + id))+ toggleCollapser(document.getElementById("control." + id), b)+ return b;+}+++function setCookie(name, value) {+ document.cookie = name + "=" + escape(value) + ";path=/;";+}++function clearCookie(name) {+ document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";+}++function getCookie(name) {+ var nameEQ = name + "=";+ var ca = document.cookie.split(';');+ for(var i=0;i < ca.length;i++) {+ var c = ca[i];+ while (c.charAt(0)==' ') c = c.substring(1,c.length);+ if (c.indexOf(nameEQ) == 0) {+ return unescape(c.substring(nameEQ.length,c.length));+ }+ }+ return null;+}++++var max_results = 75; // 50 is not enough to search for map in the base libraries+var shown_range = null;+var last_search = null;++function quick_search()+{+ perform_search(false);+}++function full_search()+{+ perform_search(true);+}+++function perform_search(full)+{+ var text = document.getElementById("searchbox").value.toLowerCase();+ if (text == last_search && !full) return;+ last_search = text;+ + var table = document.getElementById("indexlist");+ var status = document.getElementById("searchmsg");+ var children = table.firstChild.childNodes;+ + // first figure out the first node with the prefix+ var first = bisect(-1);+ var last = (first == -1 ? -1 : bisect(1));++ if (first == -1)+ {+ table.className = "";+ status.innerHTML = "No results found, displaying all";+ }+ else if (first == 0 && last == children.length - 1)+ {+ table.className = "";+ status.innerHTML = "";+ }+ else if (last - first >= max_results && !full)+ {+ table.className = "";+ status.innerHTML = "More than " + max_results + ", press Search to display";+ }+ else+ {+ // decide what you need to clear/show+ if (shown_range)+ setclass(shown_range[0], shown_range[1], "indexrow");+ setclass(first, last, "indexshow");+ shown_range = [first, last];+ table.className = "indexsearch";+ status.innerHTML = "";+ }++ + function setclass(first, last, status)+ {+ for (var i = first; i <= last; i++)+ {+ children[i].className = status;+ }+ }+ + + // do a binary search, treating 0 as ...+ // return either -1 (no 0's found) or location of most far match+ function bisect(dir)+ {+ var first = 0, finish = children.length - 1;+ var mid, success = false;++ while (finish - first > 3)+ {+ mid = Math.floor((finish + first) / 2);++ var i = checkitem(mid);+ if (i == 0) i = dir;+ if (i == -1)+ finish = mid;+ else+ first = mid;+ }+ var a = (dir == 1 ? first : finish);+ var b = (dir == 1 ? finish : first);+ for (var i = b; i != a - dir; i -= dir)+ {+ if (checkitem(i) == 0) return i;+ }+ return -1;+ } + + + // from an index, decide what the result is+ // 0 = match, -1 is lower, 1 is higher+ function checkitem(i)+ {+ var s = getitem(i).toLowerCase().substr(0, text.length);+ if (s == text) return 0;+ else return (s > text ? -1 : 1);+ }+ + + // from an index, get its string+ // this abstracts over alternates+ function getitem(i)+ {+ for ( ; i >= 0; i--)+ {+ var s = children[i].firstChild.firstChild.data;+ if (s.indexOf(' ') == -1)+ return s;+ }+ return ""; // should never be reached+ }+}++function setSynopsis(filename) {+ if (parent.window.synopsis) {+ if (parent.window.synopsis.location.replace) {+ // In Firefox this avoids adding the change to the history.+ parent.window.synopsis.location.replace(filename);+ } else {+ parent.window.synopsis.location = filename;+ }+ }+}++function addMenuItem(html) {+ var menu = document.getElementById("page-menu");+ if (menu) {+ var btn = menu.firstChild.cloneNode(false);+ btn.innerHTML = html;+ menu.appendChild(btn);+ }+}++function adjustForFrames() {+ var bodyCls;+ + if (parent.location.href == window.location.href) {+ // not in frames, so add Frames button+ addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");+ bodyCls = "no-frame";+ }+ else {+ bodyCls = "in-frame";+ }+ addClass(document.body, bodyCls);+}++function reframe() {+ setCookie("haddock-reframe", document.URL);+ window.location = "frames.html";+}++function postReframe() {+ var s = getCookie("haddock-reframe");+ if (s) {+ parent.window.main.location = s;+ clearCookie("haddock-reframe");+ }+}++function styles() {+ var i, a, es = document.getElementsByTagName("link"), rs = [];+ for (i = 0; a = es[i]; i++) {+ if(a.rel.indexOf("style") != -1 && a.title) {+ rs.push(a);+ }+ }+ return rs;+}++function addStyleMenu() {+ var as = styles();+ var i, a, btns = "";+ for(i=0; a = as[i]; i++) {+ btns += "<li><a href='#' onclick=\"setActiveStyleSheet('"+ + a.title + "'); return false;\">"+ + a.title + "</a></li>"+ }+ if (as.length > 1) {+ var h = "<div id='style-menu-holder'>"+ + "<a href='#' onclick='styleMenu(); return false;'>Style ▾</a>"+ + "<ul id='style-menu' class='hide'>" + btns + "</ul>"+ + "</div>";+ addMenuItem(h);+ }+}++function setActiveStyleSheet(title) {+ var as = styles();+ var i, a, found;+ for(i=0; a = as[i]; i++) {+ a.disabled = true;+ // need to do this always, some browsers are edge triggered+ if(a.title == title) {+ found = a;+ }+ }+ if (found) {+ found.disabled = false;+ setCookie("haddock-style", title);+ }+ else {+ as[0].disabled = false;+ clearCookie("haddock-style");+ }+ styleMenu(false);+}++function resetStyle() {+ var s = getCookie("haddock-style");+ if (s) setActiveStyleSheet(s);+}+++function styleMenu(show) {+ var m = document.getElementById('style-menu');+ if (m) toggleShow(m, show);+}+++function pageLoad() {+ addStyleMenu();+ adjustForFrames();+ resetStyle();+}+
@@ -0,0 +1,297 @@+/* -------- Global things --------- */++BODY { + background-color: #ffffff;+ color: #000000;+ font-family: sans-serif;+ padding: 0 0;+ } ++A:link { color: #0000e0; text-decoration: none }+A:visited { color: #0000a0; text-decoration: none }+A:hover { background-color: #e0e0ff; text-decoration: none }++TABLE.vanilla {+ width: 100%;+ border-width: 0px;+ /* I can't seem to specify cellspacing or cellpadding properly using CSS... */+}++TABLE.vanilla2 {+ border-width: 0px;+}++/* <TT> font is a little too small in MSIE */+TT { font-size: 100%; }+PRE { font-size: 100%; }++LI P { margin: 0pt } ++TD {+ border-width: 0px;+}++TABLE.narrow {+ border-width: 0px;+}++TD.s8 { height: 8px; }+TD.s15 { height: 15px; }++SPAN.keyword { text-decoration: underline; }++/* Resize the buttom image to match the text size */+IMG.coll { width : 0.75em; height: 0.75em; margin-bottom: 0; margin-right: 0.5em }++/* --------- Contents page ---------- */++DIV.node {+ padding-left: 3em;+}++DIV.cnode {+ padding-left: 1.75em;+}++SPAN.pkg {+ position: absolute;+ left: 50em;+}++/* --------- Documentation elements ---------- */++TD.children {+ padding-left: 25px;+ }++TD.synopsis {+ padding: 2px;+ background-color: #f0f0f0;+ font-family: monospace+ }++TD.decl { + padding: 2px;+ background-color: #f0f0f0; + font-family: monospace;+ vertical-align: top;+ }++TD.topdecl {+ padding: 2px;+ background-color: #f0f0f0;+ font-family: monospace;+ vertical-align: top;+}++TABLE.declbar {+ border-spacing: 0px;+ }++TD.declname {+ width: 100%;+ }++TD.declbut {+ padding-left: 5px;+ padding-right: 5px;+ border-left-width: 1px;+ border-left-color: #000099;+ border-left-style: solid;+ white-space: nowrap;+ font-size: small;+ }++/* + arg is just like decl, except that wrapping is not allowed. It is+ used for function and constructor arguments which have a text box+ to the right, where if wrapping is allowed the text box squashes up+ the declaration by wrapping it.+*/+TD.arg { + padding: 2px;+ background-color: #f0f0f0; + font-family: monospace;+ vertical-align: top;+ white-space: nowrap;+ }++TD.recfield { padding-left: 20px }++TD.doc { + padding-top: 2px;+ padding-left: 10px;+ }++TD.ndoc { + padding: 2px;+ }++TD.rdoc { + padding: 2px;+ padding-left: 10px;+ width: 100%;+ }++TD.body { + padding-left: 10px+ }++TD.pkg {+ width: 100%;+ padding-left: 10px+}++TABLE.indexsearch TR.indexrow {+ display: none;+}+TABLE.indexsearch TR.indexshow {+ display: table-row;+}++TD.indexentry {+ vertical-align: top;+ padding-right: 10px+ }++TD.indexannot {+ vertical-align: top;+ padding-left: 20px;+ white-space: nowrap+ }++TD.indexlinks {+ width: 100%+ }++/* ------- Section Headings ------- */++TD.section1 {+ padding-top: 15px;+ font-weight: bold;+ font-size: 150%+ }++TD.section2 {+ padding-top: 10px;+ font-weight: bold;+ font-size: 130%+ }++TD.section3 {+ padding-top: 5px;+ font-weight: bold;+ font-size: 110%+ }++TD.section4 {+ font-weight: bold;+ font-size: 100%+ }++/* -------------- The title bar at the top of the page */++TD.infohead {+ color: #ffffff;+ font-weight: bold;+ padding-right: 10px;+ text-align: left;+}++TD.infoval {+ color: #ffffff;+ padding-right: 10px;+ text-align: left;+}++TD.topbar {+ background-color: #000099;+ padding: 5px;+}++TD.title {+ color: #ffffff;+ padding-left: 10px;+ width: 100%+ }++TD.topbut {+ padding-left: 5px;+ padding-right: 5px;+ border-left-width: 1px;+ border-left-color: #ffffff;+ border-left-style: solid;+ white-space: nowrap;+ }++TD.topbut A:link {+ color: #ffffff+ }++TD.topbut A:visited {+ color: #ffff00+ }++TD.topbut A:hover {+ background-color: #6060ff;+ }++TD.topbut:hover {+ background-color: #6060ff+ }++TD.modulebar { + background-color: #0077dd;+ padding: 5px;+ border-top-width: 1px;+ border-top-color: #ffffff;+ border-top-style: solid;+ }++/* --------- The page footer --------- */++TD.botbar {+ background-color: #000099;+ color: #ffffff;+ padding: 5px+ }+TD.botbar A:link {+ color: #ffffff;+ text-decoration: underline+ }+TD.botbar A:visited {+ color: #ffff00+ }+TD.botbar A:hover {+ background-color: #6060ff+ }++/* --------- Mini Synopsis for Frame View --------- */++.outer {+ margin: 0 0;+ padding: 0 0;+}++.mini-synopsis {+ padding: 0.25em 0.25em;+}++.mini-synopsis H1 { font-size: 130%; }+.mini-synopsis H2 { font-size: 110%; }+.mini-synopsis H3 { font-size: 100%; }+.mini-synopsis H1, .mini-synopsis H2, .mini-synopsis H3 {+ margin-top: 0.5em;+ margin-bottom: 0.25em;+ padding: 0 0;+}++.mini-synopsis H1 { border-bottom: 1px solid #ccc; }++.mini-topbar {+ font-size: 130%;+ background: #0077dd;+ padding: 0.25em;+}++
binary file changed (absent → 911 bytes)
binary file changed (absent → 1684 bytes)
@@ -0,0 +1,4 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>multiplate-simplified-0.0.0.1: Shorter, more generic functions for Multiplate.</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ +window.onload = function () {pageLoad();}; +//]]> +</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="Data-Generics-Multiplate-Simplified.html" target="main">Data.Generics.Multiplate.Simplified</a></li></ul></div></body></html>
@@ -0,0 +1,8 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>multiplate-simplified-0.0.0.1: Shorter, more generic functions for Multiplate.</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ +window.onload = function () {pageLoad();}; +//]]> +</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">multiplate-simplified-0.0.0.1: Shorter, more generic functions for Multiplate.</p></div><div id="content"><div id="description" class="doc"><h1>multiplate-simplified-0.0.0.1: Shorter, more generic functions for Multiplate.</h1><p>This module provides wrappers around some Multiplate functions to spare +the Projector argument. This makes it simpler to use them, and +they will work for any data type, but a simple instance definition +has to be supplied for each one. +</p></div><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">Data</span><ul id="section.n.1" class="show"><li><span id="control.n.1.1" class="module collapser" onclick="toggleSection('n.1.1')">Generics</span><ul id="section.n.1.1" class="show"><li><span id="control.n.1.1.1" class="module collapser" onclick="toggleSection('n.1.1.1')">Multiplate</span><ul id="section.n.1.1.1" class="show"><li><span class="module"><a href="Data-Generics-Multiplate-Simplified.html">Data.Generics.Multiplate.Simplified</a></span></li></ul></li></ul></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>
@@ -0,0 +1,4 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Data.Generics.Multiplate.Simplified</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ +window.onload = function () {pageLoad();}; +//]]> +</script></head><body id="mini"><div id="module-header"><p class="caption">Data.Generics.Multiplate.Simplified</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">class</span> <a href="Data-Generics-Multiplate-Simplified.html#t:IsProjector" target="main">IsProjector</a> p a</p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gtraverseFor" target="main">gtraverseFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gtraverseMFor" target="main">gtraverseMFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gfoldFor" target="main">gfoldFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gunwrapFor" target="main">gunwrapFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gsumFor" target="main">gsumFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gproductFor" target="main">gproductFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gallFor" target="main">gallFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:ganyFor" target="main">ganyFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:gfirstFor" target="main">gfirstFor</a></p></div><div class="top"><p class="src"><a href="Data-Generics-Multiplate-Simplified.html#v:glastFor" target="main">glastFor</a></p></div></div></body></html>
binary file changed (absent → 56 bytes)
binary file changed (absent → 872 bytes)
@@ -0,0 +1,542 @@+/* @group Fundamentals */++* { margin: 0; padding: 0 }++/* Is this portable? */+html {+ background-color: white;+ width: 100%;+ height: 100%;+}++body {+ background: white;+ color: black;+ text-align: left;+ min-height: 100%;+ position: relative;+}++p {+ margin: 0.8em 0;+}++ul, ol {+ margin: 0.8em 0 0.8em 2em;+}++dl {+ margin: 0.8em 0;+}++dt {+ font-weight: bold;+}+dd {+ margin-left: 2em;+}++a { text-decoration: none; }+a[href]:link { color: rgb(196,69,29); }+a[href]:visited { color: rgb(171,105,84); }+a[href]:hover { text-decoration:underline; }++/* @end */++/* @group Fonts & Sizes */++/* Basic technique & IE workarounds from YUI 3+ For reasons, see:+ http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css+ */+ +body {+ font:13px/1.4 sans-serif;+ *font-size:small; /* for IE */+ *font:x-small; /* for IE in quirks mode */+}++h1 { font-size: 146.5%; /* 19pt */ } +h2 { font-size: 131%; /* 17pt */ }+h3 { font-size: 116%; /* 15pt */ }+h4 { font-size: 100%; /* 13pt */ }+h5 { font-size: 100%; /* 13pt */ }++select, input, button, textarea {+ font:99% sans-serif;+}++table {+ font-size:inherit;+ font:100%;+}++pre, code, kbd, samp, tt, .src {+ font-family:monospace;+ *font-size:108%;+ line-height: 124%;+}++.links, .link {+ font-size: 85%; /* 11pt */+}++#module-header .caption {+ font-size: 182%; /* 24pt */+}++.info {+ font-size: 85%; /* 11pt */+}++#table-of-contents, #synopsis {+ /* font-size: 85%; /* 11pt */+}+++/* @end */++/* @group Common */++.caption, h1, h2, h3, h4, h5, h6 { + font-weight: bold;+ color: rgb(78,98,114);+ margin: 0.8em 0 0.4em;+}++* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {+ margin-top: 2em;+}++h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {+ margin-top: inherit;+}++ul.links {+ list-style: none;+ text-align: left;+ float: right;+ display: inline-table;+ margin: 0 0 0 1em;+}++ul.links li {+ display: inline;+ border-left: 1px solid #d5d5d5; + white-space: nowrap;+ padding: 0;+}++ul.links li a {+ padding: 0.2em 0.5em;+}++.hide { display: none; }+.show { display: inherit; }+.clear { clear: both; }++.collapser {+ background-image: url(minus.gif);+ background-repeat: no-repeat;+}+.expander {+ background-image: url(plus.gif);+ background-repeat: no-repeat;+}+p.caption.collapser,+p.caption.expander {+ background-position: 0 0.4em;+}+.collapser, .expander {+ padding-left: 14px;+ margin-left: -14px;+ cursor: pointer;+}++pre {+ padding: 0.25em;+ margin: 0.8em 0;+ background: rgb(229,237,244);+ overflow: auto;+ border-bottom: 0.25em solid white;+ /* white border adds some space below the box to compensate+ for visual extra space that paragraphs have between baseline+ and the bounding box */+}++.src {+ background: #f0f0f0;+ padding: 0.2em 0.5em;+}++.keyword { font-weight: normal; }+.def { font-weight: bold; }+++/* @end */++/* @group Page Structure */++#content {+ margin: 0 auto;+ padding: 0 2em 6em;+}++#package-header {+ background: rgb(41,56,69);+ border-top: 5px solid rgb(78,98,114);+ color: #ddd;+ padding: 0.2em;+ position: relative;+ text-align: left;+}++#package-header .caption {+ background: url(hslogo-16.png) no-repeat 0em;+ color: white;+ margin: 0 2em;+ font-weight: normal;+ font-style: normal;+ padding-left: 2em;+}++#package-header a:link, #package-header a:visited { color: white; }+#package-header a:hover { background: rgb(78,98,114); }++#module-header .caption {+ color: rgb(78,98,114);+ font-weight: bold;+ border-bottom: 1px solid #ddd;+}++table.info {+ float: right;+ padding: 0.5em 1em;+ border: 1px solid #ddd;+ color: rgb(78,98,114);+ background-color: #fff;+ max-width: 40%;+ border-spacing: 0;+ position: relative;+ top: -0.5em;+ margin: 0 0 0 2em;+}++.info th {+ padding: 0 1em 0 0;+}++div#style-menu-holder {+ position: relative;+ z-index: 2;+ display: inline;+}++#style-menu {+ position: absolute;+ z-index: 1;+ overflow: visible;+ background: #374c5e;+ margin: 0;+ text-align: center;+ right: 0;+ padding: 0;+ top: 1.25em;+}++#style-menu li {+ display: list-item;+ border-style: none;+ margin: 0;+ padding: 0;+ color: #000;+ list-style-type: none;+}++#style-menu li + li {+ border-top: 1px solid #919191;+}++#style-menu a {+ width: 6em;+ padding: 3px;+ display: block;+}++#footer {+ background: #ddd;+ border-top: 1px solid #aaa;+ padding: 0.5em 0;+ color: #666;+ text-align: center;+ position: absolute;+ bottom: 0;+ width: 100%;+ height: 3em;+}++/* @end */++/* @group Front Matter */++#table-of-contents {+ float: right;+ clear: right;+ background: #faf9dc;+ border: 1px solid #d8d7ad;+ padding: 0.5em 1em;+ max-width: 20em;+ margin: 0.5em 0 1em 1em;+}++#table-of-contents .caption {+ text-align: center;+ margin: 0;+}++#table-of-contents ul {+ list-style: none;+ margin: 0;+}++#table-of-contents ul ul {+ margin-left: 2em;+}++#description .caption {+ display: none;+}++#synopsis {+ display: none;+}++.no-frame #synopsis {+ display: block;+ position: fixed;+ right: 0;+ height: 80%;+ top: 10%;+ padding: 0;+}++#synopsis .caption {+ float: left;+ width: 29px;+ color: rgba(255,255,255,0);+ height: 110px;+ margin: 0;+ font-size: 1px;+ padding: 0;+}++#synopsis p.caption.collapser {+ background: url(synopsis.png) no-repeat -64px -8px;+}++#synopsis p.caption.expander {+ background: url(synopsis.png) no-repeat 0px -8px;+}++#synopsis ul {+ height: 100%;+ overflow: auto;+ padding: 0.5em;+ margin: 0;+}++#synopsis ul ul {+ overflow: hidden;+}++#synopsis ul,+#synopsis ul li.src {+ background-color: #faf9dc;+ white-space: nowrap;+ list-style: none;+ margin-left: 0;+}++/* @end */++/* @group Main Content */++#interface div.top { margin: 2em 0; }+#interface h1 + div.top,+#interface h2 + div.top,+#interface h3 + div.top,+#interface h4 + div.top,+#interface h5 + div.top {+ margin-top: 1em;+}+#interface p.src .link {+ float: right;+ color: #919191;+ border-left: 1px solid #919191;+ background: #f0f0f0;+ padding: 0 0.5em 0.2em;+ margin: 0 -0.5em 0 0.5em;+}++#interface table { border-spacing: 2px; }+#interface td {+ vertical-align: top;+ padding-left: 0.5em;+}+#interface td.src {+ white-space: nowrap;+}+#interface td.doc p {+ margin: 0;+}+#interface td.doc p + p {+ margin-top: 0.8em;+}++.subs dl {+ margin: 0;+}++.subs dt {+ float: left;+ clear: left;+ display: block;+ margin: 1px 0;+}++.subs dd {+ float: right;+ width: 90%;+ display: block;+ padding-left: 0.5em;+ margin-bottom: 0.5em;+}++.subs dd.empty {+ display: none;+}++.subs dd p {+ margin: 0;+}++.top p.src {+ border-top: 1px solid #ccc;+}++.subs, .doc {+ /* use this selector for one level of indent */+ padding-left: 2em;+}++.arguments {+ margin-top: -0.4em;+}+.arguments .caption {+ display: none;+}++.fields { padding-left: 1em; }++.fields .caption { display: none; }++.fields p { margin: 0 0; }++/* this seems bulky to me+.methods, .constructors {+ background: #f8f8f8;+ border: 1px solid #eee;+}+*/++/* @end */++/* @group Auxillary Pages */++#mini {+ margin: 0 auto;+ padding: 0 1em 1em;+}++#mini > * {+ font-size: 93%; /* 12pt */ +}++#mini #module-list .caption,+#mini #module-header .caption {+ font-size: 125%; /* 15pt */+}++#mini #interface h1,+#mini #interface h2,+#mini #interface h3,+#mini #interface h4 {+ font-size: 109%; /* 13pt */+ margin: 1em 0 0;+}++#mini #interface .top,+#mini #interface .src {+ margin: 0;+}++#mini #module-list ul {+ list-style: none;+ margin: 0;+}++#alphabet ul {+ list-style: none;+ padding: 0;+ margin: 0.5em 0 0;+ text-align: center;+}++#alphabet li {+ display: inline;+ margin: 0 0.25em;+}++#alphabet a {+ font-weight: bold;+}++#index .caption,+#module-list .caption { font-size: 131%; /* 17pt */ }++#index table {+ margin-left: 2em;+}++#index .src {+ font-weight: bold;+}+#index .alt {+ font-size: 77%; /* 10pt */+ font-style: italic;+ padding-left: 2em;+}++#index td + td {+ padding-left: 1em;+}++#module-list ul {+ list-style: none;+ margin: 0 0 0 2em;+}++#module-list li {+ clear: right;+}++#module-list span.collapser,+#module-list span.expander {+ background-position: 0 0.3em;+}++#module-list .package {+ float: right;+}++/* @end */
binary file changed (absent → 59 bytes)
binary file changed (absent → 11327 bytes)
@@ -0,0 +1,2 @@+[InstalledPackageInfo {installedPackageId = InstalledPackageId "multiplate-simplified-0.0.0.1-inplace", sourcePackageId = PackageIdentifier {pkgName = PackageName "multiplate-simplified", pkgVersion = Version {versionBranch = [0,0,0,1], versionTags = []}}, license = MIT, copyright = "2011, Balazs Endresz", maintainer = "Balazs Endresz <balazs.endresz@gmail.com>", author = "Balazs Endresz", stability = "", homepage = "", pkgUrl = "", description = "This module provides wrappers around some Multiplate functions to spare\nthe Projector argument. This makes it simpler to use them, and\nthey will work for any data type, but a simple instance definition\nhas to be supplied for each one.", category = "Generics", exposed = True, exposedModules = ["Data.Generics.Multiplate.Simplified"], hiddenModules = [], importDirs = ["c:\\projects\\jshaskell\\trunk\\multiplate-simplified-0.0.0.1\\dist\\build"], libraryDirs = ["c:\\projects\\jshaskell\\trunk\\multiplate-simplified-0.0.0.1\\dist\\build"], hsLibraries = ["HSmultiplate-simplified-0.0.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b",InstalledPackageId "multiplate-0.0.1.1-b9a01799d58daace698402a46b099d0b",InstalledPackageId "transformers-0.2.2.0-2fe7b735c63a6cbe8724038d8e4d812a"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["c:\\projects\\jshaskell\\trunk\\multiplate-simplified-0.0.0.1\\dist\\doc\\html\\multiplate-simplified\\multiplate-simplified.haddock"], haddockHTMLs = ["c:\\projects\\jshaskell\\trunk\\multiplate-simplified-0.0.0.1\\dist\\doc\\html\\multiplate-simplified"]} +]
@@ -0,0 +1,2 @@+Saved package config for multiplate-simplified-0.0.0.1 written by Cabal-1.10.1.0 using ghc-7.0+LocalBuildInfo {configFlags = ConfigFlags {configPrograms = [], configProgramPaths = [], configProgramArgs = [], configHcFlavor = Flag GHC, configHcPath = NoFlag, configHcPkg = NoFlag, configVanillaLib = Flag True, configProfLib = Flag False, configSharedLib = Flag False, configProfExe = Flag False, configConfigureArgs = [], configOptimization = Flag NormalOptimisation, configProgPrefix = Flag "", configProgSuffix = Flag "", configInstallDirs = InstallDirs {prefix = Flag "C:\\Users\\EB\\AppData\\Roaming\\cabal", bindir = NoFlag, libdir = NoFlag, libsubdir = NoFlag, dynlibdir = NoFlag, libexecdir = NoFlag, progdir = NoFlag, includedir = NoFlag, datadir = NoFlag, datasubdir = NoFlag, docdir = NoFlag, mandir = NoFlag, htmldir = NoFlag, haddockdir = NoFlag}, configScratchDir = NoFlag, configExtraLibDirs = [], configExtraIncludeDirs = [], configDistPref = Flag "dist", configVerbosity = Flag Normal, configUserInstall = Flag True, configPackageDB = NoFlag, configGHCiLib = Flag True, configSplitObjs = Flag False, configStripExes = Flag True, configConstraints = [Dependency (PackageName "base") (ThisVersion (Version {versionBranch = [4,3,1,0], versionTags = []})),Dependency (PackageName "multiplate") (ThisVersion (Version {versionBranch = [0,0,1,1], versionTags = []})),Dependency (PackageName "transformers") (ThisVersion (Version {versionBranch = [0,2,2,0], versionTags = []}))], configConfigurationsFlags = [], configTests = Flag False}, extraConfigArgs = [], installDirTemplates = InstallDirs {prefix = "C:\\Users\\EB\\AppData\\Roaming\\cabal", bindir = "$prefix\\bin", libdir = "$prefix", libsubdir = "$pkgid\\$compiler", dynlibdir = "$libdir", libexecdir = "$prefix\\$pkgid", progdir = "$libdir\\hugs\\programs", includedir = "$libdir\\$libsubdir\\include", datadir = "$prefix", datasubdir = "$pkgid", docdir = "$datadir\\doc\\$pkgid", mandir = "$datadir\\man", htmldir = "$docdir\\html", haddockdir = "$htmldir"}, compiler = Compiler {compilerId = CompilerId GHC (Version {versionBranch = [7,0,2], versionTags = []}), compilerLanguages = [(Haskell98,"-XHaskell98"),(Haskell2010,"-XHaskell2010")], compilerExtensions = [(UnknownExtension "Haskell98","-XHaskell98"),(UnknownExtension "Haskell2010","-XHaskell2010"),(CPP,"-XCPP"),(UnknownExtension "NoCPP","-XNoCPP"),(PostfixOperators,"-XPostfixOperators"),(UnknownExtension "NoPostfixOperators","-XNoPostfixOperators"),(TupleSections,"-XTupleSections"),(UnknownExtension "NoTupleSections","-XNoTupleSections"),(PatternGuards,"-XPatternGuards"),(UnknownExtension "NoPatternGuards","-XNoPatternGuards"),(UnicodeSyntax,"-XUnicodeSyntax"),(UnknownExtension "NoUnicodeSyntax","-XNoUnicodeSyntax"),(MagicHash,"-XMagicHash"),(UnknownExtension "NoMagicHash","-XNoMagicHash"),(PolymorphicComponents,"-XPolymorphicComponents"),(UnknownExtension "NoPolymorphicComponents","-XNoPolymorphicComponents"),(ExistentialQuantification,"-XExistentialQuantification"),(UnknownExtension "NoExistentialQuantification","-XNoExistentialQuantification"),(KindSignatures,"-XKindSignatures"),(UnknownExtension "NoKindSignatures","-XNoKindSignatures"),(EmptyDataDecls,"-XEmptyDataDecls"),(UnknownExtension "NoEmptyDataDecls","-XNoEmptyDataDecls"),(ParallelListComp,"-XParallelListComp"),(UnknownExtension "NoParallelListComp","-XNoParallelListComp"),(TransformListComp,"-XTransformListComp"),(UnknownExtension "NoTransformListComp","-XNoTransformListComp"),(ForeignFunctionInterface,"-XForeignFunctionInterface"),(UnknownExtension "NoForeignFunctionInterface","-XNoForeignFunctionInterface"),(UnliftedFFITypes,"-XUnliftedFFITypes"),(UnknownExtension "NoUnliftedFFITypes","-XNoUnliftedFFITypes"),(GHCForeignImportPrim,"-XGHCForeignImportPrim"),(UnknownExtension "NoGHCForeignImportPrim","-XNoGHCForeignImportPrim"),(LiberalTypeSynonyms,"-XLiberalTypeSynonyms"),(UnknownExtension "NoLiberalTypeSynonyms","-XNoLiberalTypeSynonyms"),(Rank2Types,"-XRank2Types"),(UnknownExtension "NoRank2Types","-XNoRank2Types"),(RankNTypes,"-XRankNTypes"),(UnknownExtension "NoRankNTypes","-XNoRankNTypes"),(ImpredicativeTypes,"-XImpredicativeTypes"),(UnknownExtension "NoImpredicativeTypes","-XNoImpredicativeTypes"),(TypeOperators,"-XTypeOperators"),(UnknownExtension "NoTypeOperators","-XNoTypeOperators"),(RecursiveDo,"-XRecursiveDo"),(UnknownExtension "NoRecursiveDo","-XNoRecursiveDo"),(DoRec,"-XDoRec"),(UnknownExtension "NoDoRec","-XNoDoRec"),(Arrows,"-XArrows"),(UnknownExtension "NoArrows","-XNoArrows"),(UnknownExtension "PArr","-XPArr"),(UnknownExtension "NoPArr","-XNoPArr"),(TemplateHaskell,"-XTemplateHaskell"),(UnknownExtension "NoTemplateHaskell","-XNoTemplateHaskell"),(QuasiQuotes,"-XQuasiQuotes"),(UnknownExtension "NoQuasiQuotes","-XNoQuasiQuotes"),(Generics,"-XGenerics"),(UnknownExtension "NoGenerics","-XNoGenerics"),(NoImplicitPrelude,"-XNoImplicitPrelude"),(NoImplicitPrelude,"-XNoImplicitPrelude"),(RecordWildCards,"-XRecordWildCards"),(UnknownExtension "NoRecordWildCards","-XNoRecordWildCards"),(NamedFieldPuns,"-XNamedFieldPuns"),(UnknownExtension "NoNamedFieldPuns","-XNoNamedFieldPuns"),(RecordPuns,"-XRecordPuns"),(UnknownExtension "NoRecordPuns","-XNoRecordPuns"),(DisambiguateRecordFields,"-XDisambiguateRecordFields"),(UnknownExtension "NoDisambiguateRecordFields","-XNoDisambiguateRecordFields"),(OverloadedStrings,"-XOverloadedStrings"),(UnknownExtension "NoOverloadedStrings","-XNoOverloadedStrings"),(GADTs,"-XGADTs"),(UnknownExtension "NoGADTs","-XNoGADTs"),(ViewPatterns,"-XViewPatterns"),(UnknownExtension "NoViewPatterns","-XNoViewPatterns"),(TypeFamilies,"-XTypeFamilies"),(UnknownExtension "NoTypeFamilies","-XNoTypeFamilies"),(BangPatterns,"-XBangPatterns"),(UnknownExtension "NoBangPatterns","-XNoBangPatterns"),(NoMonomorphismRestriction,"-XNoMonomorphismRestriction"),(NoMonomorphismRestriction,"-XNoMonomorphismRestriction"),(NPlusKPatterns,"-XNPlusKPatterns"),(UnknownExtension "NoNPlusKPatterns","-XNoNPlusKPatterns"),(DoAndIfThenElse,"-XDoAndIfThenElse"),(UnknownExtension "NoDoAndIfThenElse","-XNoDoAndIfThenElse"),(RebindableSyntax,"-XRebindableSyntax"),(UnknownExtension "NoRebindableSyntax","-XNoRebindableSyntax"),(NoMonoPatBinds,"-XNoMonoPatBinds"),(NoMonoPatBinds,"-XNoMonoPatBinds"),(ExplicitForAll,"-XExplicitForAll"),(UnknownExtension "NoExplicitForAll","-XNoExplicitForAll"),(UnknownExtension "AlternativeLayoutRule","-XAlternativeLayoutRule"),(UnknownExtension "NoAlternativeLayoutRule","-XNoAlternativeLayoutRule"),(UnknownExtension "AlternativeLayoutRuleTransitional","-XAlternativeLayoutRuleTransitional"),(UnknownExtension "NoAlternativeLayoutRuleTransitional","-XNoAlternativeLayoutRuleTransitional"),(DatatypeContexts,"-XDatatypeContexts"),(UnknownExtension "NoDatatypeContexts","-XNoDatatypeContexts"),(MonoLocalBinds,"-XMonoLocalBinds"),(UnknownExtension "NoMonoLocalBinds","-XNoMonoLocalBinds"),(RelaxedPolyRec,"-XRelaxedPolyRec"),(UnknownExtension "NoRelaxedPolyRec","-XNoRelaxedPolyRec"),(ExtendedDefaultRules,"-XExtendedDefaultRules"),(UnknownExtension "NoExtendedDefaultRules","-XNoExtendedDefaultRules"),(ImplicitParams,"-XImplicitParams"),(UnknownExtension "NoImplicitParams","-XNoImplicitParams"),(ScopedTypeVariables,"-XScopedTypeVariables"),(UnknownExtension "NoScopedTypeVariables","-XNoScopedTypeVariables"),(PatternSignatures,"-XPatternSignatures"),(UnknownExtension "NoPatternSignatures","-XNoPatternSignatures"),(UnboxedTuples,"-XUnboxedTuples"),(UnknownExtension "NoUnboxedTuples","-XNoUnboxedTuples"),(StandaloneDeriving,"-XStandaloneDeriving"),(UnknownExtension "NoStandaloneDeriving","-XNoStandaloneDeriving"),(DeriveDataTypeable,"-XDeriveDataTypeable"),(UnknownExtension "NoDeriveDataTypeable","-XNoDeriveDataTypeable"),(DeriveFunctor,"-XDeriveFunctor"),(UnknownExtension "NoDeriveFunctor","-XNoDeriveFunctor"),(DeriveTraversable,"-XDeriveTraversable"),(UnknownExtension "NoDeriveTraversable","-XNoDeriveTraversable"),(DeriveFoldable,"-XDeriveFoldable"),(UnknownExtension "NoDeriveFoldable","-XNoDeriveFoldable"),(TypeSynonymInstances,"-XTypeSynonymInstances"),(UnknownExtension "NoTypeSynonymInstances","-XNoTypeSynonymInstances"),(FlexibleContexts,"-XFlexibleContexts"),(UnknownExtension "NoFlexibleContexts","-XNoFlexibleContexts"),(FlexibleInstances,"-XFlexibleInstances"),(UnknownExtension "NoFlexibleInstances","-XNoFlexibleInstances"),(ConstrainedClassMethods,"-XConstrainedClassMethods"),(UnknownExtension "NoConstrainedClassMethods","-XNoConstrainedClassMethods"),(MultiParamTypeClasses,"-XMultiParamTypeClasses"),(UnknownExtension "NoMultiParamTypeClasses","-XNoMultiParamTypeClasses"),(FunctionalDependencies,"-XFunctionalDependencies"),(UnknownExtension "NoFunctionalDependencies","-XNoFunctionalDependencies"),(GeneralizedNewtypeDeriving,"-XGeneralizedNewtypeDeriving"),(UnknownExtension "NoGeneralizedNewtypeDeriving","-XNoGeneralizedNewtypeDeriving"),(OverlappingInstances,"-XOverlappingInstances"),(UnknownExtension "NoOverlappingInstances","-XNoOverlappingInstances"),(UndecidableInstances,"-XUndecidableInstances"),(UnknownExtension "NoUndecidableInstances","-XNoUndecidableInstances"),(IncoherentInstances,"-XIncoherentInstances"),(UnknownExtension "NoIncoherentInstances","-XNoIncoherentInstances"),(PackageImports,"-XPackageImports"),(UnknownExtension "NoPackageImports","-XNoPackageImports"),(NewQualifiedOperators,"-XNewQualifiedOperators"),(UnknownExtension "NoNewQualifiedOperators","-XNoNewQualifiedOperators")]}, buildDir = "dist\\build", scratchDir = "dist\\scratch", libraryConfig = Just (ComponentLocalBuildInfo {componentPackageDeps = [(InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b",PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,3,1,0], versionTags = []}}),(InstalledPackageId "multiplate-0.0.1.1-b9a01799d58daace698402a46b099d0b",PackageIdentifier {pkgName = PackageName "multiplate", pkgVersion = Version {versionBranch = [0,0,1,1], versionTags = []}}),(InstalledPackageId "transformers-0.2.2.0-2fe7b735c63a6cbe8724038d8e4d812a",PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,2,2,0], versionTags = []}})]}), executableConfigs = [], testSuiteConfigs = [], installedPkgs = PackageIndex (fromList [(InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b",InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,3,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","IO","Encoding","CodePage","Table"],ModuleName ["GHC","Conc","Windows"],ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Classes"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Float"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","MVar"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IORef"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","STRef"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","OldException"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\base-4.3.1.0"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\base-4.3.1.0"], hsLibraries = ["HSbase-4.3.1.0"], extraLibraries = ["wsock32","user32","shell32"], extraGHCiLibraries = [], includeDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\base-4.3.1.0\\include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-e1f7c380581d61d42b0360d440cc35ed",InstalledPackageId "integer-gmp-0.2.0.3-91607778cf3ae8f3948a50062b4f8479",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/base-4.3.1.0\\base.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/base-4.3.1.0"]}),(InstalledPackageId "builtin_ffi",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_ffi", sourcePackageId = PackageIdentifier {pkgName = PackageName "ffi", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/include"], includes = [], depends = [], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "builtin_rts",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib"], hsLibraries = ["HSrts"], extraLibraries = ["m","wsock32"], extraGHCiLibraries = [], includeDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/include"], includes = ["Stg.h"], depends = [InstalledPackageId "builtin_ffi"], hugsOptions = [], ccOptions = [], ldOptions = ["-u","_ghczmprim_GHCziTypes_Izh_static_info","-u","_ghczmprim_GHCziTypes_Czh_static_info","-u","_ghczmprim_GHCziTypes_Fzh_static_info","-u","_ghczmprim_GHCziTypes_Dzh_static_info","-u","_base_GHCziPtr_Ptr_static_info","-u","_base_GHCziWord_Wzh_static_info","-u","_base_GHCziInt_I8zh_static_info","-u","_base_GHCziInt_I16zh_static_info","-u","_base_GHCziInt_I32zh_static_info","-u","_base_GHCziInt_I64zh_static_info","-u","_base_GHCziWord_W8zh_static_info","-u","_base_GHCziWord_W16zh_static_info","-u","_base_GHCziWord_W32zh_static_info","-u","_base_GHCziWord_W64zh_static_info","-u","_base_GHCziStable_StablePtr_static_info","-u","_ghczmprim_GHCziTypes_Izh_con_info","-u","_ghczmprim_GHCziTypes_Czh_con_info","-u","_ghczmprim_GHCziTypes_Fzh_con_info","-u","_ghczmprim_GHCziTypes_Dzh_con_info","-u","_base_GHCziPtr_Ptr_con_info","-u","_base_GHCziPtr_FunPtr_con_info","-u","_base_GHCziStable_StablePtr_con_info","-u","_ghczmprim_GHCziBool_False_closure","-u","_ghczmprim_GHCziBool_True_closure","-u","_base_GHCziPack_unpackCString_closure","-u","_base_GHCziIOziException_stackOverflow_closure","-u","_base_GHCziIOziException_heapOverflow_closure","-u","_base_ControlziExceptionziBase_nonTermination_closure","-u","_base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","_base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","_base_ControlziExceptionziBase_nestedAtomically_closure","-u","_base_GHCziWeak_runFinalizzerBatch_closure","-u","_base_GHCziTopHandler_runIO_closure","-u","_base_GHCziTopHandler_runNonIO_closure","-u","_base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","_base_GHCziConcziSync_runSparks_closure","-u","_base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "ghc-prim-0.2.0.0-e1f7c380581d61d42b0360d440cc35ed",InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.2.0.0-e1f7c380581d61d42b0360d440cc35ed", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,2,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Bool"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Generics"],ModuleName ["GHC","Magic"],ModuleName ["GHC","Ordering"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord32"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"],ModuleName ["GHC","Unit"]], hiddenModules = [], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\ghc-prim-0.2.0.0"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\ghc-prim-0.2.0.0"], hsLibraries = ["HSghc-prim-0.2.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/ghc-prim-0.2.0.0\\ghc-prim.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/ghc-prim-0.2.0.0"]}),(InstalledPackageId "integer-gmp-0.2.0.3-91607778cf3ae8f3948a50062b4f8479",InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.2.0.3-91607778cf3ae8f3948a50062b4f8479", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,2,0,3], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\integer-gmp-0.2.0.3"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\integer-gmp-0.2.0.3"], hsLibraries = ["HSinteger-gmp-0.2.0.3"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-e1f7c380581d61d42b0360d440cc35ed"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/integer-gmp-0.2.0.3\\integer-gmp.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/integer-gmp-0.2.0.3"]}),(InstalledPackageId "multiplate-0.0.1.1-b9a01799d58daace698402a46b099d0b",InstalledPackageInfo {installedPackageId = InstalledPackageId "multiplate-0.0.1.1-b9a01799d58daace698402a46b099d0b", sourcePackageId = PackageIdentifier {pkgName = PackageName "multiplate", pkgVersion = Version {versionBranch = [0,0,1,1], versionTags = []}}, license = MIT, copyright = "2010, Russell O'Connor", maintainer = "Russell O'Connor <roconnor@theorem.ca>", author = "Russell O'Connor", stability = "", homepage = "http://haskell.org/haskellwiki/Multiplate", pkgUrl = "", description = "Multiplate is an alternative extension of the Uniplate/Compos core library\nto support mutally recursive\ndatatypes in a way that is as powerful as Compos, as easy to use as Biplate, and\nmore portable than both of them.\nMultiplate does not require GADTs and does not require multi-parameter type classes.\nIt only requires rank 3 polymorphism.", category = "Generics", exposed = True, exposedModules = [ModuleName ["Data","Generics","Multiplate"]], hiddenModules = [], importDirs = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-0.0.1.1\\ghc-7.0.2"], libraryDirs = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-0.0.1.1\\ghc-7.0.2"], hsLibraries = ["HSmultiplate-0.0.1.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b",InstalledPackageId "transformers-0.2.2.0-2fe7b735c63a6cbe8724038d8e4d812a"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\doc\\multiplate-0.0.1.1\\html\\multiplate.haddock"], haddockHTMLs = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\doc\\multiplate-0.0.1.1\\html"]}),(InstalledPackageId "transformers-0.2.2.0-2fe7b735c63a6cbe8724038d8e4d812a",InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-2fe7b735c63a6cbe8724038d8e4d812a", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,2,2,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", description = "Haskell 98 part of a monad transformer library, inspired by the paper\n\\\"Functional Programming with Overloading and Higher-Order Polymorphism\\\",\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis part contains the monad transformer class, the concrete monad\ntransformers, operations and liftings. It can be used on its own\nin Haskell 98 code, or with the monad classes in the @monads-fd@ or\n@monads-tf@ packages, which automatically lift operations introduced\nby monad transformers through other transformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"]], hiddenModules = [], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\transformers-0.2.2.0\\ghc-7.0.2"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\transformers-0.2.2.0\\ghc-7.0.2"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\doc\\transformers-0.2.2.0\\html\\transformers.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\doc\\transformers-0.2.2.0\\html"]})]) (fromList [(PackageName "base",fromList [(Version {versionBranch = [4,3,1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,3,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","IO","Encoding","CodePage","Table"],ModuleName ["GHC","Conc","Windows"],ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Classes"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Float"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","MVar"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IORef"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","STRef"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","OldException"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\base-4.3.1.0"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\base-4.3.1.0"], hsLibraries = ["HSbase-4.3.1.0"], extraLibraries = ["wsock32","user32","shell32"], extraGHCiLibraries = [], includeDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\base-4.3.1.0\\include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-e1f7c380581d61d42b0360d440cc35ed",InstalledPackageId "integer-gmp-0.2.0.3-91607778cf3ae8f3948a50062b4f8479",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/base-4.3.1.0\\base.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/base-4.3.1.0"]}])]),(PackageName "ffi",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_ffi", sourcePackageId = PackageIdentifier {pkgName = PackageName "ffi", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/include"], includes = [], depends = [], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "ghc-prim",fromList [(Version {versionBranch = [0,2,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.2.0.0-e1f7c380581d61d42b0360d440cc35ed", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,2,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Bool"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Generics"],ModuleName ["GHC","Magic"],ModuleName ["GHC","Ordering"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord32"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"],ModuleName ["GHC","Unit"]], hiddenModules = [], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\ghc-prim-0.2.0.0"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\ghc-prim-0.2.0.0"], hsLibraries = ["HSghc-prim-0.2.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/ghc-prim-0.2.0.0\\ghc-prim.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/ghc-prim-0.2.0.0"]}])]),(PackageName "integer-gmp",fromList [(Version {versionBranch = [0,2,0,3], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.2.0.3-91607778cf3ae8f3948a50062b4f8479", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,2,0,3], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\integer-gmp-0.2.0.3"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\integer-gmp-0.2.0.3"], hsLibraries = ["HSinteger-gmp-0.2.0.3"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-e1f7c380581d61d42b0360d440cc35ed"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/integer-gmp-0.2.0.3\\integer-gmp.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/../doc/html/libraries/integer-gmp-0.2.0.3"]}])]),(PackageName "multiplate",fromList [(Version {versionBranch = [0,0,1,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "multiplate-0.0.1.1-b9a01799d58daace698402a46b099d0b", sourcePackageId = PackageIdentifier {pkgName = PackageName "multiplate", pkgVersion = Version {versionBranch = [0,0,1,1], versionTags = []}}, license = MIT, copyright = "2010, Russell O'Connor", maintainer = "Russell O'Connor <roconnor@theorem.ca>", author = "Russell O'Connor", stability = "", homepage = "http://haskell.org/haskellwiki/Multiplate", pkgUrl = "", description = "Multiplate is an alternative extension of the Uniplate/Compos core library\nto support mutally recursive\ndatatypes in a way that is as powerful as Compos, as easy to use as Biplate, and\nmore portable than both of them.\nMultiplate does not require GADTs and does not require multi-parameter type classes.\nIt only requires rank 3 polymorphism.", category = "Generics", exposed = True, exposedModules = [ModuleName ["Data","Generics","Multiplate"]], hiddenModules = [], importDirs = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-0.0.1.1\\ghc-7.0.2"], libraryDirs = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\multiplate-0.0.1.1\\ghc-7.0.2"], hsLibraries = ["HSmultiplate-0.0.1.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b",InstalledPackageId "transformers-0.2.2.0-2fe7b735c63a6cbe8724038d8e4d812a"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\doc\\multiplate-0.0.1.1\\html\\multiplate.haddock"], haddockHTMLs = ["C:\\Users\\EB\\AppData\\Roaming\\cabal\\doc\\multiplate-0.0.1.1\\html"]}])]),(PackageName "rts",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], importDirs = [], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib"], hsLibraries = ["HSrts"], extraLibraries = ["m","wsock32"], extraGHCiLibraries = [], includeDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib/include"], includes = ["Stg.h"], depends = [InstalledPackageId "builtin_ffi"], hugsOptions = [], ccOptions = [], ldOptions = ["-u","_ghczmprim_GHCziTypes_Izh_static_info","-u","_ghczmprim_GHCziTypes_Czh_static_info","-u","_ghczmprim_GHCziTypes_Fzh_static_info","-u","_ghczmprim_GHCziTypes_Dzh_static_info","-u","_base_GHCziPtr_Ptr_static_info","-u","_base_GHCziWord_Wzh_static_info","-u","_base_GHCziInt_I8zh_static_info","-u","_base_GHCziInt_I16zh_static_info","-u","_base_GHCziInt_I32zh_static_info","-u","_base_GHCziInt_I64zh_static_info","-u","_base_GHCziWord_W8zh_static_info","-u","_base_GHCziWord_W16zh_static_info","-u","_base_GHCziWord_W32zh_static_info","-u","_base_GHCziWord_W64zh_static_info","-u","_base_GHCziStable_StablePtr_static_info","-u","_ghczmprim_GHCziTypes_Izh_con_info","-u","_ghczmprim_GHCziTypes_Czh_con_info","-u","_ghczmprim_GHCziTypes_Fzh_con_info","-u","_ghczmprim_GHCziTypes_Dzh_con_info","-u","_base_GHCziPtr_Ptr_con_info","-u","_base_GHCziPtr_FunPtr_con_info","-u","_base_GHCziStable_StablePtr_con_info","-u","_ghczmprim_GHCziBool_False_closure","-u","_ghczmprim_GHCziBool_True_closure","-u","_base_GHCziPack_unpackCString_closure","-u","_base_GHCziIOziException_stackOverflow_closure","-u","_base_GHCziIOziException_heapOverflow_closure","-u","_base_ControlziExceptionziBase_nonTermination_closure","-u","_base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","_base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","_base_ControlziExceptionziBase_nestedAtomically_closure","-u","_base_GHCziWeak_runFinalizzerBatch_closure","-u","_base_GHCziTopHandler_runIO_closure","-u","_base_GHCziTopHandler_runNonIO_closure","-u","_base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","_base_GHCziConcziSync_runSparks_closure","-u","_base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "transformers",fromList [(Version {versionBranch = [0,2,2,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-2fe7b735c63a6cbe8724038d8e4d812a", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,2,2,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", description = "Haskell 98 part of a monad transformer library, inspired by the paper\n\\\"Functional Programming with Overloading and Higher-Order Polymorphism\\\",\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis part contains the monad transformer class, the concrete monad\ntransformers, operations and liftings. It can be used on its own\nin Haskell 98 code, or with the monad classes in the @monads-fd@ or\n@monads-tf@ packages, which automatically lift operations introduced\nby monad transformers through other transformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"]], hiddenModules = [], importDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\transformers-0.2.2.0\\ghc-7.0.2"], libraryDirs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\transformers-0.2.2.0\\ghc-7.0.2"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.1.0-f520cd232cc386346843c4a12b63f44b"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\doc\\transformers-0.2.2.0\\html\\transformers.haddock"], haddockHTMLs = ["C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\doc\\transformers-0.2.2.0\\html"]}])])]), pkgDescrFile = Just ".\\multiplate-simplified.cabal", localPkgDescr = PackageDescription {package = PackageIdentifier {pkgName = PackageName "multiplate-simplified", pkgVersion = Version {versionBranch = [0,0,0,1], versionTags = []}}, license = MIT, licenseFile = "LICENSE", copyright = "2011, Balazs Endresz", maintainer = "Balazs Endresz <balazs.endresz@gmail.com>", author = "Balazs Endresz", stability = "", testedWith = [(GHC,ThisVersion (Version {versionBranch = [6,12,3], versionTags = []})),(GHC,ThisVersion (Version {versionBranch = [7,0,2], versionTags = []}))], homepage = "", pkgUrl = "", bugReports = "", sourceRepos = [], synopsis = "Shorter, more generic functions for Multiplate.", description = "This module provides wrappers around some Multiplate functions to spare\nthe Projector argument. This makes it simpler to use them, and\nthey will work for any data type, but a simple instance definition\nhas to be supplied for each one.", category = "Generics", customFieldsPD = [], buildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [3], versionTags = []})) (LaterVersion (Version {versionBranch = [3], versionTags = []}))) (EarlierVersion (Version {versionBranch = [5], versionTags = []}))) (ThisVersion (Version {versionBranch = [4,3,1,0], versionTags = []}))),Dependency (PackageName "multiplate") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,0,1,1], versionTags = []}))),Dependency (PackageName "transformers") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [0,2], versionTags = []})) (LaterVersion (Version {versionBranch = [0,2], versionTags = []}))) (EarlierVersion (Version {versionBranch = [0,3], versionTags = []}))) (ThisVersion (Version {versionBranch = [0,2,2,0], versionTags = []})))], specVersionRaw = Right (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,4], versionTags = []})) (LaterVersion (Version {versionBranch = [1,4], versionTags = []}))), buildType = Just Simple, library = Just (Library {exposedModules = [ModuleName ["Data","Generics","Multiplate","Simplified"]], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], cppOptions = [], ccOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], cSources = [], hsSourceDirs = ["."], otherModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [MultiParamTypeClasses], extraLibs = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], ghcProfOptions = [], ghcSharedOptions = [], customFieldsBI = [], targetBuildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [3], versionTags = []})) (LaterVersion (Version {versionBranch = [3], versionTags = []}))) (EarlierVersion (Version {versionBranch = [5], versionTags = []}))) (ThisVersion (Version {versionBranch = [4,3,1,0], versionTags = []}))),Dependency (PackageName "multiplate") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,0,1,1], versionTags = []}))),Dependency (PackageName "transformers") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [0,2], versionTags = []})) (LaterVersion (Version {versionBranch = [0,2], versionTags = []}))) (EarlierVersion (Version {versionBranch = [0,3], versionTags = []}))) (ThisVersion (Version {versionBranch = [0,2,2,0], versionTags = []})))]}}), executables = [], testSuites = [], dataFiles = ["CHANGELOG"], dataDir = "", extraSrcFiles = [], extraTmpFiles = []}, withPrograms = [("alex",ConfiguredProgram {programId = "alex", programVersion = Just (Version {versionBranch = [2,3,5], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\bin\\alex.exe"}}),("ar",ConfiguredProgram {programId = "ar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\mingw\\bin\\ar.exe"}}),("cpphs",ConfiguredProgram {programId = "cpphs", programVersion = Just (Version {versionBranch = [1,11], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\bin\\cpphs.exe"}}),("gcc",ConfiguredProgram {programId = "gcc", programVersion = Just (Version {versionBranch = [4,5,0], versionTags = []}), programDefaultArgs = ["-fno-stack-protector"], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\mingw\\bin\\gcc.exe"}}),("ghc",ConfiguredProgram {programId = "ghc", programVersion = Just (Version {versionBranch = [7,0,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\bin\\ghc.exe"}}),("ghc-pkg",ConfiguredProgram {programId = "ghc-pkg", programVersion = Just (Version {versionBranch = [7,0,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\bin\\ghc-pkg.exe"}}),("haddock",ConfiguredProgram {programId = "haddock", programVersion = Just (Version {versionBranch = [2,9,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\bin\\haddock.exe"}}),("happy",ConfiguredProgram {programId = "happy", programVersion = Just (Version {versionBranch = [1,18,6], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\lib\\extralibs\\bin\\happy.exe"}}),("hsc2hs",ConfiguredProgram {programId = "hsc2hs", programVersion = Just (Version {versionBranch = [0,67], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\bin\\hsc2hs.exe"}}),("hscolour",ConfiguredProgram {programId = "hscolour", programVersion = Just (Version {versionBranch = [1,17], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Users\\EB\\AppData\\Roaming\\cabal\\bin\\HsColour.exe"}}),("ld",ConfiguredProgram {programId = "ld", programVersion = Nothing, programDefaultArgs = ["-x"], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2011.2.0.0\\mingw\\bin\\ld.exe"}}),("pkg-config",ConfiguredProgram {programId = "pkg-config", programVersion = Just (Version {versionBranch = [0,23], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "c:\\bin\\gtk\\bin\\pkg-config.exe"}}),("ranlib",ConfiguredProgram {programId = "ranlib", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2010.2.0.0\\mingw\\bin\\ranlib.exe"}}),("strip",ConfiguredProgram {programId = "strip", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "C:\\Program Files\\Haskell Platform\\2010.2.0.0\\mingw\\bin\\strip.exe"}})], withPackageDB = [GlobalPackageDB,UserPackageDB], withVanillaLib = True, withProfLib = False, withSharedLib = False, withProfExe = False, withOptimization = NormalOptimisation, withGHCiLib = True, splitObjs = False, stripExes = True, progPrefix = "", progSuffix = ""}
@@ -0,0 +1,25 @@+Name: multiplate-simplified+Version: 0.0.0.1+Cabal-Version: >= 1.4+License: MIT+License-File: LICENSE+Build-Type: Simple+Copyright: 2011, Balazs Endresz+Author: Balazs Endresz+Maintainer: Balazs Endresz <balazs.endresz@gmail.com>+Synopsis: Shorter, more generic functions for Multiplate.+Category: Generics+Description:+ This module provides wrappers around some Multiplate functions to spare + the Projector argument. This makes it simpler to use them, and + they will work for any data type, but a simple instance definition+ has to be supplied for each one.+Tested-with: GHC == 6.12.3, GHC == 7.0.2+data-files: CHANGELOG++Library+ Build-Depends: base >= 3 && < 5, transformers >= 0.2 && < 0.3, multiplate+ Extensions: MultiParamTypeClasses+ Exposed-modules:+ Data.Generics.Multiplate.Simplified+