packages feed

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 view
+ Data/Generics/Multiplate/Simplified.hs view
@@ -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
++-}
+ LICENSE view
@@ -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.
+ Setup.lhs view
@@ -0,0 +1,4 @@+#! /usr/bin/env runhaskell+ +> import Distribution.Simple+> main = defaultMain
+ dist/build/Data/Generics/Multiplate/NoProjector.hi view

binary file changed (absent → 5536 bytes)

+ dist/build/Data/Generics/Multiplate/NoProjector.o view

binary file changed (absent → 6850 bytes)

+ dist/build/Data/Generics/Multiplate/Simplified.hi view

binary file changed (absent → 7408 bytes)

+ dist/build/Data/Generics/Multiplate/Simplified.o view

binary file changed (absent → 8278 bytes)

+ dist/build/HSmultiplate-noprojector-0.0.0.1.o view

binary file changed (absent → 6333 bytes)

+ dist/build/HSmultiplate-noprojector-0.0.1.1.o view

binary file changed (absent → 6327 bytes)

+ dist/build/HSmultiplate-simplified-0.0.0.1.o view

binary file changed (absent → 8001 bytes)

+ dist/build/autogen/Paths_multiplate_noprojector.hs view
@@ -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)
+ dist/build/autogen/Paths_multiplate_simplified.hs view
@@ -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)
+ dist/build/autogen/cabal_macros.h view
@@ -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)+
+ dist/build/libHSmultiplate-noprojector-0.0.0.1.a view

binary file changed (absent → 9946 bytes)

+ dist/build/libHSmultiplate-noprojector-0.0.1.1.a view

binary file changed (absent → 9934 bytes)

+ dist/build/libHSmultiplate-simplified-0.0.0.1.a view

binary file changed (absent → 12852 bytes)

+ dist/doc/html/multiplate-simplified/Data-Generics-Multiplate-Simplifi view
@@ -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 &quot;p&quot; 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 -&gt; f (Prog a)
+  , pDecl :: Decl -&gt; f Decl
+  , pExpr :: Expr -&gt; f Expr
+  , pVar  :: Var  -&gt; 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 &quot;b&quot; prefixes in functions stand for &quot;build&quot;.)
+</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 &lt;$&gt;: a = constr &lt;$&gt; (getProjector p a) p a
+    appl   &lt;*&gt;: a = appl   &lt;*&gt; (getProjector p a) p a
+    infixl 4 &lt;$&gt;:
+    infixl 4 &lt;*&gt;:
+</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 &lt;$&gt; pure a &lt;*&gt; traverse (pDecl p) decls    
+</pre><pre>    bDecl (VarDecl var expr)       = VarDecl &lt;$&gt;: var &lt;*&gt;: expr
+    -- bDecl (VarDecl str expr)    = VarDecl &lt;$&gt; pVar p var &lt;*&gt; pExpr p expr
+    bDecl (FunDecl var vars decls) = FunDecl &lt;$&gt;: var &lt;*&gt; traverse (pVar p) vars &lt;*&gt; traverse (pDecl p) decls
+    bDecl (Return expr)            = Return &lt;$&gt;: expr
+    -- bDecl (Return expr)         = Return &lt;$&gt; pExpr p expr
+</pre><pre>    bExpr (Ref str)                = Ref &lt;$&gt; pure str
+    bExpr (Number int)             = Number &lt;$&gt; pure int
+    bExpr (Add expr expr')         = Add &lt;$&gt;: expr &lt;*&gt;: expr'
+    -- bExpr (Add expr expr')      = Add &lt;$&gt; pExpr p expr &lt;*&gt; pExpr p expr'
+    bExpr (Mul expr expr')         = Mul &lt;$&gt;: expr &lt;*&gt;: expr'
+    -- bExpr (Mul expr expr')      = Mul &lt;$&gt; pExpr p expr &lt;*&gt; pExpr p expr'
+</pre><pre>    bVar (Var str)                 = Var &lt;$&gt; 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) = (,) &lt;$&gt; fa a &lt;*&gt; fb b
+
+bConstr (Constr a b) = Constr &lt;$&gt; 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>&lt;$&gt;:</code>, <code>&lt;*&gt;:</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 &quot;a&quot;) (Number 1)
+               ,FunDecl (Var &quot;func&quot;) [(Var &quot;arg1&quot;), (Var &quot;arg2&quot;)]
+                    [Return (Add (Ref &quot;a&quot;) (Ref &quot;arg1&quot;))]]
+</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) -&gt; Constant [str]) }
+
+vars :: (IsProjector Plate a) =&gt; a -&gt; [String]
+vars  x = gfoldFor       variablesPlate x
+
+vars' :: Prog a -&gt; [String]
+vars' x =  foldFor pProg variablesPlate x
+</pre><pre>&gt; vars prog
+[&quot;a&quot;,&quot;func&quot;,&quot;arg1&quot;,&quot;arg2&quot;]
+</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 =&gt; <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 -&gt; a -&gt; 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 =&gt; p Identity -&gt; a -&gt; 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) =&gt; p m -&gt; a -&gt; 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 =&gt; p (Constant o) -&gt; a -&gt; 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 =&gt; (o -&gt; b) -&gt; p (Constant o) -&gt; a -&gt; 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 =&gt; 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)) -&gt; a -&gt; 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 =&gt; 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)) -&gt; a -&gt; 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 =&gt; 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>) -&gt; a -&gt; <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 =&gt; 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>) -&gt; a -&gt; <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 =&gt; 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)) -&gt; a -&gt; <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 =&gt; 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)) -&gt; a -&gt; <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>
+ dist/doc/html/multiplate-simplified/doc-index.html view
@@ -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>
+ dist/doc/html/multiplate-simplified/frames.html view
@@ -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>
+ dist/doc/html/multiplate-simplified/haddock-util.js view
@@ -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 &#9662;</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();+}+
+ dist/doc/html/multiplate-simplified/haddock.css view
@@ -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;+}++
+ dist/doc/html/multiplate-simplified/haskell_icon.gif view

binary file changed (absent → 911 bytes)

+ dist/doc/html/multiplate-simplified/hslogo-16.png view

binary file changed (absent → 1684 bytes)

+ dist/doc/html/multiplate-simplified/index-frames.html view
@@ -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>
+ dist/doc/html/multiplate-simplified/index.html view
@@ -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>
+ dist/doc/html/multiplate-simplified/mini_Data-Generics-Multiplate-Sim view
@@ -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>
+ dist/doc/html/multiplate-simplified/minus.gif view

binary file changed (absent → 56 bytes)

+ dist/doc/html/multiplate-simplified/multiplate-simplified.haddock view

binary file changed (absent → 872 bytes)

+ dist/doc/html/multiplate-simplified/ocean.css view
@@ -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 */
+ dist/doc/html/multiplate-simplified/plus.gif view

binary file changed (absent → 59 bytes)

+ dist/doc/html/multiplate-simplified/synopsis.png view

binary file changed (absent → 11327 bytes)

+ dist/package.conf.inplace view
@@ -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"]}
+]
+ dist/setup-config view
@@ -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 = ""}
+ multiplate-simplified.cabal view
@@ -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+