hobbits 1.0 → 1.1
raw patch · 104 files changed
+753/−1717 lines, 104 filesdep +haskell-src-extsdep +haskell-src-metadep +th-expand-synsdep −parsecdep ~template-haskellPVP ok
version bump matches the API change (PVP)
Dependencies added: haskell-src-exts, haskell-src-meta, th-expand-syns
Dependencies removed: parsec
Dependency ranges changed: template-haskell
API changes (from Hackage documentation)
Files
- Data/Binding/Hobbits.hs +13/−11
- Data/Binding/Hobbits/Closed.hs +110/−0
- Data/Binding/Hobbits/Examples/LambdaLifting.hs +14/−15
- Data/Binding/Hobbits/Examples/LambdaLifting/Terms.hs +14/−14
- Data/Binding/Hobbits/Internal.hs +14/−2
- Data/Binding/Hobbits/InternalUtilities.hs +13/−0
- Data/Binding/Hobbits/Mb.hs +59/−26
- Data/Binding/Hobbits/Mb.hs-darcs-backup0 +235/−0
- Data/Binding/Hobbits/NuElim.hs +129/−32
- Data/Binding/Hobbits/PatternParser.hs +13/−182
- Data/Binding/Hobbits/QQ.hs +109/−36
- Data/Binding/Hobbits/SuperComb.hs +0/−66
- Data/Type/List/List.hs +1/−1
- Data/Type/List/Map.hs +11/−1
- Data/Type/List/Proof/Append.hs +6/−0
- Data/Type/List/Proof/Member.hs +1/−1
- dist/build/Data/Binding/Hobbits.hi binary
- dist/build/Data/Binding/Hobbits.o binary
- dist/build/Data/Binding/Hobbits/Context.hi binary
- dist/build/Data/Binding/Hobbits/Context.o binary
- dist/build/Data/Binding/Hobbits/Examples/LambdaLifting.hi binary
- dist/build/Data/Binding/Hobbits/Examples/LambdaLifting.o binary
- dist/build/Data/Binding/Hobbits/Examples/LambdaLifting/Examples.hi binary
- dist/build/Data/Binding/Hobbits/Examples/LambdaLifting/Examples.o binary
- dist/build/Data/Binding/Hobbits/Examples/LambdaLifting/Terms.hi binary
- dist/build/Data/Binding/Hobbits/Examples/LambdaLifting/Terms.o binary
- dist/build/Data/Binding/Hobbits/Internal.hi binary
- dist/build/Data/Binding/Hobbits/Internal.o binary
- dist/build/Data/Binding/Hobbits/Mb.hi binary
- dist/build/Data/Binding/Hobbits/Mb.o binary
- dist/build/Data/Binding/Hobbits/NuElim.hi binary
- dist/build/Data/Binding/Hobbits/NuElim.o binary
- dist/build/Data/Binding/Hobbits/PatternParser.hi binary
- dist/build/Data/Binding/Hobbits/PatternParser.o binary
- dist/build/Data/Binding/Hobbits/QQ.hi binary
- dist/build/Data/Binding/Hobbits/QQ.o binary
- dist/build/Data/Binding/Hobbits/SuperComb.hi binary
- dist/build/Data/Binding/Hobbits/SuperComb.o binary
- dist/build/Data/Type/HList.hi binary
- dist/build/Data/Type/HList.o binary
- dist/build/Data/Type/HList/HList.hi binary
- dist/build/Data/Type/HList/HList.o binary
- dist/build/Data/Type/HList/Proof/Append.hi binary
- dist/build/Data/Type/HList/Proof/Append.o binary
- dist/build/Data/Type/HList/Proof/Member.hi binary
- dist/build/Data/Type/HList/Proof/Member.o binary
- dist/build/Data/Type/List.hi binary
- dist/build/Data/Type/List.o binary
- dist/build/Data/Type/List/List.hi binary
- dist/build/Data/Type/List/List.o binary
- dist/build/Data/Type/List/Map.hi binary
- dist/build/Data/Type/List/Map.o binary
- dist/build/Data/Type/List/Proof/Append.hi binary
- dist/build/Data/Type/List/Proof/Append.o binary
- dist/build/Data/Type/List/Proof/Member.hi binary
- dist/build/Data/Type/List/Proof/Member.o binary
- dist/build/HShobbits-1.0.o binary
- dist/build/autogen/Paths_hobbits.hs +0/−29
- dist/build/autogen/cabal_macros.h +0/−58
- dist/build/libHShobbits-1.0.a binary
- dist/doc/html/hobbits/Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html +0/−4
- dist/doc/html/hobbits/Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html +0/−4
- dist/doc/html/hobbits/Data-Binding-Hobbits-Examples-LambdaLifting.html +0/−11
- dist/doc/html/hobbits/Data-Binding-Hobbits-Internal.html +0/−9
- dist/doc/html/hobbits/Data-Binding-Hobbits-Mb.html +0/−66
- dist/doc/html/hobbits/Data-Binding-Hobbits-NuElim.html +0/−46
- dist/doc/html/hobbits/Data-Binding-Hobbits-PatternParser.html +0/−8
- dist/doc/html/hobbits/Data-Binding-Hobbits-QQ.html +0/−14
- dist/doc/html/hobbits/Data-Binding-Hobbits-SuperComb.html +0/−22
- dist/doc/html/hobbits/Data-Binding-Hobbits.html +0/−23
- dist/doc/html/hobbits/Data-Type-List-List.html +0/−5
- dist/doc/html/hobbits/Data-Type-List-Map.html +0/−18
- dist/doc/html/hobbits/Data-Type-List-Proof-Append.html +0/−8
- dist/doc/html/hobbits/Data-Type-List-Proof-Member.html +0/−13
- dist/doc/html/hobbits/Data-Type-List.html +0/−12
- dist/doc/html/hobbits/doc-index.html +0/−4
- dist/doc/html/hobbits/frames.html +0/−28
- dist/doc/html/hobbits/haddock-util.js +0/−311
- dist/doc/html/hobbits/hobbits.haddock binary
- dist/doc/html/hobbits/hslogo-16.png binary
- dist/doc/html/hobbits/index-frames.html +0/−4
- dist/doc/html/hobbits/index.html +0/−7
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html +0/−4
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html +0/−4
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-Examples-LambdaLifting.html +0/−6
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-Internal.html +0/−4
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-Mb.html +0/−10
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-NuElim.html +0/−4
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-PatternParser.html +0/−4
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-QQ.html +0/−4
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits-SuperComb.html +0/−6
- dist/doc/html/hobbits/mini_Data-Binding-Hobbits.html +0/−6
- dist/doc/html/hobbits/mini_Data-Type-List-List.html +0/−4
- dist/doc/html/hobbits/mini_Data-Type-List-Map.html +0/−4
- dist/doc/html/hobbits/mini_Data-Type-List-Proof-Append.html +0/−4
- dist/doc/html/hobbits/mini_Data-Type-List-Proof-Member.html +0/−6
- dist/doc/html/hobbits/mini_Data-Type-List.html +0/−4
- dist/doc/html/hobbits/minus.gif binary
- dist/doc/html/hobbits/ocean.css +0/−542
- dist/doc/html/hobbits/plus.gif binary
- dist/doc/html/hobbits/synopsis.png binary
- dist/package.conf.inplace +0/−2
- dist/setup-config +0/−2
- hobbits.cabal +11/−6
@@ -20,18 +20,21 @@ -- | The 'Data.Binding.Hobbits.Mb.Mb' type modeling multi-bindings is the -- central abstract type of the library - -- * Ancilliary modules- module Data.Type.List,- -- | Type lists track the types of bound variables.- module Data.Binding.Hobbits.SuperComb,- -- | The 'Data.Binding.Hobbits.SuperComb.SuperComb' type models+ -- * Closed terms+ module Data.Binding.Hobbits.Closed,+ -- | The 'Data.Binding.Hobbits.Closed.Cl' type models -- super-combinators, which are safe functions to apply under -- 'Data.Binding.Hobbits.Mb.Mb'.++ -- * Pattern-matching multi-bindings and closed terms module Data.Binding.Hobbits.QQ,- -- | The 'Data.Binding.Hobbits.QQ.nuQQ' quasiquoter allows safe pattern- -- matching on 'Data.Binding.Hobbits.Mb.Mb' values.- module Data.Binding.Hobbits.PatternParser,- -- | A simple parser for Haskell patterns.+ -- | The 'Data.Binding.Hobbits.QQ.nuP' quasiquoter allows safe pattern+ -- matching on 'Data.Binding.Hobbits.Mb.Mb'+ -- values. 'Data.Binding.Hobbits.QQ.superCombP' is similar.++ -- * Ancilliary modules+ module Data.Type.List,+ -- | Type lists track the types of bound variables. module Data.Binding.Hobbits.NuElim -- | The "Data.Binding.Hobbits.NuElim" module allows elimination of -- bindings and multi-bindings; NOTE: this module is not covered in@@ -40,7 +43,6 @@ import Data.Type.List import Data.Binding.Hobbits.Mb-import Data.Binding.Hobbits.SuperComb+import Data.Binding.Hobbits.Closed import Data.Binding.Hobbits.QQ-import Data.Binding.Hobbits.PatternParser import Data.Binding.Hobbits.NuElim
@@ -0,0 +1,110 @@+{-# LANGUAGE TemplateHaskell #-}++-- |+-- Module : Data.Binding.Hobbits.Closed+-- Copyright : (c) 2011 Edwin Westbrook, Nicolas Frisby, and Paul Brauner+--+-- License : BSD3+--+-- Maintainer : emw4@rice.edu+-- Stability : experimental+-- Portability : GHC+--+-- This module uses Template Haskell to distinguish closed terms, so that the+-- library can trust such functions to not contain any @Name@ values in their+-- closure.++module Data.Binding.Hobbits.Closed (+ -- * Abstract types+ Cl(),+ -- * Operators involving 'Cl'+ cl, clApply, unCl, mbApplyCl, mbLiftClosed, noClosedNames,+ -- * Synonyms+ mkClosed, Closed, unClosed+) where++import Data.Binding.Hobbits.Internal (Name, Mb(..), Cl(..))++import Data.Binding.Hobbits.NuElim++import Language.Haskell.TH (Q, Exp(..), Type(..))+import qualified Language.Haskell.TH as TH+import qualified Language.Haskell.TH.ExpandSyns as TH++import qualified Data.Generics as SYB+import qualified Language.Haskell.TH.Syntax as TH++++++-- | @cl@ is used with Template Haskell quotations to create closed terms of+-- type 'Cl'. A quoted expression is closed if all of the names occuring in it+-- are+--+-- 1) bound globally or+-- 2) bound within the quotation or+-- 3) also of type 'Cl'.+cl :: Q Exp -> Q Exp+cl e = AppE (ConE 'Cl) `fmap` e >>= SYB.everywhereM (SYB.mkM w) where+ w e@(VarE n@(TH.Name _ flav)) = case flav of+ TH.NameG {} -> return e -- bound globally+ TH.NameU {} -> return e -- bound locally within this quotation+ TH.NameL {} -> closed n >> return e -- bound locally outside this quotation+ _ -> fail $ "`cl' does not allow dynamically bound names: `"+ ++ show n ++ "'."+ w e = return e++ closed n = do+ i <- TH.reify n+ case i of+ TH.VarI _ ty _ _ -> TH.expandSyns ty >>= w+ where+ w (AppT (ConT m) _) | m == ''Cl = return ()+ w (ForallT _ _ ty) = w ty+ w _ = fail $ "`cl` requires non-global variables to have type `Cl'.\n\t`"+ ++ show (TH.ppr n) ++ "' does not. It's type is:\n\t `"+ ++ show (TH.ppr ty) ++ "'."+ _ -> fail $ "hobbits Panic -- could not reify `" ++ show n ++ "'."++++++-- | Closed terms are closed (sorry) under application.+clApply :: Cl (a -> b) -> Cl a -> Cl b+-- could be defined with cl were it not for the GHC stage restriction+clApply (Cl f) (Cl a) = Cl (f a)++-- | Closed multi-bindings are also closed under application.+clMbApply :: (NuElim a, NuElim b) => Cl (Mb ctx (a -> b)) -> Cl (Mb ctx a) ->+ Cl (Mb ctx b)+clMbApply (Cl f) (Cl a) = Cl (mbApply f a)++-- | @mbLiftClosed@ is safe because closed terms don't contain names.+mbLiftClosed :: Mb ctx (Cl a) -> Cl a+mbLiftClosed (MkMb _ a) = a++-- | @noClosedNames@ encodes the hobbits guarantee that no name can escape its+-- multi-binding.+noClosedNames :: Cl (Name a) -> b+noClosedNames _ = error $ "... Clever girl!" +++ "The `noClosedNames' invariant has somehow been violated."++-- | @mbApplyCl@ @f@ @b@ applies a closed function @f@ to the body of+-- multi-binding @b@. For example:+--+-- > mbApplyCl $(cl [| f |]) (nu $ \n -> n) = nu f+mbApplyCl :: Cl (a -> b) -> Mb ctx a -> Mb ctx b+mbApplyCl f (MkMb names i) = MkMb names (unCl f i)++++-- | @mkClosed = cl@+mkClosed = cl++-- | @Closed = Cl@+type Closed = Cl++-- | @unClosed = unCl@+unClosed x = unCl x
@@ -36,6 +36,8 @@ import qualified Data.Type.List.Proof.Member as Mem import Data.Binding.Hobbits.Examples.LambdaLifting.Terms++-- imported for ease of use at terminal import Data.Binding.Hobbits.Examples.LambdaLifting.Examples import Control.Monad.Cont (Cont, runCont, cont)@@ -56,13 +58,13 @@ PeelRet c (AddArrows lc a) peelLambdas :: Mb c (Binding (L b) (Term a)) -> PeelRet c (b -> a)-peelLambdas b = peelLambdasH Nil LType (combineMb b)+peelLambdas b = peelLambdasH Nil LType (mbCombine b) peelLambdasH :: lc ~ (lc0 :> b) => LC lc0 -> LType b -> Mb (c :++: lc) (Term a) -> PeelRet c (AddArrows lc a)-peelLambdasH lc0 isl [nuQQ| Lam b |] =- peelLambdasH (lc0 :> isl) LType (combineMb b)+peelLambdasH lc0 isl [nuP| Lam b |] =+ peelLambdasH (lc0 :> isl) LType (mbCombine b) peelLambdasH lc0 ilt t = PeelRet (lc0 :> ilt) t @@ -106,14 +108,12 @@ fvUnion Nil (fvs2 :> fv2) = case fvUnion Nil fvs2 of FVUnionRet fvs f1 f2 -> case elemMC fv2 fvs of Nothing -> FVUnionRet (fvs :> fv2)- -- flagged as non-exhaustive, in spite of type- (\(xs :> x) -> f1 xs) (\(xs :> x) -> f2 xs :> x)+ (\(xs :> _) -> f1 xs) (\(xs :> x) -> f2 xs :> x) Just idx -> FVUnionRet fvs f1 (\xs -> f2 xs :> C.lookup idx xs) fvUnion (fvs1 :> fv1) fvs2 = case fvUnion fvs1 fvs2 of FVUnionRet fvs f1 f2 -> case elemMC fv1 fvs of Nothing -> FVUnionRet (fvs :> fv1)- -- flagged as non-exhaustive, in spite of type- (\(xs :> x) -> f1 xs :> x) (\(xs :> x) -> f2 xs)+ (\(xs :> x) -> f1 xs :> x) (\(xs :> _) -> f2 xs) Just idx -> FVUnionRet fvs (\xs -> f1 xs :> C.lookup idx xs) f2 elemMC :: MbLName c a -> FVList c fvs -> Maybe (Member fvs a)@@ -173,7 +173,6 @@ Left idx -> SepRet m (\xs -> f xs :> C.lookup (Mem.weakenL (C.proxy m) idx) xs) Right n -> SepRet (m :> MbLName n) (\xs -> case C.split (C.mkMonoAppend c' lc) xs of- -- flagged as non-exhaustive, in spite of type (fvs' :> fv', lcs) -> f (C.append fvs' lcs) :> fv') where c' = proxyCons (C.proxy m) fv@@ -181,9 +180,9 @@ raiseAppName :: Append c1 c2 c -> Mb c (Name a) -> Either (Member c2 a) (Mb c1 (Name a)) raiseAppName app n =- case mbToplevel $(superComb [| mbNameBoundP |]) (separateMb app n) of- [nuQQ| Left mem |] -> Left $ mbLift mem- [nuQQ| Right n |] -> Right n+ case mbApplyCl $(mkClosed [| mbNameBoundP |]) (mbSeparate app n) of+ [nuP| Left mem |] -> Left $ mbLift mem+ [nuP| Right n |] -> Right n ------------------------------------------------------------ -- lambda-lifting, woo hoo!@@ -192,14 +191,14 @@ type LLBodyRet b c a = Cont (Decls b) (FVSTerm c Nil a) llBody :: LC c -> Mb c (Term a) -> LLBodyRet b c a-llBody c [nuQQ| Var v |] =+llBody _ [nuP| Var v |] = return $ FVSTerm (Nil :> MbLName v) $ SVar Member_Base-llBody c [nuQQ| App t1 t2 |] = do+llBody c [nuP| App t1 t2 |] = do FVSTerm fvs1 db1 <- llBody c t1 FVSTerm fvs2 db2 <- llBody c t2 FVUnionRet names sub1 sub2 <- return $ fvUnion fvs1 fvs2 return $ FVSTerm names $ SApp (SWeaken sub1 db1) (SWeaken sub2 db2)-llBody c [nuQQ| Lam b |] = do+llBody c [nuP| Lam b |] = do PeelRet lc body <- return $ peelLambdas b llret <- llBody (C.append c lc) body FVSTerm fvs db <- return $ fvSSepLTVars lc llret@@ -220,4 +219,4 @@ Decls_Base (skelSubst db (C.mapC (\(MbLName mbn) -> elimEmptyMb mbn) fvs)) mbLambdaLift :: Mb c (Term a) -> Mb c (Decls a)-mbLambdaLift = mbToplevel $(superComb [| lambdaLift |])+mbLambdaLift = mbApplyCl $(mkClosed [| lambdaLift |])
@@ -46,14 +46,14 @@ tpretty :: Term a -> String tpretty t = pretty' (emptyMb t) C.empty 0 where pretty' :: Mb c (Term a) -> MapC StringF c -> Int -> String- pretty' [nuQQ| Var b |] varnames n =+ pretty' [nuP| Var b |] varnames n = case mbNameBoundP b of Left pf -> unStringF (C.lookup pf varnames) Right n -> "(free-var " ++ show n ++ ")"- pretty' [nuQQ| Lam b |] varnames n =+ pretty' [nuP| Lam b |] varnames n = let x = "x" ++ show n in- "(\\" ++ x ++ "." ++ pretty' (combineMb b) (varnames :> (StringF x)) (n+1) ++ ")"- pretty' [nuQQ| App b1 b2 |] varnames n =+ "(\\" ++ x ++ "." ++ pretty' (mbCombine b) (varnames :> (StringF x)) (n+1) ++ ")"+ pretty' [nuP| App b1 b2 |] varnames n = "(" ++ pretty' b1 varnames n ++ " " ++ pretty' b2 varnames n ++ ")" ------------------------------------------------------------@@ -93,11 +93,11 @@ pretty t = mpretty (emptyMb t) C.empty mpretty :: Mb c (DTerm a) -> MapC StringF c -> String-mpretty [nuQQ| TVar b |] varnames =+mpretty [nuP| TVar b |] varnames = mprettyName (mbNameBoundP b) varnames-mpretty [nuQQ| TDVar b |] varnames =+mpretty [nuP| TDVar b |] varnames = mprettyName (mbNameBoundP b) varnames-mpretty [nuQQ| TApp b1 b2 |] varnames =+mpretty [nuP| TApp b1 b2 |] varnames = "(" ++ mpretty b1 varnames ++ " " ++ mpretty b2 varnames ++ ")" @@ -111,17 +111,17 @@ "let\n" ++ (mdecls_pretty (emptyMb decls) C.empty 0) mdecls_pretty :: Mb c (Decls a) -> MapC StringF c -> Int -> String-mdecls_pretty [nuQQ| Decls_Base t |] varnames n =+mdecls_pretty [nuP| Decls_Base t |] varnames n = "in " ++ (mpretty t varnames)-mdecls_pretty [nuQQ| Decls_Cons decl rest |] varnames n =+mdecls_pretty [nuP| Decls_Cons decl rest |] varnames n = let fname = "F" ++ show n in fname ++ " " ++ (mdecl_pretty decl varnames 0) ++ "\n"- ++ mdecls_pretty (combineMb rest) (varnames :> (StringF fname)) (n+1)+ ++ mdecls_pretty (mbCombine rest) (varnames :> (StringF fname)) (n+1) mdecl_pretty :: Mb c (Decl a) -> MapC StringF c -> Int -> String-mdecl_pretty [nuQQ| Decl_One t|] varnames n =+mdecl_pretty [nuP| Decl_One t|] varnames n = let vname = "x" ++ show n in- vname ++ " = " ++ mpretty (combineMb t) (varnames :> StringF vname)-mdecl_pretty [nuQQ| Decl_Cons d|] varnames n =+ vname ++ " = " ++ mpretty (mbCombine t) (varnames :> StringF vname)+mdecl_pretty [nuP| Decl_Cons d|] varnames n = let vname = "x" ++ show n in- vname ++ " " ++ mdecl_pretty (combineMb d) (varnames :> StringF vname) (n+1)+ vname ++ " " ++ mdecl_pretty (mbCombine d) (varnames :> StringF vname) (n+1)
@@ -28,7 +28,7 @@ An @Mb ctx b@ is a multi-binding that binds exactly one name for each type in @ctx@, where @ctx@ has the form @'Nil' ':>' t1 ':>' ... ':>' tn@. -}-data Mb ctx b = MkMb [Int] b deriving Typeable+data Mb ctx b = MkMb (MapC Name ctx) b deriving Typeable {- instance Typeable a => Typeable (Mb ctx a) where@@ -37,6 +37,18 @@ -} +{-|+ The type @Cl a@ represents a closed term of type @a@,+ i.e., an expression of type @a@ with no free (Haskell) variables.+ Since this cannot be checked directly in the Haskell type system,+ the @Cl@ data type is hidden, and the user can only create+ closed terms using Template Haskell, through the 'mkClosed'+ operator.+-}+newtype Cl a = Cl { unCl :: a }+++ -- building an arbitrary InCtx proof with a given length -- (this is used internally in HobbitLib) @@ -71,7 +83,7 @@ -- unsafely convert a list of Ints, used to represent names, to -- names of certain, given types; note that the first name in the -- list becomes the last name in the output, with the same reversal--- used in the Mb representation (see, e.g., combineMb)+-- used in the Mb representation (see, e.g., mbCombine) unsafeNamesFromInts :: [Int] -> MapC Name ctx unsafeNamesFromInts [] = unsafeCoerce Nil unsafeNamesFromInts (x:xs) =
@@ -0,0 +1,13 @@+{-# LANGUAGE Rank2Types #-}++module Data.Binding.Hobbits.InternalUtilities where++import qualified Data.Generics as SYB++++everywhereButM :: Monad m =>+ SYB.GenericQ Bool -> SYB.GenericM m -> SYB.GenericM m+everywhereButM q f x+ | q x = return x+ | otherwise = (SYB.gmapM (everywhereButM q f) x) >>= f
@@ -23,22 +23,25 @@ -- * Multi-binding constructors nu, emptyMb, nuMulti, -- * Operations on multi-bindings- elimEmptyMb, combineMb, separateMb, mbToProxy,+ elimEmptyMb, mbCombine, mbSeparate, mbToProxy, --mbRearrange, -- * Queries on names cmpName, mbCmpName, mbNameBoundP, -- * type classes for lifting data out of bindings Liftable(..), Liftable1(..), Liftable2(..), -- * Optimized, safe multi-binding eliminators- mbList+ mbList,+ -- * Synonyms+ nus ) where import Data.Type.List+import Data.Type.List.Map import qualified Data.Type.List.Proof.Member as Mem-import qualified Data.Type.List.Proof.Append as App+--import qualified Data.Type.List.Proof.Append as App import Data.Binding.Hobbits.Internal-import qualified Data.Binding.Hobbits.Internal as I+--import qualified Data.Binding.Hobbits.Internal as I -import Data.List (elemIndex)+--import Data.List (elemIndex) import Unsafe.Coerce (unsafeCoerce) @@ -52,10 +55,17 @@ instance Show (Name a) where showsPrec _ (MkName n) = showChar '#' . shows n . showChar '#' +instance Show (MapC Name c) where+ show mapc = "[" ++ (helper mapc) ++ "]"+ where+ helper :: MapC Name c -> String+ helper Nil = ""+ helper (ns :> n) = helper ns ++ ", " ++ show n+ -- note: we reverse l to show the inner-most bindings last instance Show a => Show (Mb c a) where- showsPrec p (MkMb l b) = showParen (p > 10) $- showChar '#' . shows (reverse l) . showChar '.' . shows b+ showsPrec p (MkMb names b) = showParen (p > 10) $+ showChar '#' . shows names . showChar '.' . shows b -- README: we pass f to fresh_name to avoid let-floating the results -- of fresh_name (which would always give the same name for each nu)@@ -70,29 +80,38 @@ body is the result of @f n@. -} nu :: (Name a -> b) -> Binding a b-nu f = let n = fresh_name f in n `seq` MkMb [n] (f (MkName n))+nu f = let n = fresh_name f in n `seq` MkMb (Nil :> MkName n) (f (MkName n)) -- README: inner-most bindings come FIRST -- | Combines a binding inside another binding into a single binding.-combineMb :: Mb c1 (Mb c2 b) -> Mb (c1 :++: c2) b-combineMb (MkMb l1 (MkMb l2 b)) = MkMb (l2 ++ l1) b+mbCombine :: Mb c1 (Mb c2 b) -> Mb (c1 :++: c2) b+mbCombine (MkMb l1 (MkMb l2 b)) = MkMb (append l1 l2) b {-| Separates a binding into two nested bindings. The first argument, of type @'Append' c1 c2 c@, is a \"phantom\" argument to indicate how the context @c@ should be split. -}-separateMb :: Append c1 c2 c -> Mb c a -> Mb c1 (Mb c2 a)-separateMb app (MkMb l a) = MkMb d (MkMb t a) where- (d, t) = splitAt (App.length app) l+mbSeparate :: Append c1 c2 c -> Mb c a -> Mb c1 (Mb c2 a)+mbSeparate app (MkMb l a) = MkMb d (MkMb t a) where+ (d, t) = split app l -- | Returns a proxy object that enumerates all the types in ctx. mbToProxy :: Mb ctx a -> MapC Proxy ctx-mbToProxy (MkMb l _) = unsafeProxyFromLen (length l)+mbToProxy (MkMb l _) = mapC (\_ -> Proxy) l +{- README: this is unsafe, because the two bindings could share names+{- |+ Take a multi-binding inside another multi-binding and move the+ outer binding inside the ineer one.+-}+mbRearrange :: Mb ctx1 (Mb ctx2 a) -> Mb ctx2 (Mb ctx1 a)+mbRearrange (MkMb l1 (MkMb l2 a)) = MkMb l2 (MkMb l1 a)+-}+ -- | Creates an empty binding that binds 0 names. emptyMb :: a -> Mb Nil a-emptyMb t = MkMb [] t+emptyMb t = MkMb Nil t {-| The expression @nuMulti p f@ creates a multi-binding of zero or more@@ -105,15 +124,15 @@ nuMulti :: MapC f ctx -> (MapC Name ctx -> b) -> Mb ctx b nuMulti Nil f = emptyMb $ f Nil nuMulti (proxies :> proxy) f =- combineMb $ nuMulti proxies $ \names -> nu $ \n -> f (names :> n)+ mbCombine $ nuMulti proxies $ \names -> nu $ \n -> f (names :> n) {-| Eliminates an empty binding, returning its body. Note that @elimEmptyMb@ is the inverse of @emptyMb@. -} elimEmptyMb :: Mb Nil a -> a-elimEmptyMb (MkMb [] t) = t-elimEmptyMb _ = error "Should not happen! (elimEmptyMb)"+elimEmptyMb (MkMb Nil t) = t+--elimEmptyMb _ = error "Should not happen! (elimEmptyMb)" {-| @cmpName n m@ compares names @n@ and @m@ of types @Name a@ and @Name b@,@@ -142,10 +161,21 @@ > nu $ \n -> mbNameBoundP (nu $ \m -> n) == nu $ \n -> Right n -} mbNameBoundP :: Mb ctx (Name a) -> Either (Member ctx a) (Name a)-mbNameBoundP (MkMb names (MkName n)) = case elemIndex n names of+mbNameBoundP (MkMb names n) = helper names n where+ helper :: MapC Name c -> Name a -> Either (Member c a) (Name a)+ helper Nil n = Right n+ helper (names :> (MkName i)) (MkName j) | i == j = unsafeCoerce $ Left Member_Base+ helper (names :> _) n = case helper names n of+ Left memb -> Left (Member_Step memb)+ Right n -> Right n+-- old implementation with lists+{-+case elemIndex n names of Nothing -> Right (MkName n) Just i -> Left (I.unsafeLookupC i)+-} + {-| Compares two names inside bindings, taking alpha-equivalence into account; i.e., if both are the @i@th name, or both are the same name@@ -173,13 +203,6 @@ instance Liftable Char where mbLift (MkMb _ c) = c -{--instance Liftable a => Liftable [a] where- mbLift (MkMb _ []) = []- mbLift (MkMb names (x : xs)) =- (mbLift (MkMb names x)) : (mbLift (MkMb names xs))--}- instance Liftable (Member c a) where mbLift (MkMb _ mem) = mem @@ -193,6 +216,11 @@ instance (Liftable1 f, Liftable a) => Liftable (f a) where mbLift = mbLift1 +instance Liftable1 [] where+ mbLift1 (MkMb _ []) = []+ mbLift1 (MkMb names (x : xs)) =+ (mbLift (MkMb names x)) : (mbLift1 (MkMb names xs))+ {-| The class @Liftable2 f@ gives a lifting function for each type @f a b@ when @a@ and @b@ are @Liftable@.@@ -207,3 +235,8 @@ mbList :: Mb c [a] -> [Mb c a] mbList (MkMb names []) = [] mbList (MkMb names (x : xs)) = (MkMb names x) : (mbList (MkMb names xs))++++-- | @nus = nuMulti@+nus x = nuMulti x
@@ -0,0 +1,235 @@+{-# LANGUAGE GADTs, TypeOperators, FlexibleInstances, OverlappingInstances #-}++-- |+-- Module : Data.Binding.Hobbits.Mb+-- Copyright : (c) 2011 Edwin Westbrook, Nicolas Frisby, and Paul Brauner+--+-- License : BSD3+--+-- Maintainer : emw4@rice.edu+-- Stability : experimental+-- Portability : GHC+--+-- This module defines multi-bindings as the type 'Mb', as well as a number of+-- operations on multi-bindings. See the paper E. Westbrook, N. Frisby,+-- P. Brauner, \"Hobbits for Haskell: A Library for Higher-Order Encodings in+-- Functional Programming Languages\" for more information.++module Data.Binding.Hobbits.Mb (+ -- * Abstract types+ Name(), -- hides Name implementation+ Binding(), -- hides Binding implementation+ Mb(), -- hides MultiBind implementation+ -- * Multi-binding constructors+ nu, emptyMb, nuMulti,+ -- * Operations on multi-bindings+ elimEmptyMb, combineMb, mbSeparate, mbToProxy, mbRearrange,+ -- * Queries on names+ cmpName, mbCmpName, mbNameBoundP,+ -- * type classes for lifting data out of bindings+ Liftable(..), Liftable1(..), Liftable2(..),+ -- * Optimized, safe multi-binding eliminators+ mbList+) where++import Data.Type.List+import Data.Type.List.Map+import qualified Data.Type.List.Proof.Member as Mem+--import qualified Data.Type.List.Proof.Append as App+import Data.Binding.Hobbits.Internal+--import qualified Data.Binding.Hobbits.Internal as I++--import Data.List (elemIndex)++import Unsafe.Coerce (unsafeCoerce)++-------------------------------------------------------------------------------+-- bindings+-------------------------------------------------------------------------------++-- | A @Binding@ is simply a multi-binding that binds one name+type Binding a = Mb (Nil :> a)++instance Show (Name a) where+ showsPrec _ (MkName n) = showChar '#' . shows n . showChar '#'++instance Show (MapC Name c) where+ show mapc = "[" ++ (helper mapc) ++ "]"+ where+ helper :: MapC Name c -> String+ helper Nil = ""+ helper (ns :> n) = helper ns ++ ", " ++ show n++-- note: we reverse l to show the inner-most bindings last+instance Show a => Show (Mb c a) where+ showsPrec p (MkMb names b) = showParen (p > 10) $+ showChar '#' . shows names . showChar '.' . shows b++-- README: we pass f to fresh_name to avoid let-floating the results+-- of fresh_name (which would always give the same name for each nu)+-- README: is *is* ok to do CSE on multiple copies of nu, because+-- the programmer cannot tell if two distinct (non-nested) nus get the+-- same fresh integer, and two nus that look the same to the CSE engine+-- cannot be nested+-- README: it *is* ok to inline nu because we don't care in+-- what order fresh names are created+{-|+ @nu f@ creates a binding which binds a fresh name @n@ and whose+ body is the result of @f n@.+-}+nu :: (Name a -> b) -> Binding a b+nu f = let n = fresh_name f in n `seq` MkMb (Nil :> MkName n) (f (MkName n))++-- README: inner-most bindings come FIRST+-- | Combines a binding inside another binding into a single binding.+combineMb :: Mb c1 (Mb c2 b) -> Mb (c1 :++: c2) b+combineMb (MkMb l1 (MkMb l2 b)) = MkMb (append l1 l2) b++{-|+ Separates a binding into two nested bindings. The first argument, of+ type @'Append' c1 c2 c@, is a \"phantom\" argument to indicate how+ the context @c@ should be split.+-}+separateMb :: Append c1 c2 c -> Mb c a -> Mb c1 (Mb c2 a)+separateMb app (MkMb l a) = MkMb d (MkMb t a) where+ (d, t) = split app l++-- | Returns a proxy object that enumerates all the types in ctx.+mbToProxy :: Mb ctx a -> MapC Proxy ctx+mbToProxy (MkMb l _) = mapC (\_ -> Proxy) l++{- README: this is unsafe, because the two bindings could share names+{- |+ Take a multi-binding inside another multi-binding and move the+ outer binding inside the ineer one.+-}+mbRearrange :: Mb ctx1 (Mb ctx2 a) -> Mb ctx2 (Mb ctx1 a)+mbRearrange (MkMb l1 (MkMb l2 a)) = MkMb l2 (MkMb l1 a)+-}++-- | Creates an empty binding that binds 0 names.+emptyMb :: a -> Mb Nil a+emptyMb t = MkMb Nil t++{-|+ The expression @nuMulti p f@ creates a multi-binding of zero or more+ names, one for each element of the vector @p@. The bound names are+ passed the names to @f@, which returns the body of the+ multi-binding. The argument @p@, of type @'Mb' f ctx@, acts as a+ \"phantom\" argument, used to reify the list of types @ctx@ at the+ term level; thus it is unimportant what the type function @f@ is.+-}+nuMulti :: MapC f ctx -> (MapC Name ctx -> b) -> Mb ctx b+nuMulti Nil f = emptyMb $ f Nil+nuMulti (proxies :> proxy) f =+ combineMb $ nuMulti proxies $ \names -> nu $ \n -> f (names :> n)++{-|+ Eliminates an empty binding, returning its body. Note that+ @elimEmptyMb@ is the inverse of @emptyMb@.+-}+elimEmptyMb :: Mb Nil a -> a+elimEmptyMb (MkMb Nil t) = t+--elimEmptyMb _ = error "Should not happen! (elimEmptyMb)"++{-|+ @cmpName n m@ compares names @n@ and @m@ of types @Name a@ and @Name b@,+ respectively. When they are equal, @Some e@ is returned for @e@ a proof+ of type @a :=: b@ that their types are equal. Otherwise, @None@ is returned.++ For example:++> nu $ \n -> nu $ \m -> cmpName n n == nu $ \n -> nu $ \m -> Some Refl+> nu $ \n -> nu $ \m -> cmpName n m == nu $ \n -> nu $ \m -> None+-}+cmpName :: Name a -> Name b -> Maybe (a :=: b)+cmpName (MkName n1) (MkName n2)+ | n1 == n2 = Just $ unsafeCoerce Refl+ | otherwise = Nothing++{-|+ Checks if a name is bound in a multi-binding, returning @Left mem@+ when the name is bound, where @mem@ is a proof that the type of the+ name is in the type list for the multi-binding, and returning+ @Right n@ when the name is not bound, where @n@ is the name.++ For example:++> nu $ \n -> mbNameBoundP (nu $ \m -> m) == nu $ \n -> Left Member_Base+> nu $ \n -> mbNameBoundP (nu $ \m -> n) == nu $ \n -> Right n+-}+mbNameBoundP :: Mb ctx (Name a) -> Either (Member ctx a) (Name a)+mbNameBoundP (MkMb names n) = helper names n where+ helper :: MapC Name c -> Name a -> Either (Member c a) (Name a)+ helper Nil n = Right n+ helper (names :> (MkName i)) (MkName j) | i == j = unsafeCoerce $ Left Member_Base+ helper (names :> _) n = case helper names n of+ Left memb -> Left (Member_Step memb)+ Right n -> Right n+-- old implementation with lists+{-+case elemIndex n names of+ Nothing -> Right (MkName n)+ Just i -> Left (I.unsafeLookupC i)+-}+++{-|+ Compares two names inside bindings, taking alpha-equivalence into+ account; i.e., if both are the @i@th name, or both are the same name+ not bound in their respective multi-bindings, then they compare as+ equal. The return values are the same as for 'cmpName', so that+ @Some Refl@ is returned when the names are equal and @Nothing@ is+ returned when they are not.+-}+mbCmpName :: Mb c (Name a) -> Mb c (Name b) -> Maybe (a :=: b)+mbCmpName b1 b2 = case (mbNameBoundP b1, mbNameBoundP b2) of+ (Left mem1, Left mem2) -> Mem.same mem1 mem2+ (Right n1, Right n2) -> cmpName n1 n2+ _ -> Nothing++{-|+ The class @Liftable a@ gives a \"lifting function\" for a, which can+ take any data of type @a@ out of a multi-binding of type @'Mb' ctx a@.+-}+class Liftable a where+ mbLift :: Mb ctx a -> a++instance Liftable Int where+ mbLift (MkMb _ i) = i++instance Liftable Char where+ mbLift (MkMb _ c) = c++instance Liftable (Member c a) where+ mbLift (MkMb _ mem) = mem++{-|+ The class @Liftable1 f@ gives a lifting function for each type @f a@+ when @a@ itself is @Liftable@.+-}+class Liftable1 f where+ mbLift1 :: Liftable a => Mb ctx (f a) -> f a++instance (Liftable1 f, Liftable a) => Liftable (f a) where+ mbLift = mbLift1++instance Liftable1 [] where+ mbLift1 (MkMb _ []) = []+ mbLift1 (MkMb names (x : xs)) =+ (mbLift (MkMb names x)) : (mbLift1 (MkMb names xs))++{-|+ The class @Liftable2 f@ gives a lifting function for each type @f a b@+ when @a@ and @b@ are @Liftable@.+-}+class Liftable2 f where+ mbLift2 :: (Liftable a, Liftable b) => Mb ctx (f a b) -> f a b++instance (Liftable2 f, Liftable a) => Liftable1 (f a) where+ mbLift1 = mbLift2++-- | Lift a list (but not its elements) out of a multi-binding+mbList :: Mb c [a] -> [Mb c a]+mbList (MkMb names []) = []+mbList (MkMb names (x : xs)) = (MkMb names x) : (mbList (MkMb names xs))
@@ -1,4 +1,4 @@-{-# LANGUAGE GADTs, RankNTypes, TypeOperators, ViewPatterns, TypeFamilies, FlexibleInstances, FlexibleContexts, TemplateHaskell #-}+{-# LANGUAGE GADTs, RankNTypes, TypeOperators, ViewPatterns, TypeFamilies, FlexibleInstances, FlexibleContexts, TemplateHaskell, UndecidableInstances, ScopedTypeVariables #-} {-| @@ -10,9 +10,10 @@ -} module Data.Binding.Hobbits.NuElim (- nuWithElimMulti, nuWithElim, nuWithElim1,- NuElim(..), mkNuElimData, NuElimList(..),- NuElimProof(),+ mbApply, mbMapAndSwap, mbRearrange,+ nuMultiWithElim, nuWithElim, nuMultiWithElim1, nuWithElim1,+ NuElim(..), mkNuElimData, NuElimList(..), NuElim1(..),+ NuElimProof() ) where --import Data.Data@@ -20,6 +21,7 @@ --import Data.Binding.Hobbits.Context import Data.Binding.Hobbits.Mb import Data.Type.List+import Data.Type.List.Map import Language.Haskell.TH hiding (Name) import qualified Language.Haskell.TH as TH --import Unsafe.Coerce (unsafeCoerce)@@ -95,12 +97,15 @@ instance NuElim Char where nuElimProof = NuElimData (NuElimDataProof $ (\c1 c2 -> id)) -instance NuElim a => NuElim [a] where- nuElimProof = NuElimData (NuElimDataProof $ (\c1 c2 -> map (mapNames c1 c2)))- instance (NuElim a, NuElim b) => NuElim (a,b) where nuElimProof = NuElimData (NuElimDataProof $ (\c1 c2 (a,b) -> (mapNames c1 c2 a, mapNames c1 c2 b))) +instance (NuElim a, NuElim b, NuElim c) => NuElim (a,b,c) where+ nuElimProof = NuElimData (NuElimDataProof $ (\c1 c2 (a,b,c) -> (mapNames c1 c2 a, mapNames c1 c2 b, mapNames c1 c2 c)))++instance (NuElim a, NuElim b, NuElim c, NuElim d) => NuElim (a,b,c,d) where+ nuElimProof = NuElimData (NuElimDataProof $ (\c1 c2 (a,b,c,d) -> (mapNames c1 c2 a, mapNames c1 c2 b, mapNames c1 c2 c, mapNames c1 c2 d)))+ instance (NuElim a, NuElim b) => NuElim (Either a b) where nuElimProof = NuElimData (NuElimDataProof@@ -108,7 +113,10 @@ Left l -> Left (mapNames c1 c2 l) Right r -> Right (mapNames c1 c2 r))) +instance NuElim a => NuElim [a] where+ nuElimProof = NuElimData (NuElimDataProof $ (\c1 c2 -> map (mapNames c1 c2))) + {- type family NuElimListProof args type instance NuElimListProof Nil = ()@@ -125,17 +133,41 @@ nuElimListProof = (nuElimListProof, nuElimProof) -} +data NuElimObj a = NuElim a => NuElimObj ()+ -- the NuElimList class, for saying that NuElim holds for a context of types class NuElimList args where- nuElimListProof :: MapC NuElimProof args+ nuElimListProof :: MapC NuElimObj args instance NuElimList Nil where nuElimListProof = Nil instance (NuElimList args, NuElim a) => NuElimList (args :> a) where- nuElimListProof = nuElimListProof :> nuElimProof+ nuElimListProof = nuElimListProof :> NuElimObj () +class NuElim1 f where+ nuElimProof1 :: NuElim a => NuElimObj (f a)++-- README: deriving NuElim from NuElim1 leads to overlapping instances+-- for, e.g., Name a+{-+instance (NuElim1 f, NuElim a) => NuElim (f a) where+ nuElimProof = nuElimProof1 nuElimProof+-}++instance (NuElim1 f, NuElimList ctx) => NuElim (MapC f ctx) where+ nuElimProof = NuElimData $ NuElimDataProof $ helper nuElimListProof where+ helper :: NuElim1 f =>+ MapC NuElimObj args -> MapC Name ctx1 -> MapC Name ctx1 ->+ MapC f args -> MapC f args+ helper Nil c1 c2 Nil = Nil+ helper (proofs :> NuElimObj ()) c1 c2 (elems :> (elem :: f a)) =+ case nuElimProof1 :: NuElimObj (f a) of+ NuElimObj () ->+ (helper proofs c1 c2 elems) :>+ mapNames c1 c2 elem+ -- filter out names from a MapC Name {- data FilterRes where@@ -151,6 +183,34 @@ filterNames (names1 :> n1) -} +{-|+ Applies a function in a multi-binding to an argument in a+ multi-binding that binds the same number and types of names.+-}+mbApply :: (NuElim a, NuElim b) => Mb ctx (a -> b) -> Mb ctx a -> Mb ctx b+mbApply (MkMb names f) (MkMb names' a) =+ let names'' = fresh_names names in -- FIXME HERE+ MkMb names $ (mapNames names names'' f) (mapNames names' names'' a) where+ fresh_names :: MapC Name ctx -> MapC Name ctx+ fresh_names Nil = Nil+ fresh_names (names :> n) = fresh_names names :> MkName (fresh_name n)++mbMapAndSwap :: NuElim a => (Mb ctx1 a -> b) -> Mb ctx1 (Mb ctx2 a) -> Mb ctx2 b+mbMapAndSwap = undefined+{-+mbMapAndSwap (MkMb names f) (MkMb names' a) =+ MkMb names $ f $ mapNames names' names a+-}++{-|+ Take a multi-binding inside another multi-binding and move the+ outer binding inside the inner one.+-}+mbRearrange :: NuElim a => Mb ctx1 (Mb ctx2 a) -> Mb ctx2 (Mb ctx1 a)+mbRearrange = mbMapAndSwap id+++ -- FIXME: add more examples!! {-| The expression @nuWithElimMulti args f@ takes a sequence @args@ of@@ -179,9 +239,30 @@ > nuWithElimMulti ('mbToProxy' f) ('Nil' :> f :> a) > (\_ ('Nil' :> 'Identity' f' :> 'Identity' a') -> f' a') -}-nuWithElimMulti :: NuElimList args => MapC f ctx -> MapC (Mb ctx) args ->+nuMultiWithElim :: (NuElimList args, NuElim b) =>+ MapC f ctx -> MapC (Mb ctx) args -> (MapC Name ctx -> MapC Identity args -> b) -> Mb ctx b-nuWithElimMulti nameProxies args f =+nuMultiWithElim nameProxies args f =+ mbMultiApply (nuMulti nameProxies+ (\names -> (mapCToAddArrows args (f names)))) args nuElimListProof where+ mapCToAddArrows :: MapC f args -> (MapC Identity args -> b) ->+ AddArrows args b+ mapCToAddArrows Nil f = f Nil+ mapCToAddArrows (args :> _) f = mapCToAddArrows args (\args' x -> f (args' :> Identity x))+ mbMultiApply :: NuElim b => Mb ctx (AddArrows args b) ->+ MapC (Mb ctx) args -> MapC NuElimObj args -> Mb ctx b+ mbMultiApply mbF Nil Nil = mbF+ mbMultiApply mbF (args :> arg) (proofs :> NuElimObj ()) =+ mbApply (mbMultiApply mbF args proofs) arg+++type family AddArrows ctx a+type instance AddArrows Nil a = a+type instance AddArrows (ctx :> b) a = AddArrows ctx (b -> a)++-- README: old implementation+{-+nuMultiWithElim nameProxies args f = nuMulti nameProxies $ \names -> f names (mapArgs nuElimListProof args names) where mapArgs :: MapC NuElimProof args -> MapC (Mb ctx) args ->@@ -194,28 +275,40 @@ mapNamesSubst :: NuElimProof arg -> MapC Name ctx -> Mb ctx arg -> arg mapNamesSubst proof names (MkMb namesOld arg) =- mapNamesPf proof (unsafeNamesFromInts namesOld) names arg-+ mapNamesPf proof namesOld names arg+-} {-|- Similar to 'nuWithElimMulti' but binds only one name.+ Similar to 'nuMultiWithElim' but binds only one name. -}-nuWithElim :: NuElimList args => MapC (Mb (Nil :> a)) args ->+nuWithElim :: (NuElimList args, NuElim b) => MapC (Mb (Nil :> a)) args -> (Name a -> MapC Identity args -> b) -> Binding a b nuWithElim args f =- nuWithElimMulti (Nil :> Proxy) args (\(Nil :> n) -> f n)+ nuMultiWithElim (Nil :> Proxy) args (\(Nil :> n) -> f n) {-|- Similar to 'nuWithElimMulti' but takes only one argument that binds+ Similar to 'nuMultiWithElim' but takes only one argument+-}+nuMultiWithElim1 :: (NuElim arg, NuElim b) => MapC f ctx -> Mb ctx arg ->+ (MapC Name ctx -> arg -> b) -> Mb ctx b+nuMultiWithElim1 nameProxies arg f =+ nuMultiWithElim nameProxies (Nil :> arg)+ (\names (Nil :> Identity arg) -> f names arg)+++{-|+ Similar to 'nuMultiWithElim' but takes only one argument that binds a single name. -}-nuWithElim1 :: NuElim arg => Binding a arg ->+nuWithElim1 :: (NuElim arg, NuElim b) => Binding a arg -> (Name a -> arg -> b) -> Binding a b-nuWithElim1 (MkMb [nOld] arg) f =- nu $ \n -> f n (mapNames (Nil :> MkName nOld) (Nil :> n) arg)+nuWithElim1 (MkMb namesOld arg) f =+ nu $ \n -> f n (mapNames namesOld (Nil :> n) arg)+{- nuWithElim1 (MkMb _ arg) f = error "Internal error in nuWithElim1"+-} -- now we define some TH to create NuElimDataProofs@@ -292,9 +385,9 @@ tyBndrToName (KindedTV n _) = n -- fail for getNuElimInfo- getNuElimInfoFail t =+ getNuElimInfoFail t extraMsg = fail ("mkNuElimData: " ++ show t- ++ " is not a type constructor for a (G)ADT applied to zero or more distinct type variables")+ ++ " is not a type constructor for a (G)ADT applied to zero or more distinct type variables" ++ extraMsg) -- get info for conName (top-level call) getNuElimInfoTop t = getNuElimInfo [] [] t t@@ -304,25 +397,29 @@ do info <- reify tName case info of TyConI (DataD _ _ tyvarsReq constrs _) ->- let tyvarsRet = if tyvars == [] && ctx == []- then map tyBndrToName tyvarsReq- else tyvars in- return (ctx,- foldl AppT (ConT tName)- (map VarT tyvars),- tName, constrs, tyvarsRet)- _ -> getNuElimInfoFail topT+ success tyvarsReq constrs+ TyConI (NewtypeD _ _ tyvarsReq constr _) ->+ success tyvarsReq [constr]+ _ -> getNuElimInfoFail topT (": info for " ++ (show tName) ++ " = " ++ (show info))+ where+ success tyvarsReq constrs =+ let tyvarsRet = if tyvars == [] && ctx == []+ then map tyBndrToName tyvarsReq+ else tyvars in+ return (ctx,+ foldl AppT (ConT tName) (map VarT tyvars),+ tName, constrs, tyvarsRet) getNuElimInfo ctx tyvars topT (AppT f (VarT argName)) = if elem argName tyvars then- getNuElimInfoFail topT+ getNuElimInfoFail topT "" else getNuElimInfo ctx (argName:tyvars) topT f getNuElimInfo ctx tyvars topT (ForallT _ ctx' t) = getNuElimInfo (ctx ++ ctx') tyvars topT t - getNuElimInfo ctx tyvars topT t = getNuElimInfoFail topT+ getNuElimInfo ctx tyvars topT t = getNuElimInfoFail topT "" -- get the name from a data type getTCtor t = getTCtorHelper t t []
@@ -1,5 +1,3 @@-{-# LANGUAGE TemplateHaskell #-}- -- | -- Module : Data.Binding.Hobbits.PatternParser -- Copyright : (c) 2011 Edwin Westbrook, Nicolas Frisby, and Paul Brauner@@ -10,193 +8,26 @@ -- Stability : experimental -- Portability : GHC ----- A simple parser for Haskell patterns. Currently does not handle:------ - Record patterns @Pt { pointx = x }@------ - Signature patterns @p :: t@------ - View patterns @e -> p@+-- Using the haskell-src-meta package to parse Haskell patterns. -module Data.Binding.Hobbits.PatternParser (parsePattern, parseVar) where+module Data.Binding.Hobbits.PatternParser (parsePattern) where -import Text.ParserCombinators.Parsec import Language.Haskell.TH-import Data.Char +import qualified Language.Haskell.Exts.Parser as Meta -varStartChars = ['a'..'z']-ctorStartChars = ['A'..'Z']+import qualified Language.Haskell.Meta.Parse as Meta+import Language.Haskell.Exts.Extension (Extension(ViewPatterns))+import qualified Language.Haskell.Meta.Parse as Sloppy+import qualified Language.Haskell.Meta.Syntax.Translate as Translate -identChars = varStartChars ++ ctorStartChars ++ ['0'..'9'] ++ "'_"-infixChars = "!#$%&*+./<=>?@" -varParser :: GenParser Char st String-varParser =- do char1 <- oneOf varStartChars- char_rest <- many (oneOf identChars)- return (char1 : char_rest) -ctorParser :: GenParser Char st String-ctorParser =- do char1 <- oneOf ctorStartChars- char_rest <- many (oneOf identChars)- return (char1 : char_rest) -infixParser :: GenParser Char st String-infixParser =- do char1 <- char ':'- char_rest <- many (oneOf infixChars)- return (char1 : char_rest) -stringParser :: GenParser Char st String-stringParser =- do char '"'- res <- stringContentsParser- return res--stringContentsParser =- many (noneOf "\\\"") >>= \prefix ->- (char '"' >> return prefix)- <|>- (char '\\' >> do c <- anyChar- rest <- stringContentsParser- return $ prefix ++ [c] ++ rest)--charParser :: GenParser Char st Char-charParser =- do char '\''- c <- ((char '\\' >> anyChar) <|> anyChar)- char '\''- return c--digitsToInt digits = helper digits 0- where helper [] accum = accum- helper (digit:digits) accum =- helper digits (accum * 10 + (digitToInt digit))--intToRational :: Int -> Rational-intToRational = fromIntegral--digitsToFrac digits = helper digits- where helper [] = 0.0- helper (digit:digits) = ((helper digits) + (intToRational $ digitToInt digit)) / 10--numParser :: GenParser Char st Lit-numParser =- do base_digits <- many1 (oneOf ['0'..'9'])- ((do char '.'- frac_digits <- many1 (oneOf ['0'..'9'])- return (RationalL $ (intToRational $ digitsToInt base_digits) + digitsToFrac frac_digits))- <|> return (IntegerL $ fromIntegral $ digitsToInt base_digits))--litParser :: GenParser Char st Lit-litParser = (charParser >>= return . CharL) <|>- (stringParser >>= return . StringL) <|>- numParser--commaSepParser :: GenParser Char st [Pat]-commaSepParser =- (do first <- pattParser 0- rest <- (char ',' >> commaSepParser) <|> (return [])- return (first:rest)) <|> (return [])----- the int gives the "level":--- 0 = parse anything--- 1 = parse ctor args but not infix ops--- 2 = do not parse ctor args or infix ops-tokenParser :: Int -> GenParser Char st Pat-tokenParser i =- -- literals- (litParser >>= return . LitP) <|>-- -- wildcards- (char '_' >> return WildP) <|>-- -- bangs- (do char '!'- patt <- pattParser i- return $ BangP patt) <|>-- -- tildes- (do char '~'- patt <- pattParser i- return $ TildeP patt) <|>-- -- as-patterns- (try (do var <- varParser- wsParser- char '@'- patt <- pattParser i- return $ AsP (mkName var) patt)) <|>-- -- vars- (varParser >>= return . VarP . mkName) <|>-- -- tuples; NOTE: we parse any parenthesized expression as a tuple,- -- and remove the TupP constructor when there are no commas- (do char '('- tup <- commaSepParser- char ')'- return (case tup of- [] -> ConP '() []- [patt] -> patt- _ -> TupP tup)) <|>-- -- constructor applications- (do ctor <- ctorParser- args <- if i < 2 then many (try $ pattParser 2) else return []- return $ ConP (mkName ctor) args) <|>-- -- lists- (do char '['- elems <- commaSepParser- char ']'- return $ ListP elems)----wsParser :: GenParser Char st ()-wsParser = many (oneOf " \t\n\r") >> return ()--pattParser :: Int -> GenParser Char st Pat-pattParser i =- do wsParser- res <- if i == 0 then- -- infix constructor applications- try (do lhs <- pattParser 1- op <- infixParser- rhs <- pattParser 0- return $ ConP (mkName op) [lhs, rhs]) <|>- tokenParser i- else- tokenParser i- wsParser- return res--varOnlyParser :: GenParser Char st String-varOnlyParser = do wsParser- res <- varParser- wsParser- eof- return res---------------------------------------------- Finally, the external interface... ----------------------------------------------- | Parse a string into a Template Haskell pattern.-parsePattern str = case parse (pattParser 0) "" str of- Left err -> error $ show err- Right patt -> patt--{-|- Parse a string for a Haskell variable; return the string on success- (if the string is a valid Haskell variable) and signal an error- otherwise.--}-parseVar str = case parse varOnlyParser "" str of- Left err -> error $ show err- Right str -> str+parsePattern :: String -> String -> Either String Pat+parsePattern fn =+ fmap Translate.toPat . Meta.parseResultToEither .+ Meta.parsePatWithMode (Sloppy.myDefaultParseMode+ {Meta.parseFilename = fn,+ Meta.extensions = ViewPatterns : Sloppy.myDefaultExtensions})
@@ -10,62 +10,135 @@ -- Stability : experimental -- Portability : GHC ----- Defines a quasi-quoter for writing patterns that match the bodies--- of 'Mb' multi-bindings. Uses the--- "Data.Binding.Hobbits.PatternParser" module, and thus only supports--- the pattern forms listed there. If @P@ is a (supported) Haskell--- pattern, then @[nuQQ| P ]@ defines a pattern that will match an--- multi-binding whose body matches @P@. Any variables matched by @P@--- will remain inside the binding; thus, for example, in the pattern--- @[nuQQ| x |]@, @x@ matches the entire multi-binding.+-- Defines a quasi-quoter for writing patterns that match the bodies of 'Mb'+-- multi-bindings. Uses the haskell-src-exts parser. @[nuP| P ]@ defines a+-- pattern that will match a multi-binding whose body matches @P@. Any+-- variables matched by @P@ will remain inside the binding; thus, for example,+-- in the pattern @[nuP| x |]@, @x@ matches the entire multi-binding. -- -- Examples: ----- > case (nu Left) of [nuQQ| Left x |] -> x == nu id+-- > case (nu Left) of [nuP| Left x |] -> x == nu id --+-- [clP| P |] does the same for the Cl type, and [clNuP| P |] works for+-- both simultaneously: Cl (Mb ctx a). -module Data.Binding.Hobbits.QQ (nuQQ) where+module Data.Binding.Hobbits.QQ (nuP, clP, clNuP) where -import Data.Binding.Hobbits.Internal (Mb(..))+import qualified Data.Binding.Hobbits.InternalUtilities as IU+import Data.Binding.Hobbits.Internal (Mb(..), Cl(..)) import Data.Binding.Hobbits.PatternParser (parsePattern) import Language.Haskell.TH.Syntax as TH+import Language.Haskell.TH.Ppr as TH import Language.Haskell.TH.Quote -import Control.DeepSeq-import qualified Control.Exception as CE- import qualified Data.Generics as SYB+import Control.Monad.Writer (runWriterT, tell)+import Data.Monoid (Any(..)) ---------------------------------------------------------------- matching under binders using a quasi-quoter------------------------------------------------------------- -hobbitNamesPattVar n = mkName $ "hobbit$$names" ++ (show n) --- internPattVars replaces all subterms (VarP "x") with (MkMb ln -> VarP "x")-internPattVars :: TH.Name -> TH.Name -> Pat -> Pat-internPattVars mb ln = SYB.everywhere (SYB.mkT wrapVars) where- mkView p = ViewP (InfixE- (Just $ VarE 'same_ctx `AppE` VarE mb)- (VarE '(.))- (Just $ ConE 'MkMb `AppE` VarE ln)) p- wrapVars p @ (VarP _) = mkView p- wrapVars (AsP v p) = mkView (AsP v (ConP 'MkMb [WildP, p]))- wrapVars p = p -syb_rnf :: SYB.Data a => a -> ()-syb_rnf = (`seq` ()) . rnf . SYB.gmapQ syb_rnf +compose :: Exp -> Exp -> Exp+compose f g = VarE '(.) `AppE` f `AppE` g++patQQ n pat = QuasiQuoter (err "Exp") pat (err "Type") (err "Decs")+ where err s = error $ "QQ `" ++ n ++ "' is for patterns, not " ++ s ++ "."++++++data WrapKit =+ -- _add adds structure just before binding the name (i.e. on VarP)+ -- _rm removes structure that was added for the @ patterns+ -- _top removes structure at the top of the whole pattern+ WrapKit {_add :: Exp, _rm :: Pat -> Pat, _top :: Bool -> Pat -> Pat}++outsideKit (WrapKit {_add = addO, _rm = rmO, _top = topO})+ (WrapKit {_add = addI, _rm = rmI, _top = topI}) =+ WrapKit {_add = addO `compose` addI,+ _rm = rmO . rmI,+ _top = \b -> topO b . topI b}++-- wrapVars changes the types of names bound in a pattern+wrapVars :: Monad m => WrapKit -> Pat -> m Pat+wrapVars (WrapKit {_add = add, _rm = rm, _top = top}) pat = do+ (pat', Any usedAdd) <- runWriterT m+ return $ top usedAdd pat'+ where+ m = IU.everywhereButM (SYB.mkQ False isExp) (SYB.mkM w) pat+ where isExp :: Exp -> Bool+ -- don't recur into the expression part of view patterns+ isExp _ = True++ -- this should be called if the 'add' function is ever used+ hit x = tell (Any True) >> return x++ -- wraps up bound names+ w p@VarP{} = hit $ ViewP add p+ -- wraps for the bound name, then immediately unwraps+ -- for the rest of the pattern+ w (AsP v p) = hit $ ViewP add $ AsP v $ rm p+ -- requires the expression to be closed+ w (ViewP (VarE n) p) = return $ ViewP (VarE 'unCl `AppE` VarE n) p+ w (ViewP e _) = fail $ "view function must be a single name: `" ++ show (TH.ppr e) ++ "'"+ w p = return p++++++parseHere :: String -> Q Pat+parseHere s = do+ fn <- loc_filename `fmap` location+ case parsePattern fn s of+ Left e -> error $ "Parse error: `" ++ e +++ "'\n\n\t when parsing pattern: `" ++ s ++ "'."+ Right p -> return p+++++ same_ctx :: Mb ctx a -> Mb ctx b -> Mb ctx b same_ctx _ x = x -nuQQPatt :: String -> Q Pat-nuQQPatt str = do+nuKit mb ln = WrapKit {_add = add, _rm = rm, _top = top} where+ add = (VarE 'same_ctx `AppE` VarE mb) `compose`+ (ConE 'MkMb `AppE` VarE ln)++ rm p = ConP 'MkMb [WildP, p]++ top b p = if b then AsP mb $ ConP 'MkMb [VarP ln, p] else rm p++++++nuP = patQQ "nuP" $ \s -> do mb <- newName "mb" ln <- newName "bs"- pat <- runIO $ CE.evaluate (let x = parsePattern str in syb_rnf x `seq` x) `catch` \err ->- (error $ "error parsing string |" ++ str ++ "|: " ++ show err)- return $ AsP mb $ ConP 'MkMb [VarP ln, internPattVars mb ln pat] -nuQQ = QuasiQuoter (error "nuQQ Exp") nuQQPatt (error "nuQQ Type") (error "nuQQ Decs")+ parseHere s >>= wrapVars (nuKit mb ln)++++++clKit = WrapKit {_add = ConE 'Cl, _rm = rm, _top = const rm}+ where rm p = ConP 'Cl [p]++clP = patQQ "clP" $ (>>= wrapVars clKit) . parseHere++++++clNuP = patQQ "clNuP" $ \s -> do+ mb <- newName "mb"+ ln <- newName "bs"++ parseHere s >>= wrapVars (clKit `outsideKit` nuKit mb ln)
@@ -1,66 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}---- |--- Module : Data.Binding.Hobbits.SuperComb--- Copyright : (c) 2011 Edwin Westbrook, Nicolas Frisby, and Paul Brauner------ License : BSD3------ Maintainer : emw4@rice.edu--- Stability : experimental--- Portability : GHC------ This module uses Template Haskell to distinguish super-combinators, so that--- the library can trust such functions to not contain any @Name@ values in--- their closure.--module Data.Binding.Hobbits.SuperComb (- -- * Abstract types- SuperComb(),- -- * Operators involving 'SuperComb'- superComb, mbToplevel,-) where--import Data.Binding.Hobbits.Internal (Mb(..))--import Language.Haskell.TH as TH--import qualified Data.Generics as SYB-import qualified Language.Haskell.TH.Syntax as TH----------------------------------------------------------------- applying top-level functions under binders---------------------------------------------------------------{-|- The type @SuperComb a@ represents a super-combinator of type @a@,- i.e., an expression of type @a@ with no free (Haskell) variables.- Since this cannot be checked directly in the Haskell type system,- the @SuperComb@ data type is hidden, and the user can only create- super-combinators using Template Haskell, through the 'superComb'- operator.--}-newtype SuperComb a = SuperComb { unSuperComb :: a }---- | An quoted expression is a CAF if all of its names are bound globally or--- within the quotation-isSuperComb :: Exp -> Bool-isSuperComb = SYB.everything (&&) (SYB.mkQ True nameOK) where- nameOK (TH.Name _ flav) = case flav of- TH.NameG {} -> True -- bound globally- TH.NameU {} -> True -- bound within this same quotation- _ -> False---- | @superComb@ is used with Template Haskell to create super-combinators;--- see documentation for 'mbToplevel' to see how it is used.-superComb :: Q Exp -> Q Exp-superComb m = do- e <- m- if isSuperComb e then return (TH.AppE (TH.ConE 'SuperComb) e) else fail ("not a super combinator:\n\t" ++ TH.pprint e)---- | @mbToplevel@ @f@ @b@ applies super-combinator @f@ to the body of--- multi-binding @b@. For example:------ > mbToplevel $(superComb [| f |]) (nu $ \n -> n) = nu f-mbToplevel :: SuperComb (a -> b) -> Mb ctx a -> Mb ctx b-mbToplevel f (MkMb names i) = MkMb names (unSuperComb f i)
@@ -25,7 +25,7 @@ ------------------------------------------------------------------------------- data Nil deriving Typeable-data r :> a deriving Typeable; infixr 5 :>+data r :> a deriving Typeable; infixl 5 :> type family (r1 :++: r2); infixr 5 :++: type instance r :++: Nil = r
@@ -51,6 +51,11 @@ mapC _ Nil = Nil mapC f (mc :> x) = mapC f mc :> f x +-- | Map a binary function to all pairs of elements of two 'MapC' vectors.+mapC2 :: (forall x. f x -> g x -> h x) -> MapC f c -> MapC g c -> MapC h c+mapC2 _ Nil Nil = Nil+mapC2 f (xs :> x) (ys :> y) = mapC2 f xs ys :> f x y+ -- | Append two 'MapC' vectors. append :: MapC f c1 -> MapC f c2 -> MapC f (c1 :++: c2) append mc Nil = mc@@ -64,7 +69,7 @@ -- | A version of 'mkAppend' that takes in a 'Proxy' argument. mkMonoAppend :: Proxy c1 -> MapC f c2 -> Append c1 c2 (c1 :++: c2)-mkMonoAppend tag = mkAppend+mkMonoAppend _ = mkAppend -- | Split a 'MapC' vector into two pieces. split :: Append c1 c2 c -> MapC f c -> (MapC f c1, MapC f c2)@@ -82,3 +87,8 @@ members Nil = Nil members (c :> _) = mapC Member_Step (members c) :> Member_Base++-- | Replace a single element of a 'MapC' vector.+replace :: MapC f c -> Member c a -> f a -> MapC f c+replace (xs :> _) Member_Base y = xs :> y+replace (xs :> x) (Member_Step memb) y = replace xs memb y :> x
@@ -16,6 +16,7 @@ module Data.Type.List.Proof.Append where import Data.Type.List.List+import Data.Type.Equality ((:=:)(..)) ------------------------------------------------------------ -- proofs about appended lists@@ -33,6 +34,11 @@ Append ctx1 ctx2 ex_ctx -> Append ex_ctx ctx3 ctx -> Append ctx1 (ctx2 :++: ctx3) ctx trans app Append_Base = app trans app (Append_Step app') = Append_Step (trans app app')++-- | Returns a proof that ctx :=: ctx1 :++: ctx2+appendPf :: Append ctx1 ctx2 ctx -> (ctx :=: ctx1 :++: ctx2)+appendPf Append_Base = Refl+appendPf (Append_Step app) = case appendPf app of Refl -> Refl -- | Returns the length of an 'Append' proof. length :: Append ctx1 ctx2 ctx3 -> Int
@@ -58,7 +58,7 @@ toEq _ = error "Should not happen! (toEq)" weakenL :: Proxy r1 -> Member r2 a -> Member (r1 :++: r2) a-weakenL tag Member_Base = Member_Base+weakenL _ Member_Base = Member_Base weakenL tag (Member_Step mem) = Member_Step (weakenL tag mem) same :: Member r a -> Member r b -> Maybe (a :=: b)
binary file changed (3836 → absent bytes)
binary file changed (1108 → absent bytes)
binary file changed (3362 → absent bytes)
binary file changed (10932 → absent bytes)
binary file changed (7931 → absent bytes)
binary file changed (41004 → absent bytes)
binary file changed (19387 → absent bytes)
binary file changed (31748 → absent bytes)
binary file changed (9087 → absent bytes)
binary file changed (42752 → absent bytes)
binary file changed (6247 → absent bytes)
binary file changed (17292 → absent bytes)
binary file changed (14405 → absent bytes)
binary file changed (31212 → absent bytes)
binary file changed (13119 → absent bytes)
binary file changed (73632 → absent bytes)
binary file changed (3526 → absent bytes)
binary file changed (164168 → absent bytes)
binary file changed (2942 → absent bytes)
binary file changed (20560 → absent bytes)
binary file changed (2421 → absent bytes)
binary file changed (9680 → absent bytes)
binary file changed (1379 → absent bytes)
binary file changed (1008 → absent bytes)
binary file changed (1403 → absent bytes)
binary file changed (1004 → absent bytes)
binary file changed (1631 → absent bytes)
binary file changed (4428 → absent bytes)
binary file changed (4376 → absent bytes)
binary file changed (14272 → absent bytes)
binary file changed (1508 → absent bytes)
binary file changed (1076 → absent bytes)
binary file changed (3213 → absent bytes)
binary file changed (7344 → absent bytes)
binary file changed (3329 → absent bytes)
binary file changed (11164 → absent bytes)
binary file changed (1644 → absent bytes)
binary file changed (4392 → absent bytes)
binary file changed (5556 → absent bytes)
binary file changed (17956 → absent bytes)
binary file changed (398976 → absent bytes)
@@ -1,29 +0,0 @@-module Paths_hobbits (- version,- getBinDir, getLibDir, getDataDir, getLibexecDir,- getDataFileName- ) where--import Data.Version (Version(..))-import System.Environment (getEnv)--version :: Version-version = Version {versionBranch = [1,0], versionTags = []}--bindir, libdir, datadir, libexecdir :: FilePath--bindir = "/Users/eddy/.cabal/bin"-libdir = "/Users/eddy/.cabal/lib/hobbits-1.0/ghc-7.0.1"-datadir = "/Users/eddy/.cabal/share/hobbits-1.0"-libexecdir = "/Users/eddy/.cabal/libexec"--getBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath-getBinDir = catch (getEnv "hobbits_bindir") (\_ -> return bindir)-getLibDir = catch (getEnv "hobbits_libdir") (\_ -> return libdir)-getDataDir = catch (getEnv "hobbits_datadir") (\_ -> return datadir)-getLibexecDir = catch (getEnv "hobbits_libexecdir") (\_ -> return libexecdir)--getDataFileName :: FilePath -> IO FilePath-getDataFileName name = do- dir <- getDataDir- return (dir ++ "/" ++ name)
@@ -1,58 +0,0 @@-/* DO NOT EDIT: This file is automatically generated by Cabal */--/* package base-4.3.0.0 */-#define VERSION_base "4.3.0.0"-#define MIN_VERSION_base(major1,major2,minor) (\- (major1) < 4 || \- (major1) == 4 && (major2) < 3 || \- (major1) == 4 && (major2) == 3 && (minor) <= 0)--/* package deepseq-1.1.0.2 */-#define VERSION_deepseq "1.1.0.2"-#define MIN_VERSION_deepseq(major1,major2,minor) (\- (major1) < 1 || \- (major1) == 1 && (major2) < 1 || \- (major1) == 1 && (major2) == 1 && (minor) <= 0)--/* package mtl-2.0.1.0 */-#define VERSION_mtl "2.0.1.0"-#define MIN_VERSION_mtl(major1,major2,minor) (\- (major1) < 2 || \- (major1) == 2 && (major2) < 0 || \- (major1) == 2 && (major2) == 0 && (minor) <= 1)--/* package parsec-3.1.1 */-#define VERSION_parsec "3.1.1"-#define MIN_VERSION_parsec(major1,major2,minor) (\- (major1) < 3 || \- (major1) == 3 && (major2) < 1 || \- (major1) == 3 && (major2) == 1 && (minor) <= 1)--/* package syb-0.3.3 */-#define VERSION_syb "0.3.3"-#define MIN_VERSION_syb(major1,major2,minor) (\- (major1) < 0 || \- (major1) == 0 && (major2) < 3 || \- (major1) == 0 && (major2) == 3 && (minor) <= 3)--/* package tagged-0.2.2.1 */-#define VERSION_tagged "0.2.2.1"-#define MIN_VERSION_tagged(major1,major2,minor) (\- (major1) < 0 || \- (major1) == 0 && (major2) < 2 || \- (major1) == 0 && (major2) == 2 && (minor) <= 2)--/* package template-haskell-2.5.0.0 */-#define VERSION_template_haskell "2.5.0.0"-#define MIN_VERSION_template_haskell(major1,major2,minor) (\- (major1) < 2 || \- (major1) == 2 && (major2) < 5 || \- (major1) == 2 && (major2) == 5 && (minor) <= 0)--/* package type-equality-0.1.0 */-#define VERSION_type_equality "0.1.0"-#define MIN_VERSION_type_equality(major1,major2,minor) (\- (major1) < 0 || \- (major1) == 0 && (major2) < 1 || \- (major1) == 0 && (major2) == 1 && (minor) <= 0)-
binary file changed (533160 → absent bytes)
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.Examples.LambdaLifting.Examples</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-Binding-Hobbits-Examples-LambdaLifting-Examples.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</p></div><div id="description"><p class="caption">Description</p><div class="doc empty"> </div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:ex1" class="def">ex1</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> ((b1 -> b) -> b1 -> b)</p></div><div class="top"><p class="src"><a name="v:ex2" class="def">ex2</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> ((((b2 -> b1) -> b2 -> b1) -> b) -> b)</p></div><div class="top"><p class="src"><a name="v:ex3" class="def">ex3</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> (b3 -> (((b3 -> b2 -> b1) -> b2 -> b1) -> b) -> b)</p></div><div class="top"><p class="src"><a name="v:ex4" class="def">ex4</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> (((b1 -> b) -> b2 -> b) -> (((b1 -> b) -> b2 -> b) -> b2 -> b1) -> b2 -> b1)</p></div><div class="top"><p class="src"><a name="v:ex5" class="def">ex5</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> (((b2 -> b1) -> b) -> (b2 -> b1) -> b)</p></div><div class="top"><p class="src"><a name="v:ex6" class="def">ex6</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">L</a> ((b -> b) -> a)) (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a)</p></div><div class="top"><p class="src"><a name="v:ex7" class="def">ex7</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">L</a> ((b2 -> b2) -> b1)) (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> ((b1 -> b) -> b))</p></div><div class="top"><p class="src"><a name="v:exP" class="def">exP</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> (((b1 -> b1) -> b) -> (b1 -> b1) -> b)</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.Examples.LambdaLifting.Terms</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-Binding-Hobbits-Examples-LambdaLifting-Terms.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</p></div><div id="description"><p class="caption">Description</p><div class="doc empty"> </div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:L" class="def">L</a> a </p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:D" class="def">D</a> a </p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Term" class="def">Term</a> <span class="keyword">where</span></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Var" class="def">Var</a> :: <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">L</a> a) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Lam" class="def">Lam</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">L</a> b) (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> (b -> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:App" class="def">App</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> (b -> a) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> b -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Term" class="caption collapser" onclick="toggleSection('i:Term')">Instances</p><div id="section.i:Term" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:lam" class="def">lam</a> :: (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> b) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> (a -> b)</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:DTerm" class="def">DTerm</a> <span class="keyword">where</span></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:TVar" class="def">TVar</a> :: <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">L</a> a) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:TDVar" class="def">TDVar</a> :: <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:D">D</a> a) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:TApp" class="def">TApp</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> (a -> b) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> a -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> b</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:DTerm" class="caption collapser" onclick="toggleSection('i:DTerm')">Instances</p><div id="section.i:DTerm" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Decl" class="def">Decl</a> <span class="keyword">where</span></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Decl_One" class="def">Decl_One</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">L</a> a) (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> b) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decl">Decl</a> (a -> b)</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Decl_Cons" class="def">Decl_Cons</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">L</a> a) (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decl">Decl</a> b) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decl">Decl</a> (a -> b)</td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Decls" class="def">Decls</a> <span class="keyword">where</span></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Decls_Base" class="def">Decls_Base</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">DTerm</a> a -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Decls_Cons" class="def">Decls_Cons</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decl">Decl</a> b -> <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:D">D</a> b) (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a) -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Decls" class="caption collapser" onclick="toggleSection('i:Decls')">Instances</p><div id="section.i:Decls" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,11 +0,0 @@-<!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.Binding.Hobbits.Examples.LambdaLifting</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-Binding-Hobbits-Examples-LambdaLifting.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.Examples.LambdaLifting</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#1">Term data types, using <code><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></code>-</a></li><li><a href="#2">The lambda-lifting function-</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>The lambda lifting example from the paper E. Westbrook, N. Frisby,- P. Brauner, "Hobbits for Haskell: A Library for Higher-Order Encodings in- Functional Programming Languages".-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short">module <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a></li><li class="src short"><a href="#v:lambdaLift">lambdaLift</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a</li><li class="src short"><a href="#v:mbLambdaLift">mbLambdaLift</a> :: <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a)</li></ul></div><div id="interface"><h1 id="1">Term data types, using <code><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></code>-</h1><div class="top"><p class="src">module <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a></p></div><h1 id="2">The lambda-lifting function-</h1><div class="top"><p class="src"><a name="v:lambdaLift" class="def">lambdaLift</a> :: <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a -> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a</p></div><div class="top"><p class="src"><a name="v:mbLambdaLift" class="def">mbLambdaLift</a> :: <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Term</a> a) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Decls</a> a)</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,9 +0,0 @@-<!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.Binding.Hobbits.Internal</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-Binding-Hobbits-Internal.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.Internal</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module is internal to the Hobbits library, and should not be used- directly.-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">newtype</span> <a href="#t:Name">Name</a> a = <a href="#v:MkName">MkName</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:Mb">Mb</a> ctx b = <a href="#v:MkMb">MkMb</a> [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a>] b</li><li class="src short"><span class="keyword">data</span> <a href="#t:ExMember">ExMember</a> <span class="keyword">where</span><ul class="subs"><li><a href="#v:ExMember">ExMember</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a -> <a href="Data-Binding-Hobbits-Internal.html#t:ExMember">ExMember</a> </li></ul></li><li class="src short"><a href="#v:memberFromLen">memberFromLen</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Binding-Hobbits-Internal.html#t:ExMember">ExMember</a></li><li class="src short"><a href="#v:unsafeLookupC">unsafeLookupC</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a</li><li class="src short"><span class="keyword">data</span> <a href="#t:ExProxy">ExProxy</a> <span class="keyword">where</span><ul class="subs"><li><a href="#v:ExProxy">ExProxy</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Proxy ctx -> <a href="Data-Binding-Hobbits-Internal.html#t:ExProxy">ExProxy</a> </li></ul></li><li class="src short"><a href="#v:proxyFromLen">proxyFromLen</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Binding-Hobbits-Internal.html#t:ExProxy">ExProxy</a></li><li class="src short"><a href="#v:unsafeProxyFromLen">unsafeProxyFromLen</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Proxy ctx</li><li class="src short"><a href="#v:unsafeNamesFromInts">unsafeNamesFromInts</a> :: [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a>] -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> ctx</li><li class="src short"><a href="#v:counter">counter</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-IORef.html#t:IORef">IORef</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:fresh_name">fresh_name</a> :: a -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Name" class="def">Name</a> a </p><div class="doc"><p>A <code>Name a</code> is a bound name that is associated with type <code>a</code>.-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:MkName" class="def">MkName</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Name" class="caption collapser" onclick="toggleSection('i:Name')">Instances</p><div id="section.i:Name" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Typeable.html#t:Typeable1">Typeable1</a> <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Mb" class="def">Mb</a> ctx b </p><div class="doc"><p>An <code>Mb ctx b</code> is a multi-binding that binds exactly one name for each- type in <code>ctx</code>, where <code>ctx</code> has the form <code><code><a href="Data-Type-List-List.html#t:Nil">Nil</a></code> <code><a href="Data-Type-List-List.html#t::-62-">:></a></code> t1 <code><a href="Data-Type-List-List.html#t::-62-">:></a></code> ... <code><a href="Data-Type-List-List.html#t::-62-">:></a></code> tn</code>.-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:MkMb" class="def">MkMb</a> [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a>] b</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Mb" class="caption collapser" onclick="toggleSection('i:Mb')">Instances</p><div id="section.i:Mb" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Typeable.html#t:Typeable2">Typeable2</a> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> a => <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> c a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> a => <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ExMember" class="def">ExMember</a> <span class="keyword">where</span></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ExMember" class="def">ExMember</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a -> <a href="Data-Binding-Hobbits-Internal.html#t:ExMember">ExMember</a></td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a name="v:memberFromLen" class="def">memberFromLen</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Binding-Hobbits-Internal.html#t:ExMember">ExMember</a></p></div><div class="top"><p class="src"><a name="v:unsafeLookupC" class="def">unsafeLookupC</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ExProxy" class="def">ExProxy</a> <span class="keyword">where</span></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ExProxy" class="def">ExProxy</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Proxy ctx -> <a href="Data-Binding-Hobbits-Internal.html#t:ExProxy">ExProxy</a></td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a name="v:proxyFromLen" class="def">proxyFromLen</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Binding-Hobbits-Internal.html#t:ExProxy">ExProxy</a></p></div><div class="top"><p class="src"><a name="v:unsafeProxyFromLen" class="def">unsafeProxyFromLen</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a> -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Proxy ctx</p></div><div class="top"><p class="src"><a name="v:unsafeNamesFromInts" class="def">unsafeNamesFromInts</a> :: [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a>] -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> ctx</p></div><div class="top"><p class="src"><a name="v:counter" class="def">counter</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-IORef.html#t:IORef">IORef</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></p></div><div class="top"><p class="src"><a name="v:fresh_name" class="def">fresh_name</a> :: a -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,66 +0,0 @@-<!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.Binding.Hobbits.Mb</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-Binding-Hobbits-Mb.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.Mb</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#1">Abstract types-</a></li><li><a href="#2">Multi-binding constructors-</a></li><li><a href="#3">Operations on multi-bindings-</a></li><li><a href="#4">Queries on names-</a></li><li><a href="#5">type classes for lifting data out of bindings-</a></li><li><a href="#6">Optimized, safe multi-binding eliminators-</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module defines multi-bindings as the type <code><a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a></code>, as well as a number of- operations on multi-bindings. See the paper E. Westbrook, N. Frisby,- P. Brauner, "Hobbits for Haskell: A Library for Higher-Order Encodings in- Functional Programming Languages" for more information.-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:Name">Name</a> a</li><li class="src short"><span class="keyword">type</span> <a href="#t:Binding">Binding</a> a = <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> (<a href="Data-Type-List-List.html#t:Nil">Nil</a> <a href="Data-Type-List-List.html#t::-62-">:></a> a)</li><li class="src short"><span class="keyword">data</span> <a href="#t:Mb">Mb</a> ctx b</li><li class="src short"><a href="#v:nu">nu</a> :: (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a -> b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> a b</li><li class="src short"><a href="#v:emptyMb">emptyMb</a> :: a -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> <a href="Data-Type-List-List.html#t:Nil">Nil</a> a</li><li class="src short"><a href="#v:nuMulti">nuMulti</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f ctx -> (<a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> ctx -> b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx b</li><li class="src short"><a href="#v:elimEmptyMb">elimEmptyMb</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> <a href="Data-Type-List-List.html#t:Nil">Nil</a> a -> a</li><li class="src short"><a href="#v:combineMb">combineMb</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c1 (<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c2 b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2) b</li><li class="src short"><a href="#v:separateMb">separateMb</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 c -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c a -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c1 (<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c2 a)</li><li class="src short"><a href="#v:mbToProxy">mbToProxy</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Proxy ctx</li><li class="src short"><a href="#v:cmpName">cmpName</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a -> <a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> b -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a :=: b)</li><li class="src short"><a href="#v:mbCmpName">mbCmpName</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a) -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> b) -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a :=: b)</li><li class="src short"><a href="#v:mbNameBoundP">mbNameBoundP</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a) -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Either.html#t:Either">Either</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> ctx a) (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a)</li><li class="src short"><span class="keyword">class</span> <a href="#t:Liftable">Liftable</a> a <span class="keyword">where</span><ul class="subs"><li><a href="#v:mbLift">mbLift</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx a -> a</li></ul></li><li class="src short"><span class="keyword">class</span> <a href="#t:Liftable1">Liftable1</a> f <span class="keyword">where</span><ul class="subs"><li><a href="#v:mbLift1">mbLift1</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> a => <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx (f a) -> f a</li></ul></li><li class="src short"><span class="keyword">class</span> <a href="#t:Liftable2">Liftable2</a> f <span class="keyword">where</span><ul class="subs"><li><a href="#v:mbLift2">mbLift2</a> :: (<a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> a, <a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> b) => <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx (f a b) -> f a b</li></ul></li><li class="src short"><a href="#v:mbList">mbList</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c [a] -> [<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c a]</li></ul></div><div id="interface"><h1 id="1">Abstract types-</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Name" class="def">Name</a> a </p><div class="doc"><p>A <code>Name a</code> is a bound name that is associated with type <code>a</code>.-</p></div><div class="subs instances"><p id="control.i:Name" class="caption collapser" onclick="toggleSection('i:Name')">Instances</p><div id="section.i:Name" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Typeable.html#t:Typeable1">Typeable1</a> <a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Binding" class="def">Binding</a> a = <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> (<a href="Data-Type-List-List.html#t:Nil">Nil</a> <a href="Data-Type-List-List.html#t::-62-">:></a> a)</p><div class="doc"><p>A <code>Binding</code> is simply a multi-binding that binds one name-</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Mb" class="def">Mb</a> ctx b </p><div class="doc"><p>An <code>Mb ctx b</code> is a multi-binding that binds exactly one name for each- type in <code>ctx</code>, where <code>ctx</code> has the form <code><code><a href="Data-Type-List-List.html#t:Nil">Nil</a></code> <code><a href="Data-Type-List-List.html#t::-62-">:></a></code> t1 <code><a href="Data-Type-List-List.html#t::-62-">:></a></code> ... <code><a href="Data-Type-List-List.html#t::-62-">:></a></code> tn</code>.-</p></div><div class="subs instances"><p id="control.i:Mb" class="caption collapser" onclick="toggleSection('i:Mb')">Instances</p><div id="section.i:Mb" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Typeable.html#t:Typeable2">Typeable2</a> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> a => <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> a => <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> (<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx a)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="2">Multi-binding constructors-</h1><div class="top"><p class="src"><a name="v:nu" class="def">nu</a> :: (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a -> b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> a b</p><div class="doc"><p><code>nu f</code> creates a binding which binds a fresh name <code>n</code> and whose- body is the result of <code>f n</code>.-</p></div></div><div class="top"><p class="src"><a name="v:emptyMb" class="def">emptyMb</a> :: a -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> <a href="Data-Type-List-List.html#t:Nil">Nil</a> a</p><div class="doc"><p>Creates an empty binding that binds 0 names.-</p></div></div><div class="top"><p class="src"><a name="v:nuMulti" class="def">nuMulti</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f ctx -> (<a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> ctx -> b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx b</p><div class="doc"><p>The expression <code>nuMulti p f</code> creates a multi-binding of zero or more- names, one for each element of the vector <code>p</code>. The bound names are- passed the names to <code>f</code>, which returns the body of the- multi-binding. The argument <code>p</code>, of type <code><code><a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a></code> f ctx</code>, acts as a- "phantom" argument, used to reify the list of types <code>ctx</code> at the- term level; thus it is unimportant what the type function <code>f</code> is.-</p></div></div><h1 id="3">Operations on multi-bindings-</h1><div class="top"><p class="src"><a name="v:elimEmptyMb" class="def">elimEmptyMb</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> <a href="Data-Type-List-List.html#t:Nil">Nil</a> a -> a</p><div class="doc"><p>Eliminates an empty binding, returning its body. Note that- <code>elimEmptyMb</code> is the inverse of <code>emptyMb</code>.-</p></div></div><div class="top"><p class="src"><a name="v:combineMb" class="def">combineMb</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c1 (<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c2 b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2) b</p><div class="doc"><p>Combines a binding inside another binding into a single binding.-</p></div></div><div class="top"><p class="src"><a name="v:separateMb" class="def">separateMb</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 c -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c a -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c1 (<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c2 a)</p><div class="doc"><p>Separates a binding into two nested bindings. The first argument, of- type <code><code><a href="Data-Type-List-Proof-Append.html#t:Append">Append</a></code> c1 c2 c</code>, is a "phantom" argument to indicate how- the context <code>c</code> should be split.-</p></div></div><div class="top"><p class="src"><a name="v:mbToProxy" class="def">mbToProxy</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Proxy ctx</p><div class="doc"><p>Returns a proxy object that enumerates all the types in ctx.-</p></div></div><h1 id="4">Queries on names-</h1><div class="top"><p class="src"><a name="v:cmpName" class="def">cmpName</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a -> <a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> b -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a :=: b)</p><div class="doc"><p><code>cmpName n m</code> compares names <code>n</code> and <code>m</code> of types <code>Name a</code> and <code>Name b</code>,- respectively. When they are equal, <code>Some e</code> is returned for <code>e</code> a proof- of type <code>a :=: b</code> that their types are equal. Otherwise, <code>None</code> is returned.-</p><p>For example:-</p><pre> nu $ \n -> nu $ \m -> cmpName n n == nu $ \n -> nu $ \m -> Some Refl- nu $ \n -> nu $ \m -> cmpName n m == nu $ \n -> nu $ \m -> None-</pre></div></div><div class="top"><p class="src"><a name="v:mbCmpName" class="def">mbCmpName</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a) -> <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> b) -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a :=: b)</p><div class="doc"><p>Compares two names inside bindings, taking alpha-equivalence into- account; i.e., if both are the <code>i</code>th name, or both are the same name- not bound in their respective multi-bindings, then they compare as- equal. The return values are the same as for <code><a href="Data-Binding-Hobbits-Mb.html#v:cmpName">cmpName</a></code>, so that- <code>Some Refl</code> is returned when the names are equal and <code>Nothing</code> is- returned when they are not.-</p></div></div><div class="top"><p class="src"><a name="v:mbNameBoundP" class="def">mbNameBoundP</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a) -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Either.html#t:Either">Either</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> ctx a) (<a href="Data-Binding-Hobbits-Mb.html#t:Name">Name</a> a)</p><div class="doc"><p>Checks if a name is bound in a multi-binding, returning <code>Left mem</code>- when the name is bound, where <code>mem</code> is a proof that the type of the- name is in the type list for the multi-binding, and returning- <code>Right n</code> when the name is not bound, where <code>n</code> is the name.-</p><p>For example:-</p><pre> nu $ \n -> mbNameBoundP (nu $ \m -> m) == nu $ \n -> Left Member_Base- nu $ \n -> mbNameBoundP (nu $ \m -> n) == nu $ \n -> Right n-</pre></div></div><h1 id="5">type classes for lifting data out of bindings-</h1><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:Liftable" class="def">Liftable</a> a <span class="keyword">where</span></p><div class="doc"><p>The class <code>Liftable a</code> gives a "lifting function" for a, which can- take any data of type <code>a</code> out of a multi-binding of type <code><code><a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a></code> ctx a</code>.-</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:mbLift" class="def">mbLift</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx a -> a</p></div><div class="subs instances"><p id="control.i:Liftable" class="caption collapser" onclick="toggleSection('i:Liftable')">Instances</p><div id="section.i:Liftable" class="show"><table><tr><td class="src"><a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Char.html#t:Char">Char</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Data-Binding-Hobbits-Mb.html#t:Liftable1">Liftable1</a> f, <a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> a) => <a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> (f a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:Liftable1" class="def">Liftable1</a> f <span class="keyword">where</span></p><div class="doc"><p>The class <code>Liftable1 f</code> gives a lifting function for each type <code>f a</code>- when <code>a</code> itself is <code>Liftable</code>.-</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:mbLift1" class="def">mbLift1</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> a => <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx (f a) -> f a</p></div><div class="subs instances"><p id="control.i:Liftable1" class="caption collapser" onclick="toggleSection('i:Liftable1')">Instances</p><div id="section.i:Liftable1" class="show"><table><tr><td class="src">(<a href="Data-Binding-Hobbits-Mb.html#t:Liftable2">Liftable2</a> f, <a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> a) => <a href="Data-Binding-Hobbits-Mb.html#t:Liftable1">Liftable1</a> (f a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:Liftable2" class="def">Liftable2</a> f <span class="keyword">where</span></p><div class="doc"><p>The class <code>Liftable2 f</code> gives a lifting function for each type <code>f a b</code>- when <code>a</code> and <code>b</code> are <code>Liftable</code>.-</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:mbLift2" class="def">mbLift2</a> :: (<a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> a, <a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> b) => <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> ctx (f a b) -> f a b</p></div></div><h1 id="6">Optimized, safe multi-binding eliminators-</h1><div class="top"><p class="src"><a name="v:mbList" class="def">mbList</a> :: <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c [a] -> [<a href="Data-Binding-Hobbits-Mb.html#t:Mb">Mb</a> c a]</p><div class="doc"><p>Lift a list (but not its elements) out of a multi-binding-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,46 +0,0 @@-<!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.Binding.Hobbits.NuElim</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-Binding-Hobbits-NuElim.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><p class="caption">Data.Binding.Hobbits.NuElim</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module defines the NuElim typeclass, which allows eliminations- of (multi-) bindings. The high-level idea is that, when a fresh name- is created with <code><a href="Data-Binding-Hobbits-Mb.html#v:nu">nu</a></code>, the fresh name can also be substituted for the- bound name in a binding. See the documentation for <code><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElim1">nuWithElim1</a></code> and- <code><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElimMulti">nuWithElimMulti</a></code> for details.-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:nuWithElimMulti">nuWithElimMulti</a> :: <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> args => <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f ctx -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx) args -> (<a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> ctx -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Identity args -> b) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx b</li><li class="src short"><a href="#v:nuWithElim1">nuWithElim1</a> :: <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> arg => <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> a arg -> (<a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> a -> arg -> b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> a b</li><li class="src short"><span class="keyword">class</span> <a href="#t:NuElim">NuElim</a> a <span class="keyword">where</span><ul class="subs"><li><a href="#v:nuElimProof">nuElimProof</a> :: <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimProof">NuElimProof</a> a</li></ul></li><li class="src short"><a href="#v:mkNuElimData">mkNuElimData</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Type">Type</a> -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</li><li class="src short"><span class="keyword">class</span> <a href="#t:NuElimList">NuElimList</a> args <span class="keyword">where</span><ul class="subs"><li><a href="#v:nuElimListProof">nuElimListProof</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimProof">NuElimProof</a> args</li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:NuElimProof">NuElimProof</a> a</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:nuWithElimMulti" class="def">nuWithElimMulti</a> :: <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> args => <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f ctx -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx) args -> (<a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> ctx -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> Identity args -> b) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx b</p><div class="doc"><p>The expression <code>nuWithElimMulti args f</code> takes a sequence <code>args</code> of- zero or more multi-bindings, each of type <code>Mb ctx ai</code> for the same- type context <code>ctx</code> of bound names, and a function <code>f</code> and does the- following:-</p><ul><li> Creates a multi-binding that binds names <code>n1,...,nn</code>, one name for- each type in <code>ctx</code>;-</li><li> Substitutes the names <code>n1,...,nn</code> for the names bound by each- argument in the <code>args</code> sequence, yielding the bodies of the <code>args</code>- (using the new name <code>n</code>); and then-</li><li> Passes the sequence <code>n1,...,nn</code> along with the result of- substituting into <code>args</code> to the function <code>f</code>, which then returns- the value for the newly created binding.-</li></ul><p>Note that the types in <code>args</code> must each have a <code>NuElim</code> instance;- this is represented with the <code>NuElimList</code> type class.-</p><p>Here are some examples:-</p><pre> commuteFun :: (NuElim a, NuElim b) => Mb ctx (a -> b) -> Mb ctx a -> Mb ctx b- commuteFun f a =- nuWithElimMulti ('mbToProxy' f) ('Nil' :> f :> a)- (\_ ('Nil' :> 'Identity' f' :> 'Identity' a') -> f' a')-</pre></div></div><div class="top"><p class="src"><a name="v:nuWithElim1" class="def">nuWithElim1</a> :: <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> arg => <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> a arg -> (<a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> a -> arg -> b) -> <a href="Data-Binding-Hobbits-Mb.html#t:Binding">Binding</a> a b</p><div class="doc"><p>Similar to <code><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElimMulti">nuWithElimMulti</a></code> but takes only one argument that binds- a single name.-</p></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:NuElim" class="def">NuElim</a> a <span class="keyword">where</span></p><div class="doc"><p>Instances of the <code>NuElim a</code> class allow the type <code>a</code> to be used with- <code><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElimMulti">nuWithElimMulti</a></code> and <code><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElim1">nuWithElim1</a></code>. The structure of this class is- mostly hidden from the user; see <code><a href="Data-Binding-Hobbits-NuElim.html#v:mkNuElimData">mkNuElimData</a></code> to see how to create- instances of the <code>NuElim</code> class.-</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:nuElimProof" class="def">nuElimProof</a> :: <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimProof">NuElimProof</a> a</p></div><div class="subs instances"><p id="control.i:NuElim" class="caption collapser" onclick="toggleSection('i:NuElim')">Instances</p><div id="section.i:NuElim" class="show"><table><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Char.html#t:Char">Char</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> a => <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> [a]</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Name">Name</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> a, <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> b) => <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> (a -> b)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> a => <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> (<a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:mkNuElimData" class="def">mkNuElimData</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Type">Type</a> -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Dec">Dec</a>]</p><div class="doc"><p>Template Haskell function for creating NuElim instances for (G)ADTs.- Typical usage is to include the following line in the source file for- (G)ADT <code>T</code> (here assumed to have two type arguments):-</p><pre> $(mkNuElimData [t| forall a b . T a b |])-</pre><p>The <code><a href="Data-Binding-Hobbits-NuElim.html#v:mkNuElimData">mkNuElimData</a></code> call here will create an instance declaration for- <code><code><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a></code> (T a b)</code>. It is also possible to include a context in the- forall type; for example, if we define the <code>ID</code> data type as follows:-</p><pre> data ID a = ID a-</pre><p>then we can create a <code><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a></code> instance for it like this:-</p><pre> $( mkNuElimData [t| NuElim a => ID a |])-</pre><p>Note that, when a context is included, the Haskell parser will add- the <code>forall a</code> for you.-</p></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a name="t:NuElimList" class="def">NuElimList</a> args <span class="keyword">where</span></p><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:nuElimListProof" class="def">nuElimListProof</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimProof">NuElimProof</a> args</p></div><div class="subs instances"><p id="control.i:NuElimList" class="caption collapser" onclick="toggleSection('i:NuElimList')">Instances</p><div id="section.i:NuElimList" class="show"><table><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> <a href="Data-Type-List-List.html#t:Nil">Nil</a></td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> args, <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> a) => <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> (<a href="Data-Type-List-List.html#t::-62-">:></a> args a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:NuElimProof" class="def">NuElimProof</a> a </p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,8 +0,0 @@-<!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.Binding.Hobbits.PatternParser</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-Binding-Hobbits-PatternParser.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.PatternParser</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A simple parser for Haskell patterns. Currently does not handle:-</p><ul><li> Record patterns <code>Pt { pointx = x }</code>-</li><li> Signature patterns <code>p :: t</code>-</li><li> View patterns <code>e -> p</code>-</li></ul></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:parsePattern" class="def">parsePattern</a> :: [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Char.html#t:Char">Char</a>] -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Pat">Pat</a></p></div><div class="top"><p class="src"><a name="v:parseVar" class="def">parseVar</a> :: [<a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Char.html#t:Char">Char</a>] -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Char.html#t:String">String</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,14 +0,0 @@-<!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.Binding.Hobbits.QQ</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-Binding-Hobbits-QQ.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.QQ</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Defines a quasi-quoter for writing patterns that match the bodies- of <code><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></code> multi-bindings. Uses the- <a href="Data-Binding-Hobbits-PatternParser.html">Data.Binding.Hobbits.PatternParser</a> module, and thus only supports- the pattern forms listed there. If <code>P</code> is a (supported) Haskell- pattern, then <code>[nuQQ| P ]</code> defines a pattern that will match an- multi-binding whose body matches <code>P</code>. Any variables matched by <code>P</code>- will remain inside the binding; thus, for example, in the pattern- <code>[nuQQ| x |]</code>, <code>x</code> matches the entire multi-binding.-</p><p>Examples:-</p><pre> case (nu Left) of [nuQQ| Left x |] -> x == nu id-</pre></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:nuQQ" class="def">nuQQ</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Quote.html#t:QuasiQuoter">QuasiQuoter</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,22 +0,0 @@-<!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.Binding.Hobbits.SuperComb</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-Binding-Hobbits-SuperComb.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.SuperComb</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#1">Abstract types-</a></li><li><a href="#2">Operators involving <code><a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a></code>-</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module uses Template Haskell to distinguish super-combinators, so that- the library can trust such functions to not contain any <code>Name</code> values in- their closure.-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:SuperComb">SuperComb</a> a</li><li class="src short"><a href="#v:superComb">superComb</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></li><li class="src short"><a href="#v:mbToplevel">mbToplevel</a> :: <a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a> (a -> b) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx a -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx b</li></ul></div><div id="interface"><h1 id="1">Abstract types-</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:SuperComb" class="def">SuperComb</a> a </p><div class="doc"><p>The type <code>SuperComb a</code> represents a super-combinator of type <code>a</code>,- i.e., an expression of type <code>a</code> with no free (Haskell) variables.- Since this cannot be checked directly in the Haskell type system,- the <code>SuperComb</code> data type is hidden, and the user can only create- super-combinators using Template Haskell, through the <code><a href="Data-Binding-Hobbits-SuperComb.html#v:superComb">superComb</a></code>- operator.-</p></div></div><h1 id="2">Operators involving <code><a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a></code>-</h1><div class="top"><p class="src"><a name="v:superComb" class="def">superComb</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></p><div class="doc"><p><code>superComb</code> is used with Template Haskell to create super-combinators;- see documentation for <code><a href="Data-Binding-Hobbits-SuperComb.html#v:mbToplevel">mbToplevel</a></code> to see how it is used.-</p></div></div><div class="top"><p class="src"><a name="v:mbToplevel" class="def">mbToplevel</a> :: <a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a> (a -> b) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx a -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx b</p><div class="doc"><p><code>mbToplevel</code> <code>f</code> <code>b</code> applies super-combinator <code>f</code> to the body of- multi-binding <code>b</code>. For example:-</p><pre> mbToplevel $(superComb [| f |]) (nu $ \n -> n) = nu f-</pre></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,23 +0,0 @@-<!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.Binding.Hobbits</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-Binding-Hobbits.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#1">Values under multi-bindings-</a></li><li><a href="#2">Ancilliary modules-</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This library implements multi-bindings as described in the paper- E. Westbrook, N. Frisby, P. Brauner, "Hobbits for Haskell: A Library for- Higher-Order Encodings in Functional Programming Languages".-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short">module <a href="Data-Binding-Hobbits-Mb.html">Data.Binding.Hobbits.Mb</a></li><li class="src short">module <a href="Data-Type-List.html">Data.Type.List</a></li><li class="src short">module <a href="Data-Binding-Hobbits-SuperComb.html">Data.Binding.Hobbits.SuperComb</a></li><li class="src short">module <a href="Data-Binding-Hobbits-QQ.html">Data.Binding.Hobbits.QQ</a></li><li class="src short">module <a href="Data-Binding-Hobbits-PatternParser.html">Data.Binding.Hobbits.PatternParser</a></li><li class="src short">module <a href="Data-Binding-Hobbits-NuElim.html">Data.Binding.Hobbits.NuElim</a></li></ul></div><div id="interface"><h1 id="1">Values under multi-bindings-</h1><div class="top"><p class="src">module <a href="Data-Binding-Hobbits-Mb.html">Data.Binding.Hobbits.Mb</a></p></div><div class="doc"><p>The <code><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></code> type modeling multi-bindings is the- central abstract type of the library-</p></div><h1 id="2">Ancilliary modules-</h1><div class="top"><p class="src">module <a href="Data-Type-List.html">Data.Type.List</a></p></div><div class="doc"><p>Type lists track the types of bound variables.-</p></div><div class="top"><p class="src">module <a href="Data-Binding-Hobbits-SuperComb.html">Data.Binding.Hobbits.SuperComb</a></p></div><div class="doc"><p>The <code><a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a></code> type models- super-combinators, which are safe functions to apply under- <code><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></code>.-</p></div><div class="top"><p class="src">module <a href="Data-Binding-Hobbits-QQ.html">Data.Binding.Hobbits.QQ</a></p></div><div class="doc"><p>The <code><a href="Data-Binding-Hobbits-QQ.html#v:nuQQ">nuQQ</a></code> quasiquoter allows safe pattern- matching on <code><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></code> values.-</p></div><div class="top"><p class="src">module <a href="Data-Binding-Hobbits-PatternParser.html">Data.Binding.Hobbits.PatternParser</a></p></div><div class="doc"><p>A simple parser for Haskell patterns.-</p></div><div class="top"><p class="src">module <a href="Data-Binding-Hobbits-NuElim.html">Data.Binding.Hobbits.NuElim</a></p></div><div class="doc"><p>The <a href="Data-Binding-Hobbits-NuElim.html">Data.Binding.Hobbits.NuElim</a> module allows elimination of- bindings and multi-bindings; NOTE: this module is not covered in- the "Hobbits for Haskell" paper.-</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,5 +0,0 @@-<!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.Type.List.List</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-Type-List-List.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Type.List.List</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>The type-level constructors of type lists.-</p></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Nil" class="def">Nil</a> </p><div class="subs instances"><p id="control.i:Nil" class="caption collapser" onclick="toggleSection('i:Nil')">Instances</p><div id="section.i:Nil" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Data-Type-List-List.html#t:Nil">Nil</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> <a href="Data-Type-List-List.html#t:Nil">Nil</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> r <a name="t::-62-" class="def">:></a> a </p><div class="subs instances"><p id="control.i::-62-" class="caption collapser" onclick="toggleSection('i::-62-')">Instances</p><div id="section.i::-62-" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Typeable.html#t:Typeable2">Typeable2</a> <a href="Data-Type-List-List.html#t::-62-">:></a></td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> args, <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">NuElim</a> a) => <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">NuElimList</a> (<a href="Data-Type-List-List.html#t::-62-">:></a> args a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type family</span> r1 <a name="t::-43--43-:" class="def">:++:</a> r2 </p></div><div class="top"><p class="src"><a name="v:proxyCons" class="def">proxyCons</a> :: Proxy r -> f a -> Proxy (r <a href="Data-Type-List-List.html#t::-62-">:></a> a)</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,18 +0,0 @@-<!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.Type.List.Map</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-Type-List-Map.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Type.List.Map</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Vectors indexed by a type list-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:MapC">MapC</a> f c <span class="keyword">where</span><ul class="subs"><li><a href="#v:Nil">Nil</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f <a href="Data-Type-List-List.html#t:Nil">Nil</a> </li><li><a href="#v::-62-">:></a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> f a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f (c <a href="Data-Type-List-List.html#t::-62-">:></a> a) </li></ul></li><li class="src short"><a href="#v:empty">empty</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f <a href="Data-Type-List-List.html#t:Nil">Nil</a></li><li class="src short"><a href="#v:singleton">singleton</a> :: f a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f (<a href="Data-Type-List-List.html#t:Nil">Nil</a> <a href="Data-Type-List-List.html#t::-62-">:></a> a)</li><li class="src short"><a href="#v:lookup">lookup</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> f a</li><li class="src short"><a href="#v:mapC">mapC</a> :: (<span class="keyword">forall</span> x. f x -> g x) -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> g c</li><li class="src short"><a href="#v:append">append</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c1 -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2 -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2)</li><li class="src short"><a href="#v:mkAppend">mkAppend</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2 -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2)</li><li class="src short"><a href="#v:mkMonoAppend">mkMonoAppend</a> :: Proxy c1 -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2 -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2)</li><li class="src short"><a href="#v:split">split</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 c -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> (<a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c1, <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2)</li><li class="src short"><a href="#v:proxy">proxy</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> Proxy c</li><li class="src short"><a href="#v:members">members</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c) c</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:MapC" class="def">MapC</a> f c <span class="keyword">where</span></p><div class="doc"><p>A <code>MapC f c</code> is a vector with exactly one element of type <code>f a</code> for- each type <code>a</code> in the type list <code>c</code>.-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Nil" class="def">Nil</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f <a href="Data-Type-List-List.html#t:Nil">Nil</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v::-62-" class="def">:></a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> f a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f (c <a href="Data-Type-List-List.html#t::-62-">:></a> a)</td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a name="v:empty" class="def">empty</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f <a href="Data-Type-List-List.html#t:Nil">Nil</a></p><div class="doc"><p>Create an empty <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vector.-</p></div></div><div class="top"><p class="src"><a name="v:singleton" class="def">singleton</a> :: f a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f (<a href="Data-Type-List-List.html#t:Nil">Nil</a> <a href="Data-Type-List-List.html#t::-62-">:></a> a)</p><div class="doc"><p>Create a singleton <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vector.-</p></div></div><div class="top"><p class="src"><a name="v:lookup" class="def">lookup</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> f a</p><div class="doc"><p>Look up an element of a <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vector using a <code><a href="Data-Type-List-Proof-Member.html#t:Member">Member</a></code> proof.-</p></div></div><div class="top"><p class="src"><a name="v:mapC" class="def">mapC</a> :: (<span class="keyword">forall</span> x. f x -> g x) -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> g c</p><div class="doc"><p>Map a function to all elements of a <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vector.-</p></div></div><div class="top"><p class="src"><a name="v:append" class="def">append</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c1 -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2 -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2)</p><div class="doc"><p>Append two <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vectors.-</p></div></div><div class="top"><p class="src"><a name="v:mkAppend" class="def">mkAppend</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2 -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2)</p><div class="doc"><p>Make an <code><a href="Data-Type-List-Proof-Append.html#t:Append">Append</a></code> proof from any <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vector for the second- argument of the append.-</p></div></div><div class="top"><p class="src"><a name="v:mkMonoAppend" class="def">mkMonoAppend</a> :: Proxy c1 -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2 -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 (c1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> c2)</p><div class="doc"><p>A version of <code><a href="Data-Type-List-Map.html#v:mkAppend">mkAppend</a></code> that takes in a <code>Proxy</code> argument.-</p></div></div><div class="top"><p class="src"><a name="v:split" class="def">split</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> c1 c2 c -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> (<a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c1, <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c2)</p><div class="doc"><p>Split a <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vector into two pieces.-</p></div></div><div class="top"><p class="src"><a name="v:proxy" class="def">proxy</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> Proxy c</p><div class="doc"><p>Create a <code>Proxy</code> object for the type list of a <code><a href="Data-Type-List-Map.html#t:MapC">MapC</a></code> vector.-</p></div></div><div class="top"><p class="src"><a name="v:members" class="def">members</a> :: <a href="Data-Type-List-Map.html#t:MapC">MapC</a> f c -> <a href="Data-Type-List-Map.html#t:MapC">MapC</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c) c</p><div class="doc"><p>Create a vector of proofs that each type in <code>c</code> is a <code><a href="Data-Type-List-Proof-Member.html#t:Member">Member</a></code> of <code>c</code>.-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,8 +0,0 @@-<!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.Type.List.Proof.Append</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-Type-List-Proof-Append.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Type.List.Proof.Append</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Proofs regarding a type list as an append of two others.-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:Append">Append</a> ctx1 ctx2 ctx <span class="keyword">where</span><ul class="subs"><li><a href="#v:Append_Base">Append_Base</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx <a href="Data-Type-List-List.html#t:Nil">Nil</a> ctx </li><li><a href="#v:Append_Step">Append_Step</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 ctx2 ctx -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 (ctx2 <a href="Data-Type-List-List.html#t::-62-">:></a> a) (ctx <a href="Data-Type-List-List.html#t::-62-">:></a> a) </li></ul></li><li class="src short"><a href="#v:trans">trans</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 ctx2 ex_ctx -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ex_ctx ctx3 ctx -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 (ctx2 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> ctx3) ctx</li><li class="src short"><a href="#v:length">length</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 ctx2 ctx3 -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Append" class="def">Append</a> ctx1 ctx2 ctx <span class="keyword">where</span></p><div class="doc"><p>An <code>Append ctx1 ctx2 ctx</code> is a "proof" that <code>ctx = ctx1 <code><a href="Data-Type-List-List.html#t::-43--43-:">:++:</a></code> ctx2</code>.-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Append_Base" class="def">Append_Base</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx <a href="Data-Type-List-List.html#t:Nil">Nil</a> ctx</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Append_Step" class="def">Append_Step</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 ctx2 ctx -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 (ctx2 <a href="Data-Type-List-List.html#t::-62-">:></a> a) (ctx <a href="Data-Type-List-List.html#t::-62-">:></a> a)</td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a name="v:trans" class="def">trans</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 ctx2 ex_ctx -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ex_ctx ctx3 ctx -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 (ctx2 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> ctx3) ctx</p><div class="doc"><p>Appends two <code><a href="Data-Type-List-Proof-Append.html#t:Append">Append</a></code> proofs.-</p></div></div><div class="top"><p class="src"><a name="v:length" class="def">length</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> ctx1 ctx2 ctx3 -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Int.html#t:Int">Int</a></p><div class="doc"><p>Returns the length of an <code><a href="Data-Type-List-Proof-Append.html#t:Append">Append</a></code> proof.-</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,13 +0,0 @@-<!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.Type.List.Proof.Member</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-Type-List-Proof-Member.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Type.List.Proof.Member</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#1">Abstract data types-</a></li><li><a href="#2">Operators on <code><a href="Data-Type-List-Proof-Member.html#t:Member">Member</a></code> proofs-</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Proofs regarding membership of a type in a type list.-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:Member">Member</a> ctx a <span class="keyword">where</span><ul class="subs"><li><a href="#v:Member_Base">Member_Base</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (ctx <a href="Data-Type-List-List.html#t::-62-">:></a> a) a </li><li><a href="#v:Member_Step">Member_Step</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> ctx a -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (ctx <a href="Data-Type-List-List.html#t::-62-">:></a> b) a </li></ul></li><li class="src short"><a href="#v:toEq">toEq</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (<a href="Data-Type-List-List.html#t:Nil">Nil</a> <a href="Data-Type-List-List.html#t::-62-">:></a> a) b -> b :=: a</li><li class="src short"><a href="#v:weakenL">weakenL</a> :: Proxy r1 -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r2 a -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (r1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> r2) a</li><li class="src short"><a href="#v:same">same</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r a -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r b -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a :=: b)</li><li class="src short"><a href="#v:weakenR">weakenR</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r1 a -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> r1 r2 r -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r a</li><li class="src short"><a href="#v:split">split</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> r1 r2 r -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r a -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Either.html#t:Either">Either</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r1 a) (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r2 a)</li></ul></div><div id="interface"><h1 id="1">Abstract data types-</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Member" class="def">Member</a> ctx a <span class="keyword">where</span></p><div class="doc"><p>A <code>Member ctx a</code> is a "proof" that the type <code>a</code> is in the type- list <code>ctx</code>, meaning that <code>ctx</code> equals-</p><pre> t0 ':>' a ':>' t1 ':>' ... ':>' tn-</pre><p>for some types <code>t0,t1,...,tn</code>.-</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Member_Base" class="def">Member_Base</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (ctx <a href="Data-Type-List-List.html#t::-62-">:></a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:Member_Step" class="def">Member_Step</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> ctx a -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (ctx <a href="Data-Type-List-List.html#t::-62-">:></a> b) a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:Member" class="caption collapser" onclick="toggleSection('i:Member')">Instances</p><div id="section.i:Member" class="show"><table><tr><td class="src"><a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Liftable</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> c a)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="2">Operators on <code><a href="Data-Type-List-Proof-Member.html#t:Member">Member</a></code> proofs-</h1><div class="top"><p class="src"><a name="v:toEq" class="def">toEq</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (<a href="Data-Type-List-List.html#t:Nil">Nil</a> <a href="Data-Type-List-List.html#t::-62-">:></a> a) b -> b :=: a</p></div><div class="top"><p class="src"><a name="v:weakenL" class="def">weakenL</a> :: Proxy r1 -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r2 a -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> (r1 <a href="Data-Type-List-List.html#t::-43--43-:">:++:</a> r2) a</p></div><div class="top"><p class="src"><a name="v:same" class="def">same</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r a -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r b -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (a :=: b)</p></div><div class="top"><p class="src"><a name="v:weakenR" class="def">weakenR</a> :: <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r1 a -> <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> r1 r2 r -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r a</p></div><div class="top"><p class="src"><a name="v:split" class="def">split</a> :: <a href="Data-Type-List-Proof-Append.html#t:Append">Append</a> r1 r2 r -> <a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r a -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/Data-Either.html#t:Either">Either</a> (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r1 a) (<a href="Data-Type-List-Proof-Member.html#t:Member">Member</a> r2 a)</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,12 +0,0 @@-<!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.Type.List</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-Type-List.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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Type.List</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A <em>type list</em> contains types as elements. We use GADT proofs terms to- establish membership and append relations. A <code>Data.Type.List.Map.MapC</code> <code>f</code>- is a vector indexed by a type list, where <code>f :: * -> *</code> is applied to each- type element.-</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short">module <a href="Data-Type-List-List.html">Data.Type.List.List</a></li><li class="src short">module <a href="Data-Type-List-Map.html">Data.Type.List.Map</a></li><li class="src short">module <a href="Data-Type-List-Proof-Member.html">Data.Type.List.Proof.Member</a></li><li class="src short">module <a href="Data-Type-List-Proof-Append.html">Data.Type.List.Proof.Append</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src">module <a href="Data-Type-List-List.html">Data.Type.List.List</a></p></div><div class="doc"><p>Type-level nil, cons, and ++-</p></div><div class="top"><p class="src">module <a href="Data-Type-List-Map.html">Data.Type.List.Map</a></p></div><div class="doc"><p>Vectors parameterized by a <code>* -> *</code> and indexed by a type list-</p></div><div class="top"><p class="src">module <a href="Data-Type-List-Proof-Member.html">Data.Type.List.Proof.Member</a></p></div><div class="doc"><p>Membership functions and proofs-</p></div><div class="top"><p class="src">module <a href="Data-Type-List-Proof-Append.html">Data.Type.List.Proof.Append</a></p></div><div class="doc"><p>Append functions and proofs-</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,4 +0,0 @@-<!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>hobbits-1.0: A library for canonically representing terms with binding (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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">:++:</td><td class="module"><a href="Data-Type-List-List.html#t::-43--43-:">Data.Type.List.List</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">:=:</td><td class="module">Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">:></td><td> </td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Data-Type-List-List.html#t::-62-">Data.Type.List.List</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Data-Type-List-Map.html#v::-62-">Data.Type.List.Map</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">App</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:App">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Append</td><td class="module"><a href="Data-Type-List-Proof-Append.html#t:Append">Data.Type.List.Proof.Append</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">append</td><td class="module"><a href="Data-Type-List-Map.html#v:append">Data.Type.List.Map</a></td></tr><tr><td class="src">Append_Base</td><td class="module"><a href="Data-Type-List-Proof-Append.html#v:Append_Base">Data.Type.List.Proof.Append</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">Append_Step</td><td class="module"><a href="Data-Type-List-Proof-Append.html#v:Append_Step">Data.Type.List.Proof.Append</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">Binding</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#t:Binding">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">cmpName</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:cmpName">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">combineMb</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:combineMb">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">counter</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:counter">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">D</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:D">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Decl</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decl">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Decls</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Decls_Base</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:Decls_Base">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Decls_Cons</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:Decls_Cons">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Decl_Cons</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:Decl_Cons">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Decl_One</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:Decl_One">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">DTerm</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">elimEmptyMb</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:elimEmptyMb">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">empty</td><td class="module"><a href="Data-Type-List-Map.html#v:empty">Data.Type.List.Map</a></td></tr><tr><td class="src">emptyMb</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:emptyMb">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">ex1</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex1">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ex2</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex2">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ex3</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex3">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ex4</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex4">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ex5</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex5">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ex6</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex6">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ex7</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex7">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ExMember</td><td> </td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#t:ExMember">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:ExMember">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">exP</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:exP">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></td></tr><tr><td class="src">ExProxy</td><td> </td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#t:ExProxy">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:ExProxy">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">fresh_name</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:fresh_name">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">L</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Lam</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:Lam">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">lam</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:lam">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">lambdaLift</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting.html#v:lambdaLift">Data.Binding.Hobbits.Examples.LambdaLifting</a></td></tr><tr><td class="src">length</td><td class="module"><a href="Data-Type-List-Proof-Append.html#v:length">Data.Type.List.Proof.Append</a></td></tr><tr><td class="src">Liftable</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#t:Liftable">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">Liftable1</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#t:Liftable1">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">Liftable2</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#t:Liftable2">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">lookup</td><td class="module"><a href="Data-Type-List-Map.html#v:lookup">Data.Type.List.Map</a></td></tr><tr><td class="src">MapC</td><td class="module"><a href="Data-Type-List-Map.html#t:MapC">Data.Type.List.Map</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">mapC</td><td class="module"><a href="Data-Type-List-Map.html#v:mapC">Data.Type.List.Map</a></td></tr><tr><td class="src">Mb</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Data.Binding.Hobbits.Internal</a>, <a href="Data-Binding-Hobbits-Mb.html#t:Mb">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbCmpName</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:mbCmpName">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbLambdaLift</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting.html#v:mbLambdaLift">Data.Binding.Hobbits.Examples.LambdaLifting</a></td></tr><tr><td class="src">mbLift</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:mbLift">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbLift1</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:mbLift1">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbLift2</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:mbLift2">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbList</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:mbList">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbNameBoundP</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:mbNameBoundP">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbToplevel</td><td class="module"><a href="Data-Binding-Hobbits-SuperComb.html#v:mbToplevel">Data.Binding.Hobbits.SuperComb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">mbToProxy</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:mbToProxy">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">Member</td><td class="module"><a href="Data-Type-List-Proof-Member.html#t:Member">Data.Type.List.Proof.Member</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">memberFromLen</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:memberFromLen">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">members</td><td class="module"><a href="Data-Type-List-Map.html#v:members">Data.Type.List.Map</a></td></tr><tr><td class="src">Member_Base</td><td class="module"><a href="Data-Type-List-Proof-Member.html#v:Member_Base">Data.Type.List.Proof.Member</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">Member_Step</td><td class="module"><a href="Data-Type-List-Proof-Member.html#v:Member_Step">Data.Type.List.Proof.Member</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">mkAppend</td><td class="module"><a href="Data-Type-List-Map.html#v:mkAppend">Data.Type.List.Map</a></td></tr><tr><td class="src">MkMb</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:MkMb">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">mkMonoAppend</td><td class="module"><a href="Data-Type-List-Map.html#v:mkMonoAppend">Data.Type.List.Map</a></td></tr><tr><td class="src">MkName</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:MkName">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">mkNuElimData</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#v:mkNuElimData">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">Name</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#t:Name">Data.Binding.Hobbits.Internal</a>, <a href="Data-Binding-Hobbits-Mb.html#t:Name">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">Nil</td><td> </td></tr><tr><td class="alt">1 (Type/Class)</td><td class="module"><a href="Data-Type-List-List.html#t:Nil">Data.Type.List.List</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="alt">2 (Data Constructor)</td><td class="module"><a href="Data-Type-List-Map.html#v:Nil">Data.Type.List.Map</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">nu</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:nu">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">NuElim</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElim">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">NuElimList</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">nuElimListProof</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#v:nuElimListProof">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">NuElimProof</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#t:NuElimProof">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">nuElimProof</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#v:nuElimProof">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">nuMulti</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:nuMulti">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">nuQQ</td><td class="module"><a href="Data-Binding-Hobbits-QQ.html#v:nuQQ">Data.Binding.Hobbits.QQ</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">nuWithElim1</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElim1">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">nuWithElimMulti</td><td class="module"><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElimMulti">Data.Binding.Hobbits.NuElim</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">parsePattern</td><td class="module"><a href="Data-Binding-Hobbits-PatternParser.html#v:parsePattern">Data.Binding.Hobbits.PatternParser</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">parseVar</td><td class="module"><a href="Data-Binding-Hobbits-PatternParser.html#v:parseVar">Data.Binding.Hobbits.PatternParser</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">Proxy</td><td> </td></tr><tr><td class="alt">1 (Data Constructor)</td><td class="module">Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="alt">2 (Type/Class)</td><td class="module">Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">proxy</td><td class="module"><a href="Data-Type-List-Map.html#v:proxy">Data.Type.List.Map</a></td></tr><tr><td class="src">proxyCons</td><td class="module"><a href="Data-Type-List-List.html#v:proxyCons">Data.Type.List.List</a>, Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">proxyFromLen</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:proxyFromLen">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">Refl</td><td class="module">Data.Type.List, Data.Binding.Hobbits</td></tr><tr><td class="src">same</td><td class="module"><a href="Data-Type-List-Proof-Member.html#v:same">Data.Type.List.Proof.Member</a></td></tr><tr><td class="src">separateMb</td><td class="module"><a href="Data-Binding-Hobbits-Mb.html#v:separateMb">Data.Binding.Hobbits.Mb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">singleton</td><td class="module"><a href="Data-Type-List-Map.html#v:singleton">Data.Type.List.Map</a></td></tr><tr><td class="src">split</td><td> </td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="Data-Type-List-Proof-Member.html#v:split">Data.Type.List.Proof.Member</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="Data-Type-List-Map.html#v:split">Data.Type.List.Map</a></td></tr><tr><td class="src">SuperComb</td><td class="module"><a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">Data.Binding.Hobbits.SuperComb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">superComb</td><td class="module"><a href="Data-Binding-Hobbits-SuperComb.html#v:superComb">Data.Binding.Hobbits.SuperComb</a>, Data.Binding.Hobbits</td></tr><tr><td class="src">TApp</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:TApp">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">TDVar</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:TDVar">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">Term</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">toEq</td><td class="module"><a href="Data-Type-List-Proof-Member.html#v:toEq">Data.Type.List.Proof.Member</a></td></tr><tr><td class="src">trans</td><td class="module"><a href="Data-Type-List-Proof-Append.html#v:trans">Data.Type.List.Proof.Append</a></td></tr><tr><td class="src">TVar</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:TVar">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">unsafeLookupC</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:unsafeLookupC">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">unsafeNamesFromInts</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:unsafeNamesFromInts">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">unsafeProxyFromLen</td><td class="module"><a href="Data-Binding-Hobbits-Internal.html#v:unsafeProxyFromLen">Data.Binding.Hobbits.Internal</a></td></tr><tr><td class="src">Var</td><td class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:Var">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a>, Data.Binding.Hobbits.Examples.LambdaLifting</td></tr><tr><td class="src">weakenL</td><td class="module"><a href="Data-Type-List-Proof-Member.html#v:weakenL">Data.Type.List.Proof.Member</a></td></tr><tr><td class="src">weakenR</td><td class="module"><a href="Data-Type-List-Proof-Member.html#v:weakenR">Data.Type.List.Proof.Member</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>
@@ -1,28 +0,0 @@-<!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>
@@ -1,311 +0,0 @@-// Haddock JavaScript utilities--var rspace = /\s\s+/g,- rtrim = /^\s+|\s+$/g;--function spaced(s) { return (" " + s + " ").replace(rspace, " "); }-function trim(s) { return s.replace(rtrim, ""); }--function hasClass(elem, value) {- var className = spaced(elem.className || "");- return className.indexOf( " " + value + " " ) >= 0;-}--function addClass(elem, value) {- var className = spaced(elem.className || "");- if ( className.indexOf( " " + value + " " ) < 0 ) {- elem.className = trim(className + " " + value);- }-}--function removeClass(elem, value) {- var className = spaced(elem.className || "");- className = className.replace(" " + value + " ", " ");- elem.className = trim(className);-}--function toggleClass(elem, valueOn, valueOff, bool) {- if (bool == null) { bool = ! hasClass(elem, valueOn); }- if (bool) {- removeClass(elem, valueOff);- addClass(elem, valueOn);- }- else {- removeClass(elem, valueOn);- addClass(elem, valueOff);- }- return bool;-}---function makeClassToggle(valueOn, valueOff)-{- return function(elem, bool) {- return toggleClass(elem, valueOn, valueOff, bool);- }-}--toggleShow = makeClassToggle("show", "hide");-toggleCollapser = makeClassToggle("collapser", "expander");--function toggleSection(id)-{- var b = toggleShow(document.getElementById("section." + id))- toggleCollapser(document.getElementById("control." + id), b)- return b;-}---function setCookie(name, value) {- document.cookie = name + "=" + escape(value) + ";path=/;";-}--function clearCookie(name) {- document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";-}--function getCookie(name) {- var nameEQ = name + "=";- var ca = document.cookie.split(';');- for(var i=0;i < ca.length;i++) {- var c = ca[i];- while (c.charAt(0)==' ') c = c.substring(1,c.length);- if (c.indexOf(nameEQ) == 0) {- return unescape(c.substring(nameEQ.length,c.length));- }- }- return null;-}----var max_results = 75; // 50 is not enough to search for map in the base libraries-var shown_range = null;-var last_search = null;--function quick_search()-{- perform_search(false);-}--function full_search()-{- perform_search(true);-}---function perform_search(full)-{- var text = document.getElementById("searchbox").value.toLowerCase();- if (text == last_search && !full) return;- last_search = text;- - var table = document.getElementById("indexlist");- var status = document.getElementById("searchmsg");- var children = table.firstChild.childNodes;- - // first figure out the first node with the prefix- var first = bisect(-1);- var last = (first == -1 ? -1 : bisect(1));-- if (first == -1)- {- table.className = "";- status.innerHTML = "No results found, displaying all";- }- else if (first == 0 && last == children.length - 1)- {- table.className = "";- status.innerHTML = "";- }- else if (last - first >= max_results && !full)- {- table.className = "";- status.innerHTML = "More than " + max_results + ", press Search to display";- }- else- {- // decide what you need to clear/show- if (shown_range)- setclass(shown_range[0], shown_range[1], "indexrow");- setclass(first, last, "indexshow");- shown_range = [first, last];- table.className = "indexsearch";- status.innerHTML = "";- }-- - function setclass(first, last, status)- {- for (var i = first; i <= last; i++)- {- children[i].className = status;- }- }- - - // do a binary search, treating 0 as ...- // return either -1 (no 0's found) or location of most far match- function bisect(dir)- {- var first = 0, finish = children.length - 1;- var mid, success = false;-- while (finish - first > 3)- {- mid = Math.floor((finish + first) / 2);-- var i = checkitem(mid);- if (i == 0) i = dir;- if (i == -1)- finish = mid;- else- first = mid;- }- var a = (dir == 1 ? first : finish);- var b = (dir == 1 ? finish : first);- for (var i = b; i != a - dir; i -= dir)- {- if (checkitem(i) == 0) return i;- }- return -1;- } - - - // from an index, decide what the result is- // 0 = match, -1 is lower, 1 is higher- function checkitem(i)- {- var s = getitem(i).toLowerCase().substr(0, text.length);- if (s == text) return 0;- else return (s > text ? -1 : 1);- }- - - // from an index, get its string- // this abstracts over alternates- function getitem(i)- {- for ( ; i >= 0; i--)- {- var s = children[i].firstChild.firstChild.data;- if (s.indexOf(' ') == -1)- return s;- }- return ""; // should never be reached- }-}--function setSynopsis(filename) {- if (parent.window.synopsis) {- if (parent.window.synopsis.location.replace) {- // In Firefox this avoids adding the change to the history.- parent.window.synopsis.location.replace(filename);- } else {- parent.window.synopsis.location = filename;- }- }-}--function addMenuItem(html) {- var menu = document.getElementById("page-menu");- if (menu) {- var btn = menu.firstChild.cloneNode(false);- btn.innerHTML = html;- menu.appendChild(btn);- }-}--function adjustForFrames() {- var bodyCls;- - if (parent.location.href == window.location.href) {- // not in frames, so add Frames button- addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");- bodyCls = "no-frame";- }- else {- bodyCls = "in-frame";- }- addClass(document.body, bodyCls);-}--function reframe() {- setCookie("haddock-reframe", document.URL);- window.location = "frames.html";-}--function postReframe() {- var s = getCookie("haddock-reframe");- if (s) {- parent.window.main.location = s;- clearCookie("haddock-reframe");- }-}--function styles() {- var i, a, es = document.getElementsByTagName("link"), rs = [];- for (i = 0; a = es[i]; i++) {- if(a.rel.indexOf("style") != -1 && a.title) {- rs.push(a);- }- }- return rs;-}--function addStyleMenu() {- var as = styles();- var i, a, btns = "";- for(i=0; a = as[i]; i++) {- btns += "<li><a href='#' onclick=\"setActiveStyleSheet('"- + a.title + "'); return false;\">"- + a.title + "</a></li>"- }- if (as.length > 1) {- var h = "<div id='style-menu-holder'>"- + "<a href='#' onclick='styleMenu(); return false;'>Style ▾</a>"- + "<ul id='style-menu' class='hide'>" + btns + "</ul>"- + "</div>";- addMenuItem(h);- }-}--function setActiveStyleSheet(title) {- var as = styles();- var i, a, found;- for(i=0; a = as[i]; i++) {- a.disabled = true;- // need to do this always, some browsers are edge triggered- if(a.title == title) {- found = a;- }- }- if (found) {- found.disabled = false;- setCookie("haddock-style", title);- }- else {- as[0].disabled = false;- clearCookie("haddock-style");- }- styleMenu(false);-}--function resetStyle() {- var s = getCookie("haddock-style");- if (s) setActiveStyleSheet(s);-}---function styleMenu(show) {- var m = document.getElementById('style-menu');- if (m) toggleShow(m, show);-}---function pageLoad() {- addStyleMenu();- adjustForFrames();- resetStyle();-}-
binary file changed (37170 → absent bytes)
binary file changed (1684 → absent bytes)
@@ -1,4 +0,0 @@-<!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>hobbits-1.0: A library for canonically representing terms with binding</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-Binding-Hobbits.html" target="main">Data.Binding.Hobbits</a></li><li class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting.html" target="main">Data.Binding.Hobbits.Examples.LambdaLifting</a></li><li class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html" target="main">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></li><li class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html" target="main">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a></li><li class="module"><a href="Data-Binding-Hobbits-Internal.html" target="main">Data.Binding.Hobbits.Internal</a></li><li class="module"><a href="Data-Binding-Hobbits-Mb.html" target="main">Data.Binding.Hobbits.Mb</a></li><li class="module"><a href="Data-Binding-Hobbits-NuElim.html" target="main">Data.Binding.Hobbits.NuElim</a></li><li class="module"><a href="Data-Binding-Hobbits-PatternParser.html" target="main">Data.Binding.Hobbits.PatternParser</a></li><li class="module"><a href="Data-Binding-Hobbits-QQ.html" target="main">Data.Binding.Hobbits.QQ</a></li><li class="module"><a href="Data-Binding-Hobbits-SuperComb.html" target="main">Data.Binding.Hobbits.SuperComb</a></li><li class="module"><a href="Data-Type-List.html" target="main">Data.Type.List</a></li><li class="module"><a href="Data-Type-List-List.html" target="main">Data.Type.List.List</a></li><li class="module"><a href="Data-Type-List-Map.html" target="main">Data.Type.List.Map</a></li><li class="module"><a href="Data-Type-List-Proof-Append.html" target="main">Data.Type.List.Proof.Append</a></li><li class="module"><a href="Data-Type-List-Proof-Member.html" target="main">Data.Type.List.Proof.Member</a></li></ul></div></body></html>
@@ -1,7 +0,0 @@-<!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>hobbits-1.0: A library for canonically representing terms with binding</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">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="description" class="doc"><h1>hobbits-1.0: A library for canonically representing terms with binding</h1><p>A library for canonically representing terms with binding via a-constructor for introducing fresh names and a restricted API that avoids the-need for alpha-equivalence.-</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')">Binding</span><ul id="section.n.1.1" class="show"><li><span class="module"><span id="control.n.1.1.1" class="collapser" onclick="toggleSection('n.1.1.1')"> </span><a href="Data-Binding-Hobbits.html">Data.Binding.Hobbits</a></span><ul id="section.n.1.1.1" class="show"><li><span id="control.n.1.1.1.1" class="module collapser" onclick="toggleSection('n.1.1.1.1')">Examples</span><ul id="section.n.1.1.1.1" class="show"><li><span class="module"><span id="control.n.1.1.1.1.1" class="collapser" onclick="toggleSection('n.1.1.1.1.1')"> </span><a href="Data-Binding-Hobbits-Examples-LambdaLifting.html">Data.Binding.Hobbits.Examples.LambdaLifting</a></span><ul id="section.n.1.1.1.1.1" class="show"><li><span class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html">Data.Binding.Hobbits.Examples.LambdaLifting.Examples</a></span></li><li><span class="module"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html">Data.Binding.Hobbits.Examples.LambdaLifting.Terms</a></span></li></ul></li></ul></li><li><span class="module"><a href="Data-Binding-Hobbits-Internal.html">Data.Binding.Hobbits.Internal</a></span></li><li><span class="module"><a href="Data-Binding-Hobbits-Mb.html">Data.Binding.Hobbits.Mb</a></span></li><li><span class="module"><a href="Data-Binding-Hobbits-NuElim.html">Data.Binding.Hobbits.NuElim</a></span></li><li><span class="module"><a href="Data-Binding-Hobbits-PatternParser.html">Data.Binding.Hobbits.PatternParser</a></span></li><li><span class="module"><a href="Data-Binding-Hobbits-QQ.html">Data.Binding.Hobbits.QQ</a></span></li><li><span class="module"><a href="Data-Binding-Hobbits-SuperComb.html">Data.Binding.Hobbits.SuperComb</a></span></li></ul></li></ul></li><li><span id="control.n.1.2" class="module collapser" onclick="toggleSection('n.1.2')">Type</span><ul id="section.n.1.2" class="show"><li><span class="module"><span id="control.n.1.2.1" class="collapser" onclick="toggleSection('n.1.2.1')"> </span><a href="Data-Type-List.html">Data.Type.List</a></span><ul id="section.n.1.2.1" class="show"><li><span class="module"><a href="Data-Type-List-List.html">Data.Type.List.List</a></span></li><li><span class="module"><a href="Data-Type-List-Map.html">Data.Type.List.Map</a></span></li><li><span id="control.n.1.2.1.3" class="module collapser" onclick="toggleSection('n.1.2.1.3')">Proof</span><ul id="section.n.1.2.1.3" class="show"><li><span class="module"><a href="Data-Type-List-Proof-Append.html">Data.Type.List.Proof.Append</a></span></li><li><span class="module"><a href="Data-Type-List-Proof-Member.html">Data.Type.List.Proof.Member</a></span></li></ul></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.8.0</p></div></body></html>
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.Examples.LambdaLifting.Examples</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.Binding.Hobbits.Examples.LambdaLifting.Examples</p></div><div id="interface"><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex1" target="main">ex1</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex2" target="main">ex2</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex3" target="main">ex3</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex4" target="main">ex4</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex5" target="main">ex5</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex6" target="main">ex6</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:ex7" target="main">ex7</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Examples.html#v:exP" target="main">exP</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.Examples.LambdaLifting.Terms</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.Binding.Hobbits.Examples.LambdaLifting.Terms</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:L" target="main">L</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:D" target="main">D</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Term" target="main">Term</a> </p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#v:lam" target="main">lam</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:DTerm" target="main">DTerm</a> </p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decl" target="main">Decl</a> </p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Examples-LambdaLifting-Terms.html#t:Decls" target="main">Decls</a> </p></div></div></body></html>
@@ -1,6 +0,0 @@-<!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.Binding.Hobbits.Examples.LambdaLifting</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.Binding.Hobbits.Examples.LambdaLifting</p></div><div id="interface"><h1>Term data types, using <code><a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a></code>-</h1><h1>The lambda-lifting function-</h1><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting.html#v:lambdaLift" target="main">lambdaLift</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Examples-LambdaLifting.html#v:mbLambdaLift" target="main">mbLambdaLift</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.Internal</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.Binding.Hobbits.Internal</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Internal.html#t:Name" target="main">Name</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Internal.html#t:Mb" target="main">Mb</a> ctx b</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Internal.html#t:ExMember" target="main">ExMember</a> </p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Internal.html#v:memberFromLen" target="main">memberFromLen</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Internal.html#v:unsafeLookupC" target="main">unsafeLookupC</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Internal.html#t:ExProxy" target="main">ExProxy</a> </p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Internal.html#v:proxyFromLen" target="main">proxyFromLen</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Internal.html#v:unsafeProxyFromLen" target="main">unsafeProxyFromLen</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Internal.html#v:unsafeNamesFromInts" target="main">unsafeNamesFromInts</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Internal.html#v:counter" target="main">counter</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Internal.html#v:fresh_name" target="main">fresh_name</a></p></div></div></body></html>
@@ -1,10 +0,0 @@-<!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.Binding.Hobbits.Mb</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.Binding.Hobbits.Mb</p></div><div id="interface"><h1>Abstract types-</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Mb.html#t:Name" target="main">Name</a> a</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="Data-Binding-Hobbits-Mb.html#t:Binding" target="main">Binding</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-Mb.html#t:Mb" target="main">Mb</a> ctx b</p></div><h1>Multi-binding constructors-</h1><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:nu" target="main">nu</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:emptyMb" target="main">emptyMb</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:nuMulti" target="main">nuMulti</a></p></div><h1>Operations on multi-bindings-</h1><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:elimEmptyMb" target="main">elimEmptyMb</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:combineMb" target="main">combineMb</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:separateMb" target="main">separateMb</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:mbToProxy" target="main">mbToProxy</a></p></div><h1>Queries on names-</h1><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:cmpName" target="main">cmpName</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:mbCmpName" target="main">mbCmpName</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:mbNameBoundP" target="main">mbNameBoundP</a></p></div><h1>type classes for lifting data out of bindings-</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Data-Binding-Hobbits-Mb.html#t:Liftable" target="main">Liftable</a> a</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Data-Binding-Hobbits-Mb.html#t:Liftable1" target="main">Liftable1</a> f</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Data-Binding-Hobbits-Mb.html#t:Liftable2" target="main">Liftable2</a> f</p></div><h1>Optimized, safe multi-binding eliminators-</h1><div class="top"><p class="src"><a href="Data-Binding-Hobbits-Mb.html#v:mbList" target="main">mbList</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.NuElim</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.Binding.Hobbits.NuElim</p></div><div id="interface"><div class="top"><p class="src"><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElimMulti" target="main">nuWithElimMulti</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-NuElim.html#v:nuWithElim1" target="main">nuWithElim1</a></p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Data-Binding-Hobbits-NuElim.html#t:NuElim" target="main">NuElim</a> a</p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-NuElim.html#v:mkNuElimData" target="main">mkNuElimData</a></p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimList" target="main">NuElimList</a> args</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-NuElim.html#t:NuElimProof" target="main">NuElimProof</a> a</p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.PatternParser</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.Binding.Hobbits.PatternParser</p></div><div id="interface"><div class="top"><p class="src"><a href="Data-Binding-Hobbits-PatternParser.html#v:parsePattern" target="main">parsePattern</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-PatternParser.html#v:parseVar" target="main">parseVar</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Binding.Hobbits.QQ</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.Binding.Hobbits.QQ</p></div><div id="interface"><div class="top"><p class="src"><a href="Data-Binding-Hobbits-QQ.html#v:nuQQ" target="main">nuQQ</a></p></div></div></body></html>
@@ -1,6 +0,0 @@-<!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.Binding.Hobbits.SuperComb</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.Binding.Hobbits.SuperComb</p></div><div id="interface"><h1>Abstract types-</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb" target="main">SuperComb</a> a</p></div><h1>Operators involving <code><a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a></code>-</h1><div class="top"><p class="src"><a href="Data-Binding-Hobbits-SuperComb.html#v:superComb" target="main">superComb</a></p></div><div class="top"><p class="src"><a href="Data-Binding-Hobbits-SuperComb.html#v:mbToplevel" target="main">mbToplevel</a></p></div></div></body></html>
@@ -1,6 +0,0 @@-<!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.Binding.Hobbits</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.Binding.Hobbits</p></div><div id="interface"><h1>Values under multi-bindings-</h1><h1>Ancilliary modules-</h1></div></body></html>
@@ -1,4 +0,0 @@-<!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.Type.List.List</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.Type.List.List</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Type-List-List.html#t:Nil" target="main">Nil</a> </p></div><div class="top"><p class="src"><span class="keyword">data</span> r <a href="Data-Type-List-List.html#t::-62-" target="main">:></a> a</p></div><div class="top"><p class="src"><span class="keyword">type family</span> r1 <a href="#t::-43--43-:">:++:</a> r2 </p></div><div class="top"><p class="src"><a href="Data-Type-List-List.html#v:proxyCons" target="main">proxyCons</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Type.List.Map</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.Type.List.Map</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Type-List-Map.html#t:MapC" target="main">MapC</a> f c</p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:empty" target="main">empty</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:singleton" target="main">singleton</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:lookup" target="main">lookup</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:mapC" target="main">mapC</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:append" target="main">append</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:mkAppend" target="main">mkAppend</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:mkMonoAppend" target="main">mkMonoAppend</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:split" target="main">split</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:proxy" target="main">proxy</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Map.html#v:members" target="main">members</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Type.List.Proof.Append</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.Type.List.Proof.Append</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Type-List-Proof-Append.html#t:Append" target="main">Append</a> ctx1 ctx2 ctx</p></div><div class="top"><p class="src"><a href="Data-Type-List-Proof-Append.html#v:trans" target="main">trans</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Proof-Append.html#v:length" target="main">length</a></p></div></div></body></html>
@@ -1,6 +0,0 @@-<!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.Type.List.Proof.Member</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.Type.List.Proof.Member</p></div><div id="interface"><h1>Abstract data types-</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="Data-Type-List-Proof-Member.html#t:Member" target="main">Member</a> ctx a</p></div><h1>Operators on <code><a href="Data-Type-List-Proof-Member.html#t:Member">Member</a></code> proofs-</h1><div class="top"><p class="src"><a href="Data-Type-List-Proof-Member.html#v:toEq" target="main">toEq</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Proof-Member.html#v:weakenL" target="main">weakenL</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Proof-Member.html#v:same" target="main">same</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Proof-Member.html#v:weakenR" target="main">weakenR</a></p></div><div class="top"><p class="src"><a href="Data-Type-List-Proof-Member.html#v:split" target="main">split</a></p></div></div></body></html>
@@ -1,4 +0,0 @@-<!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.Type.List</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.Type.List</p></div><div id="interface"></div></body></html>
binary file changed (56 → absent bytes)
@@ -1,542 +0,0 @@-/* @group Fundamentals */--* { margin: 0; padding: 0 }--/* Is this portable? */-html {- background-color: white;- width: 100%;- height: 100%;-}--body {- background: white;- color: black;- text-align: left;- min-height: 100%;- position: relative;-}--p {- margin: 0.8em 0;-}--ul, ol {- margin: 0.8em 0 0.8em 2em;-}--dl {- margin: 0.8em 0;-}--dt {- font-weight: bold;-}-dd {- margin-left: 2em;-}--a { text-decoration: none; }-a[href]:link { color: rgb(196,69,29); }-a[href]:visited { color: rgb(171,105,84); }-a[href]:hover { text-decoration:underline; }--/* @end */--/* @group Fonts & Sizes */--/* Basic technique & IE workarounds from YUI 3- For reasons, see:- http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css- */- -body {- font:13px/1.4 sans-serif;- *font-size:small; /* for IE */- *font:x-small; /* for IE in quirks mode */-}--h1 { font-size: 146.5%; /* 19pt */ } -h2 { font-size: 131%; /* 17pt */ }-h3 { font-size: 116%; /* 15pt */ }-h4 { font-size: 100%; /* 13pt */ }-h5 { font-size: 100%; /* 13pt */ }--select, input, button, textarea {- font:99% sans-serif;-}--table {- font-size:inherit;- font:100%;-}--pre, code, kbd, samp, tt, .src {- font-family:monospace;- *font-size:108%;- line-height: 124%;-}--.links, .link {- font-size: 85%; /* 11pt */-}--#module-header .caption {- font-size: 182%; /* 24pt */-}--.info {- font-size: 85%; /* 11pt */-}--#table-of-contents, #synopsis {- /* font-size: 85%; /* 11pt */-}---/* @end */--/* @group Common */--.caption, h1, h2, h3, h4, h5, h6 { - font-weight: bold;- color: rgb(78,98,114);- margin: 0.8em 0 0.4em;-}--* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {- margin-top: 2em;-}--h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {- margin-top: inherit;-}--ul.links {- list-style: none;- text-align: left;- float: right;- display: inline-table;- margin: 0 0 0 1em;-}--ul.links li {- display: inline;- border-left: 1px solid #d5d5d5; - white-space: nowrap;- padding: 0;-}--ul.links li a {- padding: 0.2em 0.5em;-}--.hide { display: none; }-.show { display: inherit; }-.clear { clear: both; }--.collapser {- background-image: url(minus.gif);- background-repeat: no-repeat;-}-.expander {- background-image: url(plus.gif);- background-repeat: no-repeat;-}-p.caption.collapser,-p.caption.expander {- background-position: 0 0.4em;-}-.collapser, .expander {- padding-left: 14px;- margin-left: -14px;- cursor: pointer;-}--pre {- padding: 0.25em;- margin: 0.8em 0;- background: rgb(229,237,244);- overflow: auto;- border-bottom: 0.25em solid white;- /* white border adds some space below the box to compensate- for visual extra space that paragraphs have between baseline- and the bounding box */-}--.src {- background: #f0f0f0;- padding: 0.2em 0.5em;-}--.keyword { font-weight: normal; }-.def { font-weight: bold; }---/* @end */--/* @group Page Structure */--#content {- margin: 0 auto;- padding: 0 2em 6em;-}--#package-header {- background: rgb(41,56,69);- border-top: 5px solid rgb(78,98,114);- color: #ddd;- padding: 0.2em;- position: relative;- text-align: left;-}--#package-header .caption {- background: url(hslogo-16.png) no-repeat 0em;- color: white;- margin: 0 2em;- font-weight: normal;- font-style: normal;- padding-left: 2em;-}--#package-header a:link, #package-header a:visited { color: white; }-#package-header a:hover { background: rgb(78,98,114); }--#module-header .caption {- color: rgb(78,98,114);- font-weight: bold;- border-bottom: 1px solid #ddd;-}--table.info {- float: right;- padding: 0.5em 1em;- border: 1px solid #ddd;- color: rgb(78,98,114);- background-color: #fff;- max-width: 40%;- border-spacing: 0;- position: relative;- top: -0.5em;- margin: 0 0 0 2em;-}--.info th {- padding: 0 1em 0 0;-}--div#style-menu-holder {- position: relative;- z-index: 2;- display: inline;-}--#style-menu {- position: absolute;- z-index: 1;- overflow: visible;- background: #374c5e;- margin: 0;- text-align: center;- right: 0;- padding: 0;- top: 1.25em;-}--#style-menu li {- display: list-item;- border-style: none;- margin: 0;- padding: 0;- color: #000;- list-style-type: none;-}--#style-menu li + li {- border-top: 1px solid #919191;-}--#style-menu a {- width: 6em;- padding: 3px;- display: block;-}--#footer {- background: #ddd;- border-top: 1px solid #aaa;- padding: 0.5em 0;- color: #666;- text-align: center;- position: absolute;- bottom: 0;- width: 100%;- height: 3em;-}--/* @end */--/* @group Front Matter */--#table-of-contents {- float: right;- clear: right;- background: #faf9dc;- border: 1px solid #d8d7ad;- padding: 0.5em 1em;- max-width: 20em;- margin: 0.5em 0 1em 1em;-}--#table-of-contents .caption {- text-align: center;- margin: 0;-}--#table-of-contents ul {- list-style: none;- margin: 0;-}--#table-of-contents ul ul {- margin-left: 2em;-}--#description .caption {- display: none;-}--#synopsis {- display: none;-}--.no-frame #synopsis {- display: block;- position: fixed;- right: 0;- height: 80%;- top: 10%;- padding: 0;-}--#synopsis .caption {- float: left;- width: 29px;- color: rgba(255,255,255,0);- height: 110px;- margin: 0;- font-size: 1px;- padding: 0;-}--#synopsis p.caption.collapser {- background: url(synopsis.png) no-repeat -64px -8px;-}--#synopsis p.caption.expander {- background: url(synopsis.png) no-repeat 0px -8px;-}--#synopsis ul {- height: 100%;- overflow: auto;- padding: 0.5em;- margin: 0;-}--#synopsis ul ul {- overflow: hidden;-}--#synopsis ul,-#synopsis ul li.src {- background-color: #faf9dc;- white-space: nowrap;- list-style: none;- margin-left: 0;-}--/* @end */--/* @group Main Content */--#interface div.top { margin: 2em 0; }-#interface h1 + div.top,-#interface h2 + div.top,-#interface h3 + div.top,-#interface h4 + div.top,-#interface h5 + div.top {- margin-top: 1em;-}-#interface p.src .link {- float: right;- color: #919191;- border-left: 1px solid #919191;- background: #f0f0f0;- padding: 0 0.5em 0.2em;- margin: 0 -0.5em 0 0.5em;-}--#interface table { border-spacing: 2px; }-#interface td {- vertical-align: top;- padding-left: 0.5em;-}-#interface td.src {- white-space: nowrap;-}-#interface td.doc p {- margin: 0;-}-#interface td.doc p + p {- margin-top: 0.8em;-}--.subs dl {- margin: 0;-}--.subs dt {- float: left;- clear: left;- display: block;- margin: 1px 0;-}--.subs dd {- float: right;- width: 90%;- display: block;- padding-left: 0.5em;- margin-bottom: 0.5em;-}--.subs dd.empty {- display: none;-}--.subs dd p {- margin: 0;-}--.top p.src {- border-top: 1px solid #ccc;-}--.subs, .doc {- /* use this selector for one level of indent */- padding-left: 2em;-}--.arguments {- margin-top: -0.4em;-}-.arguments .caption {- display: none;-}--.fields { padding-left: 1em; }--.fields .caption { display: none; }--.fields p { margin: 0 0; }--/* this seems bulky to me-.methods, .constructors {- background: #f8f8f8;- border: 1px solid #eee;-}-*/--/* @end */--/* @group Auxillary Pages */--#mini {- margin: 0 auto;- padding: 0 1em 1em;-}--#mini > * {- font-size: 93%; /* 12pt */ -}--#mini #module-list .caption,-#mini #module-header .caption {- font-size: 125%; /* 15pt */-}--#mini #interface h1,-#mini #interface h2,-#mini #interface h3,-#mini #interface h4 {- font-size: 109%; /* 13pt */- margin: 1em 0 0;-}--#mini #interface .top,-#mini #interface .src {- margin: 0;-}--#mini #module-list ul {- list-style: none;- margin: 0;-}--#alphabet ul {- list-style: none;- padding: 0;- margin: 0.5em 0 0;- text-align: center;-}--#alphabet li {- display: inline;- margin: 0 0.25em;-}--#alphabet a {- font-weight: bold;-}--#index .caption,-#module-list .caption { font-size: 131%; /* 17pt */ }--#index table {- margin-left: 2em;-}--#index .src {- font-weight: bold;-}-#index .alt {- font-size: 77%; /* 10pt */- font-style: italic;- padding-left: 2em;-}--#index td + td {- padding-left: 1em;-}--#module-list ul {- list-style: none;- margin: 0 0 0 2em;-}--#module-list li {- clear: right;-}--#module-list span.collapser,-#module-list span.expander {- background-position: 0 0.3em;-}--#module-list .package {- float: right;-}--/* @end */
binary file changed (59 → absent bytes)
binary file changed (11327 → absent bytes)
@@ -1,2 +0,0 @@-[InstalledPackageInfo {installedPackageId = InstalledPackageId "hobbits-1.0-inplace", sourcePackageId = PackageIdentifier {pkgName = PackageName "hobbits", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "emw4@rice.edu", author = "Eddy Westbrook, Nicolas Frisby, Paul Brauner", stability = "", homepage = "", pkgUrl = "", description = "A library for canonically representing terms with binding via a\nconstructor for introducing fresh names and a restricted API that avoids the\nneed for alpha-equivalence.", category = "Data Structures", exposed = True, exposedModules = ["Data.Type.List","Data.Type.List.List","Data.Type.List.Map","Data.Type.List.Proof.Append","Data.Type.List.Proof.Member","Data.Binding.Hobbits","Data.Binding.Hobbits.Mb","Data.Binding.Hobbits.SuperComb","Data.Binding.Hobbits.QQ","Data.Binding.Hobbits.Internal","Data.Binding.Hobbits.PatternParser","Data.Binding.Hobbits.NuElim","Data.Binding.Hobbits.Examples.LambdaLifting","Data.Binding.Hobbits.Examples.LambdaLifting.Terms","Data.Binding.Hobbits.Examples.LambdaLifting.Examples"], hiddenModules = [], importDirs = ["/Users/eddy/rice/nominal-patch-tag/hackage/dist/build"], libraryDirs = ["/Users/eddy/rice/nominal-patch-tag/hackage/dist/build"], hsLibraries = ["HShobbits-1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "deepseq-1.1.0.2-05098fd181f7a90abfdf1482f46b9727",InstalledPackageId "mtl-2.0.1.0-53db6a067853ff76cc2a84d2eb4d3dbf",InstalledPackageId "parsec-3.1.1-feb87b0750c4a6becf906976b2dd6e10",InstalledPackageId "syb-0.3.3-f550926985bf2b6a02a79e58143b9352",InstalledPackageId "tagged-0.2.2.1-b99cc5d0afca8afcb6b81fac05c923ac",InstalledPackageId "template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f",InstalledPackageId "type-equality-0.1.0-a69589747ca60eebd5594393768bbf2d"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/rice/nominal-patch-tag/hackage/dist/doc/html/hobbits/hobbits.haddock"], haddockHTMLs = ["/Users/eddy/rice/nominal-patch-tag/hackage/dist/doc/html/hobbits"]}-]
@@ -1,2 +0,0 @@-Saved package config for hobbits-1.0 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 "/Users/eddy/.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,0,0], versionTags = []})),Dependency (PackageName "deepseq") (ThisVersion (Version {versionBranch = [1,1,0,2], versionTags = []})),Dependency (PackageName "mtl") (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []})),Dependency (PackageName "parsec") (ThisVersion (Version {versionBranch = [3,1,1], versionTags = []})),Dependency (PackageName "syb") (ThisVersion (Version {versionBranch = [0,3,3], versionTags = []})),Dependency (PackageName "tagged") (ThisVersion (Version {versionBranch = [0,2,2,1], versionTags = []})),Dependency (PackageName "template-haskell") (ThisVersion (Version {versionBranch = [2,5,0,0], versionTags = []})),Dependency (PackageName "type-equality") (ThisVersion (Version {versionBranch = [0,1,0], versionTags = []}))], configConfigurationsFlags = [], configTests = Flag False}, extraConfigArgs = [], installDirTemplates = InstallDirs {prefix = "/Users/eddy/.cabal", bindir = "$prefix/bin", libdir = "$prefix/lib", libsubdir = "$pkgid/$compiler", dynlibdir = "$libdir", libexecdir = "$prefix/libexec", progdir = "$libdir/hugs/programs", includedir = "$libdir/$libsubdir/include", datadir = "$prefix/share", datasubdir = "$pkgid", docdir = "$datadir/doc/$pkgid", mandir = "$datadir/man", htmldir = "$docdir/html", haddockdir = "$htmldir"}, compiler = Compiler {compilerId = CompilerId GHC (Version {versionBranch = [7,0,1], 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.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,3,0,0], versionTags = []}}),(InstalledPackageId "deepseq-1.1.0.2-05098fd181f7a90abfdf1482f46b9727",PackageIdentifier {pkgName = PackageName "deepseq", pkgVersion = Version {versionBranch = [1,1,0,2], versionTags = []}}),(InstalledPackageId "mtl-2.0.1.0-53db6a067853ff76cc2a84d2eb4d3dbf",PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}}),(InstalledPackageId "parsec-3.1.1-feb87b0750c4a6becf906976b2dd6e10",PackageIdentifier {pkgName = PackageName "parsec", pkgVersion = Version {versionBranch = [3,1,1], versionTags = []}}),(InstalledPackageId "syb-0.3.3-f550926985bf2b6a02a79e58143b9352",PackageIdentifier {pkgName = PackageName "syb", pkgVersion = Version {versionBranch = [0,3,3], versionTags = []}}),(InstalledPackageId "tagged-0.2.2.1-b99cc5d0afca8afcb6b81fac05c923ac",PackageIdentifier {pkgName = PackageName "tagged", pkgVersion = Version {versionBranch = [0,2,2,1], versionTags = []}}),(InstalledPackageId "template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f",PackageIdentifier {pkgName = PackageName "template-haskell", pkgVersion = Version {versionBranch = [2,5,0,0], versionTags = []}}),(InstalledPackageId "type-equality-0.1.0-a69589747ca60eebd5594393768bbf2d",PackageIdentifier {pkgName = PackageName "type-equality", pkgVersion = Version {versionBranch = [0,1,0], versionTags = []}})]}), executableConfigs = [], testSuiteConfigs = [], installedPkgs = PackageIndex (fromList [(InstalledPackageId "array-0.3.0.2-197667a808e421fc275e1d8f73f58618",InstalledPackageInfo {installedPackageId = InstalledPackageId "array-0.3.0.2-197667a808e421fc275e1d8f73f58618", sourcePackageId = PackageIdentifier {pkgName = PackageName "array", pkgVersion = Version {versionBranch = [0,3,0,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package defines the classes @IArray@ of immutable arrays and\n@MArray@ of arrays mutable within appropriate monads, as well as\nsome instances of these classes.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Array","Base"],ModuleName ["Data","Array","IArray"],ModuleName ["Data","Array","IO"],ModuleName ["Data","Array","IO","Internals"],ModuleName ["Data","Array","MArray"],ModuleName ["Data","Array","ST"],ModuleName ["Data","Array","Storable"],ModuleName ["Data","Array","Unboxed"],ModuleName ["Data","Array"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/array-0.3.0.2"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/array-0.3.0.2"], hsLibraries = ["HSarray-0.3.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/array-0.3.0.2/array.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/array-0.3.0.2"]}),(InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,3,0,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 ["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 ["System","Event"],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 = [ModuleName ["System","Event","Array"],ModuleName ["System","Event","Clock"],ModuleName ["System","Event","Control"],ModuleName ["System","Event","EPoll"],ModuleName ["System","Event","IntMap"],ModuleName ["System","Event","Internal"],ModuleName ["System","Event","KQueue"],ModuleName ["System","Event","Manager"],ModuleName ["System","Event","PSQ"],ModuleName ["System","Event","Poll"],ModuleName ["System","Event","Thread"],ModuleName ["System","Event","Unique"]], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/base-4.3.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/base-4.3.0.0"], hsLibraries = ["HSbase-4.3.0.0"], extraLibraries = ["iconv"], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/base-4.3.0.0/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054",InstalledPackageId "integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/base.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1"], hsLibraries = ["HSrts"], extraLibraries = ["m","dl"], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/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","-Wl,-search_paths_first","-read_only_relocs","warning"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "bytestring-0.9.1.8-2e812324817b74c7c5038e2cb74d96a9",InstalledPackageInfo {installedPackageId = InstalledPackageId "bytestring-0.9.1.8-2e812324817b74c7c5038e2cb74d96a9", sourcePackageId = PackageIdentifier {pkgName = PackageName "bytestring", pkgVersion = Version {versionBranch = [0,9,1,8], versionTags = []}}, license = BSD3, copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2009,\n(c) David Roundy 2003-2005.", maintainer = "dons@galois.com, duncan@haskell.org", author = "Don Stewart, Duncan Coutts", stability = "", homepage = "http://www.cse.unsw.edu.au/~dons/fps.html", pkgUrl = "", description = "A time and space-efficient implementation of byte vectors using\npacked Word8 arrays, suitable for high performance use, both in terms\nof large data quantities, or high speed requirements. Byte vectors\nare encoded as strict 'Word8' arrays of bytes, and lazy lists of\nstrict chunks, held in a 'ForeignPtr', and can be passed between C\nand Haskell with little effort.\n\nTest coverage data for this library is available at:\n<http://code.haskell.org/~dons/tests/bytestring/hpc_index.html>", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","ByteString"],ModuleName ["Data","ByteString","Char8"],ModuleName ["Data","ByteString","Unsafe"],ModuleName ["Data","ByteString","Internal"],ModuleName ["Data","ByteString","Lazy"],ModuleName ["Data","ByteString","Lazy","Char8"],ModuleName ["Data","ByteString","Lazy","Internal"],ModuleName ["Data","ByteString","Fusion"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/bytestring-0.9.1.8"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/bytestring-0.9.1.8"], hsLibraries = ["HSbytestring-0.9.1.8"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/bytestring-0.9.1.8/include"], includes = ["fpstring.h"], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.8/bytestring.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.8"]}),(InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01",InstalledPackageInfo {installedPackageId = InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01", sourcePackageId = PackageIdentifier {pkgName = PackageName "containers", pkgVersion = Version {versionBranch = [0,4,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains efficient general-purpose implementations\nof various basic immutable container types. The declared cost of\neach operation is either worst-case or amortized, but remains\nvalid even if structures are shared.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Graph"],ModuleName ["Data","Sequence"],ModuleName ["Data","Tree"],ModuleName ["Data","IntMap"],ModuleName ["Data","IntSet"],ModuleName ["Data","Map"],ModuleName ["Data","Set"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/containers-0.4.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/containers-0.4.0.0"], hsLibraries = ["HScontainers-0.4.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.3.0.2-197667a808e421fc275e1d8f73f58618",InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/containers.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/containers-0.4.0.0"]}),(InstalledPackageId "data-default-0.2.0.1-343b61b704d63b2bc6e0c12e5e329d8a",InstalledPackageInfo {installedPackageId = InstalledPackageId "data-default-0.2.0.1-343b61b704d63b2bc6e0c12e5e329d8a", sourcePackageId = PackageIdentifier {pkgName = PackageName "data-default", pkgVersion = Version {versionBranch = [0,2,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "<l.mai@web.de>", author = "Lukas Mai", stability = "", homepage = "", pkgUrl = "", description = "", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","Default"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/data-default-0.2.0.1/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/data-default-0.2.0.1/ghc-7.0.1"], hsLibraries = ["HSdata-default-0.2.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/data-default-0.2.0.1/html/data-default.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/data-default-0.2.0.1/html"]}),(InstalledPackageId "deepseq-1.1.0.2-05098fd181f7a90abfdf1482f46b9727",InstalledPackageInfo {installedPackageId = InstalledPackageId "deepseq-1.1.0.2-05098fd181f7a90abfdf1482f46b9727", sourcePackageId = PackageIdentifier {pkgName = PackageName "deepseq", pkgVersion = Version {versionBranch = [1,1,0,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package provides methods for fully evaluating data structures\n(\\\"deep evaluation\\\"). Deep evaluation is often used for adding\nstrictness to a program, e.g. in order to force pending exceptions,\nremove space leaks, or force lazy I/O to happen. It is also useful\nin parallel programs, to ensure pending work does not migrate to the\nwrong thread.\n\nThe primary use of this package is via the 'deepseq' function, a\n\\\"deep\\\" version of 'seq'. It is implemented on top of an 'NFData'\ntypeclass (\\\"Normal Form Data\\\", data structures with no unevaluated\ncomponents) which defines strategies for fully evaluating different\ndata types.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","DeepSeq"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/deepseq-1.1.0.2/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/deepseq-1.1.0.2/ghc-7.0.1"], hsLibraries = ["HSdeepseq-1.1.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.3.0.2-197667a808e421fc275e1d8f73f58618",InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/deepseq-1.1.0.2/html/deepseq.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/deepseq-1.1.0.2/html"]}),(InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054",InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054", 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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/ghc-prim-0.2.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/ghc-prim.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0"]}),(InstalledPackageId "integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e",InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,2,0,2], 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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/integer-gmp-0.2.0.2"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/integer-gmp-0.2.0.2"], hsLibraries = ["HSinteger-gmp-0.2.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/integer-gmp-0.2.0.2/integer-gmp.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/integer-gmp-0.2.0.2"]}),(InstalledPackageId "mtl-2.0.1.0-53db6a067853ff76cc2a84d2eb4d3dbf",InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.0.1.0-53db6a067853ff76cc2a84d2eb4d3dbf", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "Andy Gill", stability = "", homepage = "", pkgUrl = "", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, 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>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/mtl-2.0.1.0/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/mtl-2.0.1.0/ghc-7.0.1"], hsLibraries = ["HSmtl-2.0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "transformers-0.2.2.0-2b42e771f1a8057e2ab6dac97c917eed"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/mtl-2.0.1.0/html/mtl.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/mtl-2.0.1.0/html"]}),(InstalledPackageId "parsec-3.1.1-feb87b0750c4a6becf906976b2dd6e10",InstalledPackageInfo {installedPackageId = InstalledPackageId "parsec-3.1.1-feb87b0750c4a6becf906976b2dd6e10", sourcePackageId = PackageIdentifier {pkgName = PackageName "parsec", pkgVersion = Version {versionBranch = [3,1,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Antoine Latter <aslatter@gmail.com>", author = "Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>", stability = "", homepage = "http://www.cs.uu.nl/~daan/parsec.html", pkgUrl = "", description = "Parsec is designed from scratch as an industrial-strength parser\nlibrary. It is simple, safe, well documented (on the package\nhomepage), has extensive libraries and good error messages,\nand is also fast. It is defined as a monad transformer that can be\nstacked on arbitrary monads, and it is also parametric in the\ninput stream type.", category = "Parsing", exposed = True, exposedModules = [ModuleName ["Text","Parsec"],ModuleName ["Text","Parsec","String"],ModuleName ["Text","Parsec","ByteString"],ModuleName ["Text","Parsec","ByteString","Lazy"],ModuleName ["Text","Parsec","Pos"],ModuleName ["Text","Parsec","Error"],ModuleName ["Text","Parsec","Prim"],ModuleName ["Text","Parsec","Char"],ModuleName ["Text","Parsec","Combinator"],ModuleName ["Text","Parsec","Token"],ModuleName ["Text","Parsec","Expr"],ModuleName ["Text","Parsec","Language"],ModuleName ["Text","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec"],ModuleName ["Text","ParserCombinators","Parsec","Char"],ModuleName ["Text","ParserCombinators","Parsec","Combinator"],ModuleName ["Text","ParserCombinators","Parsec","Error"],ModuleName ["Text","ParserCombinators","Parsec","Expr"],ModuleName ["Text","ParserCombinators","Parsec","Language"],ModuleName ["Text","ParserCombinators","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec","Pos"],ModuleName ["Text","ParserCombinators","Parsec","Prim"],ModuleName ["Text","ParserCombinators","Parsec","Token"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/parsec-3.1.1/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/parsec-3.1.1/ghc-7.0.1"], hsLibraries = ["HSparsec-3.1.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "bytestring-0.9.1.8-2e812324817b74c7c5038e2cb74d96a9",InstalledPackageId "mtl-2.0.1.0-53db6a067853ff76cc2a84d2eb4d3dbf"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/parsec-3.1.1/html/parsec.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/parsec-3.1.1/html"]}),(InstalledPackageId "pretty-1.0.1.2-f6587152d238225a12c4fab838d74356",InstalledPackageInfo {installedPackageId = InstalledPackageId "pretty-1.0.1.2-f6587152d238225a12c4fab838d74356", sourcePackageId = PackageIdentifier {pkgName = PackageName "pretty", pkgVersion = Version {versionBranch = [1,0,1,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains John Hughes's pretty-printing library,\nheavily modified by Simon Peyton Jones.", category = "Text", exposed = True, exposedModules = [ModuleName ["Text","PrettyPrint"],ModuleName ["Text","PrettyPrint","HughesPJ"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/pretty-1.0.1.2"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/pretty-1.0.1.2"], hsLibraries = ["HSpretty-1.0.1.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/pretty-1.0.1.2/pretty.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/pretty-1.0.1.2"]}),(InstalledPackageId "semigroups-0.5.0.2-c8b60de290fb9972e0f7991aad26cb1c",InstalledPackageInfo {installedPackageId = InstalledPackageId "semigroups-0.5.0.2-c8b60de290fb9972e0f7991aad26cb1c", sourcePackageId = PackageIdentifier {pkgName = PackageName "semigroups", pkgVersion = Version {versionBranch = [0,5,0,2], versionTags = []}}, license = BSD3, copyright = "Copyright (C) 2011 Edward A. Kmett", maintainer = "Edward A. Kmett <ekmett@gmail.com>", author = "Edward A. Kmett", stability = "provisional", homepage = "http://github.com/ekmett/semigroups/", pkgUrl = "", description = "Haskell 98 semigroups", category = "Algebra, Data, Data Structures, Math", exposed = True, exposedModules = [ModuleName ["Data","Semigroup"],ModuleName ["Data","List","NonEmpty"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/semigroups-0.5.0.2/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/semigroups-0.5.0.2/ghc-7.0.1"], hsLibraries = ["HSsemigroups-0.5.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/semigroups-0.5.0.2/html/semigroups.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/semigroups-0.5.0.2/html"]}),(InstalledPackageId "syb-0.3.3-f550926985bf2b6a02a79e58143b9352",InstalledPackageInfo {installedPackageId = InstalledPackageId "syb-0.3.3-f550926985bf2b6a02a79e58143b9352", sourcePackageId = PackageIdentifier {pkgName = PackageName "syb", pkgVersion = Version {versionBranch = [0,3,3], versionTags = []}}, license = BSD3, copyright = "", maintainer = "generics@haskell.org", author = "Ralf Lammel, Simon Peyton Jones", stability = "provisional", homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB", pkgUrl = "", description = "This package contains the generics system described in the\n/Scrap Your Boilerplate/ papers (see\n<http://www.cs.uu.nl/wiki/GenericProgramming/SYB>).\nIt defines the @Data@ class of types permitting folding and unfolding\nof constructor applications, instances of this class for primitive\ntypes, and a variety of traversals.", category = "Generics", exposed = True, exposedModules = [ModuleName ["Data","Generics"],ModuleName ["Data","Generics","Basics"],ModuleName ["Data","Generics","Instances"],ModuleName ["Data","Generics","Aliases"],ModuleName ["Data","Generics","Schemes"],ModuleName ["Data","Generics","Text"],ModuleName ["Data","Generics","Twins"],ModuleName ["Data","Generics","Builders"],ModuleName ["Generics","SYB"],ModuleName ["Generics","SYB","Basics"],ModuleName ["Generics","SYB","Instances"],ModuleName ["Generics","SYB","Aliases"],ModuleName ["Generics","SYB","Schemes"],ModuleName ["Generics","SYB","Text"],ModuleName ["Generics","SYB","Twins"],ModuleName ["Generics","SYB","Builders"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/syb-0.3.3/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/syb-0.3.3/ghc-7.0.1"], hsLibraries = ["HSsyb-0.3.3"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/syb-0.3.3/html/syb.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/syb-0.3.3/html"]}),(InstalledPackageId "tagged-0.2.2.1-b99cc5d0afca8afcb6b81fac05c923ac",InstalledPackageInfo {installedPackageId = InstalledPackageId "tagged-0.2.2.1-b99cc5d0afca8afcb6b81fac05c923ac", sourcePackageId = PackageIdentifier {pkgName = PackageName "tagged", pkgVersion = Version {versionBranch = [0,2,2,1], versionTags = []}}, license = BSD3, copyright = "2009-2011 Edward A. Kmett", maintainer = "Edward A. Kmett <ekmett@gmail.com>", author = "Edward A. Kmett", stability = "experimental", homepage = "http://github.com/ekmett/tagged", pkgUrl = "", description = "Provides newtype wrappers for phantom types to avoid unsafely passing dummy arguments", category = "Data, Phantom Types", exposed = True, exposedModules = [ModuleName ["Data","Tagged"],ModuleName ["Data","Proxy"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/tagged-0.2.2.1/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/tagged-0.2.2.1/ghc-7.0.1"], hsLibraries = ["HStagged-0.2.2.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "data-default-0.2.0.1-343b61b704d63b2bc6e0c12e5e329d8a",InstalledPackageId "semigroups-0.5.0.2-c8b60de290fb9972e0f7991aad26cb1c"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/tagged-0.2.2.1/html/tagged.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/tagged-0.2.2.1/html"]}),(InstalledPackageId "template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f",InstalledPackageInfo {installedPackageId = InstalledPackageId "template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f", sourcePackageId = PackageIdentifier {pkgName = PackageName "template-haskell", pkgVersion = Version {versionBranch = [2,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "Facilities for manipulating Haskell source code using Template Haskell.", category = "", exposed = True, exposedModules = [ModuleName ["Language","Haskell","TH","Syntax","Internals"],ModuleName ["Language","Haskell","TH","Syntax"],ModuleName ["Language","Haskell","TH","PprLib"],ModuleName ["Language","Haskell","TH","Ppr"],ModuleName ["Language","Haskell","TH","Lib"],ModuleName ["Language","Haskell","TH","Quote"],ModuleName ["Language","Haskell","TH"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/template-haskell-2.5.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/template-haskell-2.5.0.0"], hsLibraries = ["HStemplate-haskell-2.5.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01",InstalledPackageId "pretty-1.0.1.2-f6587152d238225a12c4fab838d74356"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/template-haskell.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0"]}),(InstalledPackageId "transformers-0.2.2.0-2b42e771f1a8057e2ab6dac97c917eed",InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-2b42e771f1a8057e2ab6dac97c917eed", 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 = ["/Users/eddy/.cabal/lib/transformers-0.2.2.0/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/transformers-0.2.2.0/ghc-7.0.1"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/transformers-0.2.2.0/html/transformers.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/transformers-0.2.2.0/html"]}),(InstalledPackageId "type-equality-0.1.0-a69589747ca60eebd5594393768bbf2d",InstalledPackageInfo {installedPackageId = InstalledPackageId "type-equality-0.1.0-a69589747ca60eebd5594393768bbf2d", sourcePackageId = PackageIdentifier {pkgName = PackageName "type-equality", pkgVersion = Version {versionBranch = [0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "hesselink@gmail.com", author = "Erik Hesselink, Martijn van Steenbergen", stability = "experimental", homepage = "http://github.com/hesselink/type-equality/", pkgUrl = "", description = "In the presence of GADTs, sometimes a proof is\nneeded that two types are equal. This package\ncontains an equality type for this purpose, plus its\nproperties (reflexive, symmetric, transitive) and\nsome useful operations (substitution, congruence,\ncoercion/cast). It also contains a type class for\nproducing equality proofs, providing some form of\ndecidable equality on types.", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","Type","Equality"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/type-equality-0.1.0/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/type-equality-0.1.0/ghc-7.0.1"], hsLibraries = ["HStype-equality-0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/type-equality-0.1.0/html/type-equality.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/type-equality-0.1.0/html"]})]) (fromList [(PackageName "array",fromList [(Version {versionBranch = [0,3,0,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "array-0.3.0.2-197667a808e421fc275e1d8f73f58618", sourcePackageId = PackageIdentifier {pkgName = PackageName "array", pkgVersion = Version {versionBranch = [0,3,0,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package defines the classes @IArray@ of immutable arrays and\n@MArray@ of arrays mutable within appropriate monads, as well as\nsome instances of these classes.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Array","Base"],ModuleName ["Data","Array","IArray"],ModuleName ["Data","Array","IO"],ModuleName ["Data","Array","IO","Internals"],ModuleName ["Data","Array","MArray"],ModuleName ["Data","Array","ST"],ModuleName ["Data","Array","Storable"],ModuleName ["Data","Array","Unboxed"],ModuleName ["Data","Array"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/array-0.3.0.2"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/array-0.3.0.2"], hsLibraries = ["HSarray-0.3.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/array-0.3.0.2/array.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/array-0.3.0.2"]}])]),(PackageName "base",fromList [(Version {versionBranch = [4,3,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,3,0,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 ["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 ["System","Event"],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 = [ModuleName ["System","Event","Array"],ModuleName ["System","Event","Clock"],ModuleName ["System","Event","Control"],ModuleName ["System","Event","EPoll"],ModuleName ["System","Event","IntMap"],ModuleName ["System","Event","Internal"],ModuleName ["System","Event","KQueue"],ModuleName ["System","Event","Manager"],ModuleName ["System","Event","PSQ"],ModuleName ["System","Event","Poll"],ModuleName ["System","Event","Thread"],ModuleName ["System","Event","Unique"]], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/base-4.3.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/base-4.3.0.0"], hsLibraries = ["HSbase-4.3.0.0"], extraLibraries = ["iconv"], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/base-4.3.0.0/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054",InstalledPackageId "integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0/base.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/base-4.3.0.0"]}])]),(PackageName "bytestring",fromList [(Version {versionBranch = [0,9,1,8], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "bytestring-0.9.1.8-2e812324817b74c7c5038e2cb74d96a9", sourcePackageId = PackageIdentifier {pkgName = PackageName "bytestring", pkgVersion = Version {versionBranch = [0,9,1,8], versionTags = []}}, license = BSD3, copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2009,\n(c) David Roundy 2003-2005.", maintainer = "dons@galois.com, duncan@haskell.org", author = "Don Stewart, Duncan Coutts", stability = "", homepage = "http://www.cse.unsw.edu.au/~dons/fps.html", pkgUrl = "", description = "A time and space-efficient implementation of byte vectors using\npacked Word8 arrays, suitable for high performance use, both in terms\nof large data quantities, or high speed requirements. Byte vectors\nare encoded as strict 'Word8' arrays of bytes, and lazy lists of\nstrict chunks, held in a 'ForeignPtr', and can be passed between C\nand Haskell with little effort.\n\nTest coverage data for this library is available at:\n<http://code.haskell.org/~dons/tests/bytestring/hpc_index.html>", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","ByteString"],ModuleName ["Data","ByteString","Char8"],ModuleName ["Data","ByteString","Unsafe"],ModuleName ["Data","ByteString","Internal"],ModuleName ["Data","ByteString","Lazy"],ModuleName ["Data","ByteString","Lazy","Char8"],ModuleName ["Data","ByteString","Lazy","Internal"],ModuleName ["Data","ByteString","Fusion"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/bytestring-0.9.1.8"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/bytestring-0.9.1.8"], hsLibraries = ["HSbytestring-0.9.1.8"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/bytestring-0.9.1.8/include"], includes = ["fpstring.h"], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.8/bytestring.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.8"]}])]),(PackageName "containers",fromList [(Version {versionBranch = [0,4,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01", sourcePackageId = PackageIdentifier {pkgName = PackageName "containers", pkgVersion = Version {versionBranch = [0,4,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains efficient general-purpose implementations\nof various basic immutable container types. The declared cost of\neach operation is either worst-case or amortized, but remains\nvalid even if structures are shared.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Graph"],ModuleName ["Data","Sequence"],ModuleName ["Data","Tree"],ModuleName ["Data","IntMap"],ModuleName ["Data","IntSet"],ModuleName ["Data","Map"],ModuleName ["Data","Set"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/containers-0.4.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/containers-0.4.0.0"], hsLibraries = ["HScontainers-0.4.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.3.0.2-197667a808e421fc275e1d8f73f58618",InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/containers.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/containers-0.4.0.0"]}])]),(PackageName "data-default",fromList [(Version {versionBranch = [0,2,0,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "data-default-0.2.0.1-343b61b704d63b2bc6e0c12e5e329d8a", sourcePackageId = PackageIdentifier {pkgName = PackageName "data-default", pkgVersion = Version {versionBranch = [0,2,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "<l.mai@web.de>", author = "Lukas Mai", stability = "", homepage = "", pkgUrl = "", description = "", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","Default"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/data-default-0.2.0.1/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/data-default-0.2.0.1/ghc-7.0.1"], hsLibraries = ["HSdata-default-0.2.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/data-default-0.2.0.1/html/data-default.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/data-default-0.2.0.1/html"]}])]),(PackageName "deepseq",fromList [(Version {versionBranch = [1,1,0,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "deepseq-1.1.0.2-05098fd181f7a90abfdf1482f46b9727", sourcePackageId = PackageIdentifier {pkgName = PackageName "deepseq", pkgVersion = Version {versionBranch = [1,1,0,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package provides methods for fully evaluating data structures\n(\\\"deep evaluation\\\"). Deep evaluation is often used for adding\nstrictness to a program, e.g. in order to force pending exceptions,\nremove space leaks, or force lazy I/O to happen. It is also useful\nin parallel programs, to ensure pending work does not migrate to the\nwrong thread.\n\nThe primary use of this package is via the 'deepseq' function, a\n\\\"deep\\\" version of 'seq'. It is implemented on top of an 'NFData'\ntypeclass (\\\"Normal Form Data\\\", data structures with no unevaluated\ncomponents) which defines strategies for fully evaluating different\ndata types.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","DeepSeq"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/deepseq-1.1.0.2/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/deepseq-1.1.0.2/ghc-7.0.1"], hsLibraries = ["HSdeepseq-1.1.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.3.0.2-197667a808e421fc275e1d8f73f58618",InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/deepseq-1.1.0.2/html/deepseq.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/deepseq-1.1.0.2/html"]}])]),(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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1"], hsLibraries = ["HSffi"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/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-0713122c5f9038c6f0355a37e294e054", 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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/ghc-prim-0.2.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/ghc-prim.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0"]}])]),(PackageName "integer-gmp",fromList [(Version {versionBranch = [0,2,0,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.2.0.2-bfb191b8468e4d812a2bb92622cb246e", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,2,0,2], 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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/integer-gmp-0.2.0.2"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/integer-gmp-0.2.0.2"], hsLibraries = ["HSinteger-gmp-0.2.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.2.0.0-0713122c5f9038c6f0355a37e294e054"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/integer-gmp-0.2.0.2/integer-gmp.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/integer-gmp-0.2.0.2"]}])]),(PackageName "mtl",fromList [(Version {versionBranch = [2,0,1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.0.1.0-53db6a067853ff76cc2a84d2eb4d3dbf", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "Andy Gill", stability = "", homepage = "", pkgUrl = "", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, 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>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/mtl-2.0.1.0/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/mtl-2.0.1.0/ghc-7.0.1"], hsLibraries = ["HSmtl-2.0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "transformers-0.2.2.0-2b42e771f1a8057e2ab6dac97c917eed"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/mtl-2.0.1.0/html/mtl.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/mtl-2.0.1.0/html"]}])]),(PackageName "parsec",fromList [(Version {versionBranch = [3,1,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "parsec-3.1.1-feb87b0750c4a6becf906976b2dd6e10", sourcePackageId = PackageIdentifier {pkgName = PackageName "parsec", pkgVersion = Version {versionBranch = [3,1,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Antoine Latter <aslatter@gmail.com>", author = "Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>", stability = "", homepage = "http://www.cs.uu.nl/~daan/parsec.html", pkgUrl = "", description = "Parsec is designed from scratch as an industrial-strength parser\nlibrary. It is simple, safe, well documented (on the package\nhomepage), has extensive libraries and good error messages,\nand is also fast. It is defined as a monad transformer that can be\nstacked on arbitrary monads, and it is also parametric in the\ninput stream type.", category = "Parsing", exposed = True, exposedModules = [ModuleName ["Text","Parsec"],ModuleName ["Text","Parsec","String"],ModuleName ["Text","Parsec","ByteString"],ModuleName ["Text","Parsec","ByteString","Lazy"],ModuleName ["Text","Parsec","Pos"],ModuleName ["Text","Parsec","Error"],ModuleName ["Text","Parsec","Prim"],ModuleName ["Text","Parsec","Char"],ModuleName ["Text","Parsec","Combinator"],ModuleName ["Text","Parsec","Token"],ModuleName ["Text","Parsec","Expr"],ModuleName ["Text","Parsec","Language"],ModuleName ["Text","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec"],ModuleName ["Text","ParserCombinators","Parsec","Char"],ModuleName ["Text","ParserCombinators","Parsec","Combinator"],ModuleName ["Text","ParserCombinators","Parsec","Error"],ModuleName ["Text","ParserCombinators","Parsec","Expr"],ModuleName ["Text","ParserCombinators","Parsec","Language"],ModuleName ["Text","ParserCombinators","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec","Pos"],ModuleName ["Text","ParserCombinators","Parsec","Prim"],ModuleName ["Text","ParserCombinators","Parsec","Token"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/parsec-3.1.1/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/parsec-3.1.1/ghc-7.0.1"], hsLibraries = ["HSparsec-3.1.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "bytestring-0.9.1.8-2e812324817b74c7c5038e2cb74d96a9",InstalledPackageId "mtl-2.0.1.0-53db6a067853ff76cc2a84d2eb4d3dbf"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/parsec-3.1.1/html/parsec.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/parsec-3.1.1/html"]}])]),(PackageName "pretty",fromList [(Version {versionBranch = [1,0,1,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "pretty-1.0.1.2-f6587152d238225a12c4fab838d74356", sourcePackageId = PackageIdentifier {pkgName = PackageName "pretty", pkgVersion = Version {versionBranch = [1,0,1,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "This package contains John Hughes's pretty-printing library,\nheavily modified by Simon Peyton Jones.", category = "Text", exposed = True, exposedModules = [ModuleName ["Text","PrettyPrint"],ModuleName ["Text","PrettyPrint","HughesPJ"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/pretty-1.0.1.2"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/pretty-1.0.1.2"], hsLibraries = ["HSpretty-1.0.1.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/pretty-1.0.1.2/pretty.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/pretty-1.0.1.2"]}])]),(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 = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1"], hsLibraries = ["HSrts"], extraLibraries = ["m","dl"], extraGHCiLibraries = [], includeDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/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","-Wl,-search_paths_first","-read_only_relocs","warning"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "semigroups",fromList [(Version {versionBranch = [0,5,0,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "semigroups-0.5.0.2-c8b60de290fb9972e0f7991aad26cb1c", sourcePackageId = PackageIdentifier {pkgName = PackageName "semigroups", pkgVersion = Version {versionBranch = [0,5,0,2], versionTags = []}}, license = BSD3, copyright = "Copyright (C) 2011 Edward A. Kmett", maintainer = "Edward A. Kmett <ekmett@gmail.com>", author = "Edward A. Kmett", stability = "provisional", homepage = "http://github.com/ekmett/semigroups/", pkgUrl = "", description = "Haskell 98 semigroups", category = "Algebra, Data, Data Structures, Math", exposed = True, exposedModules = [ModuleName ["Data","Semigroup"],ModuleName ["Data","List","NonEmpty"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/semigroups-0.5.0.2/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/semigroups-0.5.0.2/ghc-7.0.1"], hsLibraries = ["HSsemigroups-0.5.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/semigroups-0.5.0.2/html/semigroups.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/semigroups-0.5.0.2/html"]}])]),(PackageName "syb",fromList [(Version {versionBranch = [0,3,3], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "syb-0.3.3-f550926985bf2b6a02a79e58143b9352", sourcePackageId = PackageIdentifier {pkgName = PackageName "syb", pkgVersion = Version {versionBranch = [0,3,3], versionTags = []}}, license = BSD3, copyright = "", maintainer = "generics@haskell.org", author = "Ralf Lammel, Simon Peyton Jones", stability = "provisional", homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB", pkgUrl = "", description = "This package contains the generics system described in the\n/Scrap Your Boilerplate/ papers (see\n<http://www.cs.uu.nl/wiki/GenericProgramming/SYB>).\nIt defines the @Data@ class of types permitting folding and unfolding\nof constructor applications, instances of this class for primitive\ntypes, and a variety of traversals.", category = "Generics", exposed = True, exposedModules = [ModuleName ["Data","Generics"],ModuleName ["Data","Generics","Basics"],ModuleName ["Data","Generics","Instances"],ModuleName ["Data","Generics","Aliases"],ModuleName ["Data","Generics","Schemes"],ModuleName ["Data","Generics","Text"],ModuleName ["Data","Generics","Twins"],ModuleName ["Data","Generics","Builders"],ModuleName ["Generics","SYB"],ModuleName ["Generics","SYB","Basics"],ModuleName ["Generics","SYB","Instances"],ModuleName ["Generics","SYB","Aliases"],ModuleName ["Generics","SYB","Schemes"],ModuleName ["Generics","SYB","Text"],ModuleName ["Generics","SYB","Twins"],ModuleName ["Generics","SYB","Builders"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/syb-0.3.3/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/syb-0.3.3/ghc-7.0.1"], hsLibraries = ["HSsyb-0.3.3"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/syb-0.3.3/html/syb.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/syb-0.3.3/html"]}])]),(PackageName "tagged",fromList [(Version {versionBranch = [0,2,2,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "tagged-0.2.2.1-b99cc5d0afca8afcb6b81fac05c923ac", sourcePackageId = PackageIdentifier {pkgName = PackageName "tagged", pkgVersion = Version {versionBranch = [0,2,2,1], versionTags = []}}, license = BSD3, copyright = "2009-2011 Edward A. Kmett", maintainer = "Edward A. Kmett <ekmett@gmail.com>", author = "Edward A. Kmett", stability = "experimental", homepage = "http://github.com/ekmett/tagged", pkgUrl = "", description = "Provides newtype wrappers for phantom types to avoid unsafely passing dummy arguments", category = "Data, Phantom Types", exposed = True, exposedModules = [ModuleName ["Data","Tagged"],ModuleName ["Data","Proxy"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/tagged-0.2.2.1/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/tagged-0.2.2.1/ghc-7.0.1"], hsLibraries = ["HStagged-0.2.2.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "data-default-0.2.0.1-343b61b704d63b2bc6e0c12e5e329d8a",InstalledPackageId "semigroups-0.5.0.2-c8b60de290fb9972e0f7991aad26cb1c"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/tagged-0.2.2.1/html/tagged.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/tagged-0.2.2.1/html"]}])]),(PackageName "template-haskell",fromList [(Version {versionBranch = [2,5,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "template-haskell-2.5.0.0-f262af1f92a427f5cf4133bff041044f", sourcePackageId = PackageIdentifier {pkgName = PackageName "template-haskell", pkgVersion = Version {versionBranch = [2,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", description = "Facilities for manipulating Haskell source code using Template Haskell.", category = "", exposed = True, exposedModules = [ModuleName ["Language","Haskell","TH","Syntax","Internals"],ModuleName ["Language","Haskell","TH","Syntax"],ModuleName ["Language","Haskell","TH","PprLib"],ModuleName ["Language","Haskell","TH","Ppr"],ModuleName ["Language","Haskell","TH","Lib"],ModuleName ["Language","Haskell","TH","Quote"],ModuleName ["Language","Haskell","TH"]], hiddenModules = [], importDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/template-haskell-2.5.0.0"], libraryDirs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/lib/ghc-7.0.1/template-haskell-2.5.0.0"], hsLibraries = ["HStemplate-haskell-2.5.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e",InstalledPackageId "containers-0.4.0.0-5e5729c8cc8101038443c9bd0115af01",InstalledPackageId "pretty-1.0.1.2-f6587152d238225a12c4fab838d74356"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/template-haskell.haddock"], haddockHTMLs = ["/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0"]}])]),(PackageName "transformers",fromList [(Version {versionBranch = [0,2,2,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.2.2.0-2b42e771f1a8057e2ab6dac97c917eed", 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 = ["/Users/eddy/.cabal/lib/transformers-0.2.2.0/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/transformers-0.2.2.0/ghc-7.0.1"], hsLibraries = ["HStransformers-0.2.2.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/transformers-0.2.2.0/html/transformers.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/transformers-0.2.2.0/html"]}])]),(PackageName "type-equality",fromList [(Version {versionBranch = [0,1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "type-equality-0.1.0-a69589747ca60eebd5594393768bbf2d", sourcePackageId = PackageIdentifier {pkgName = PackageName "type-equality", pkgVersion = Version {versionBranch = [0,1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "hesselink@gmail.com", author = "Erik Hesselink, Martijn van Steenbergen", stability = "experimental", homepage = "http://github.com/hesselink/type-equality/", pkgUrl = "", description = "In the presence of GADTs, sometimes a proof is\nneeded that two types are equal. This package\ncontains an equality type for this purpose, plus its\nproperties (reflexive, symmetric, transitive) and\nsome useful operations (substitution, congruence,\ncoercion/cast). It also contains a type class for\nproducing equality proofs, providing some form of\ndecidable equality on types.", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","Type","Equality"]], hiddenModules = [], importDirs = ["/Users/eddy/.cabal/lib/type-equality-0.1.0/ghc-7.0.1"], libraryDirs = ["/Users/eddy/.cabal/lib/type-equality-0.1.0/ghc-7.0.1"], hsLibraries = ["HStype-equality-0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.3.0.0-1ea085b64a078bd9d5eaa9d8d525e35e"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/Users/eddy/.cabal/share/doc/type-equality-0.1.0/html/type-equality.haddock"], haddockHTMLs = ["/Users/eddy/.cabal/share/doc/type-equality-0.1.0/html"]}])])]), pkgDescrFile = Just "./hobbits.cabal", localPkgDescr = PackageDescription {package = PackageIdentifier {pkgName = PackageName "hobbits", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, licenseFile = "LICENSE", copyright = "", maintainer = "emw4@rice.edu", author = "Eddy Westbrook, Nicolas Frisby, Paul Brauner", stability = "", testedWith = [], homepage = "", pkgUrl = "", bugReports = "", sourceRepos = [], synopsis = "A library for canonically representing terms with binding", description = "A library for canonically representing terms with binding via a\nconstructor for introducing fresh names and a restricted API that avoids the\nneed for alpha-equivalence.", category = "Data Structures", customFieldsPD = [], buildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [4], versionTags = []})) (LaterVersion (Version {versionBranch = [4], versionTags = []}))) (EarlierVersion (Version {versionBranch = [5], versionTags = []}))) (ThisVersion (Version {versionBranch = [4,3,0,0], versionTags = []}))),Dependency (PackageName "deepseq") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [1,1,0,2], versionTags = []}))),Dependency (PackageName "mtl") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []}))),Dependency (PackageName "parsec") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [3,1,1], versionTags = []}))),Dependency (PackageName "syb") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,3,3], versionTags = []}))),Dependency (PackageName "tagged") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,2,2,1], versionTags = []}))),Dependency (PackageName "template-haskell") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,5,0,0], versionTags = []}))),Dependency (PackageName "type-equality") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,1,0], versionTags = []})))], specVersionRaw = Right (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,6,0,1], versionTags = []})) (LaterVersion (Version {versionBranch = [1,6,0,1], versionTags = []}))), buildType = Just Simple, library = Just (Library {exposedModules = [ModuleName ["Data","Type","List"],ModuleName ["Data","Type","List","List"],ModuleName ["Data","Type","List","Map"],ModuleName ["Data","Type","List","Proof","Append"],ModuleName ["Data","Type","List","Proof","Member"],ModuleName ["Data","Binding","Hobbits"],ModuleName ["Data","Binding","Hobbits","Mb"],ModuleName ["Data","Binding","Hobbits","SuperComb"],ModuleName ["Data","Binding","Hobbits","QQ"],ModuleName ["Data","Binding","Hobbits","Internal"],ModuleName ["Data","Binding","Hobbits","PatternParser"],ModuleName ["Data","Binding","Hobbits","NuElim"],ModuleName ["Data","Binding","Hobbits","Examples","LambdaLifting"],ModuleName ["Data","Binding","Hobbits","Examples","LambdaLifting","Terms"],ModuleName ["Data","Binding","Hobbits","Examples","LambdaLifting","Examples"]], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], cppOptions = [], ccOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], cSources = [], hsSourceDirs = ["."], otherModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [(GHC,["-fwarn-incomplete-patterns","-fwarn-unused-imports"])], ghcProfOptions = [], ghcSharedOptions = [], customFieldsBI = [], targetBuildDepends = [Dependency (PackageName "base") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [4], versionTags = []})) (LaterVersion (Version {versionBranch = [4], versionTags = []}))) (EarlierVersion (Version {versionBranch = [5], versionTags = []}))) (ThisVersion (Version {versionBranch = [4,3,0,0], versionTags = []}))),Dependency (PackageName "deepseq") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [1,1,0,2], versionTags = []}))),Dependency (PackageName "mtl") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,0,1,0], versionTags = []}))),Dependency (PackageName "parsec") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [3,1,1], versionTags = []}))),Dependency (PackageName "syb") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,3,3], versionTags = []}))),Dependency (PackageName "tagged") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,2,2,1], versionTags = []}))),Dependency (PackageName "template-haskell") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,5,0,0], versionTags = []}))),Dependency (PackageName "type-equality") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,1,0], versionTags = []})))]}}), executables = [], testSuites = [], dataFiles = [], dataDir = "", extraSrcFiles = [], extraTmpFiles = []}, withPrograms = [("ar",ConfiguredProgram {programId = "ar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ar"}}),("gcc",ConfiguredProgram {programId = "gcc", programVersion = Just (Version {versionBranch = [4,0,1], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/gcc"}}),("ghc",ConfiguredProgram {programId = "ghc", programVersion = Just (Version {versionBranch = [7,0,1], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc"}}),("ghc-pkg",ConfiguredProgram {programId = "ghc-pkg", programVersion = Just (Version {versionBranch = [7,0,1], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc-pkg"}}),("haddock",ConfiguredProgram {programId = "haddock", programVersion = Just (Version {versionBranch = [2,8,0], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/haddock"}}),("hsc2hs",ConfiguredProgram {programId = "hsc2hs", programVersion = Just (Version {versionBranch = [0,67], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/hsc2hs"}}),("ld",ConfiguredProgram {programId = "ld", programVersion = Nothing, programDefaultArgs = ["-x"], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ld"}}),("pkg-config",ConfiguredProgram {programId = "pkg-config", programVersion = Just (Version {versionBranch = [0,23], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/pkg-config"}}),("ranlib",ConfiguredProgram {programId = "ranlib", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/ranlib"}}),("strip",ConfiguredProgram {programId = "strip", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/strip"}}),("tar",ConfiguredProgram {programId = "tar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/tar"}})], withPackageDB = [GlobalPackageDB,UserPackageDB], withVanillaLib = True, withProfLib = False, withSharedLib = False, withProfExe = False, withOptimization = NormalOptimisation, withGHCiLib = True, splitObjs = False, stripExes = True, progPrefix = "", progSuffix = ""}
@@ -1,5 +1,5 @@ Name: hobbits-Version: 1.0+Version: 1.1 Synopsis: A library for canonically representing terms with binding Description: A library for canonically representing terms with binding via a@@ -18,14 +18,17 @@ Library Build-Depends: base >= 4 && < 5- Build-Depends: template-haskell- Build-Depends: type-equality, tagged+ Build-Depends: template-haskell >= 2.5 && < 2.8 Build-Depends: syb- Build-Depends: deepseq- Build-Depends: parsec Build-Depends: mtl + Build-Depends: type-equality, tagged+ Build-Depends: deepseq++ Build-Depends: haskell-src-meta >= 0.5.1.1, haskell-src-exts,+ th-expand-syns >= 0.3 && < 0.4+ GHC-Options: -fwarn-incomplete-patterns -fwarn-unused-imports Exposed-Modules: Data.Type.List,@@ -36,7 +39,7 @@ Data.Binding.Hobbits, Data.Binding.Hobbits.Mb,- Data.Binding.Hobbits.SuperComb,+ Data.Binding.Hobbits.Closed, Data.Binding.Hobbits.QQ, Data.Binding.Hobbits.Internal,@@ -46,3 +49,5 @@ Data.Binding.Hobbits.Examples.LambdaLifting, Data.Binding.Hobbits.Examples.LambdaLifting.Terms, Data.Binding.Hobbits.Examples.LambdaLifting.Examples++ Other-Modules: Data.Binding.Hobbits.InternalUtilities