ps.      !"#$%&'()*+,-./0001234:Right-recursive version of (+), to balance the recursion. 1235413223467@shadow: given two alists, return the elements of the first that  are NOT mapped by the second BTests that an alist or environment is well-formed: that its first  | components are all unique. 89:/Convert a maybe to a zero-or-one-element list. ;<=1zipAlist: given two alists with the same domain, 9 returns an alist mapping each of those domain values to @ the pair of the two corresponding values from the given lists. <mapstrcat: transform a list to one of strings, with a given / | function, and join these together with some glue string. ">?@6ABCDEF7GHI8JKLMNOPQRST9U:;<V=W6789:;<= XEnable/disable debugging messages YATrace the given string if debugging is on, or do nothing if not. Z+Force an arbitrary expression, tracing the String arg if  forcing produces an exception. XY[ZXYZ \]\]\] ^_^_^__ `ab`abc`aab defg/Run an ErrorGensym action, raising errors with h. iATry running an ErrorGensym action, packaging result in an Either + | with Left as failure, Right as success. dejfklgimndefgiopropertyDefined x is a property asserting that x can be  | forced without error. p excAsFalse x is a property that acts like x, except that it  | is False when x/ would throw an exception (and never throws an  | exception itself). q"Convert an arbitrary value into a Maybe by forcing it, ( | catching errors and treating them as Nothing. r=A predicate asserting that forcing a thunk produces an error ; | (useful for tests that want to ensure error is thrown). s9Compare two functions at a particular input, incl. error  behavior. tuvwJarbString: Generate a string of some length between 0 and 6, each length  with equal probability xyz{|}~ opqrstuvwxyz{|}~opqrstuvwxyz{|}~ ftvs: free type variables DftvsSubst: the free type variables of a type substitution--that is, H the type variables free in the types in the range of the substitution. Coccurs x ty: does variable x appear in type ty? (Note there are no  type-variable binders). normalizeType: < Renumber all the type variables in a normal way to allow  comparing types. #      -@The number of comprehensions in an expression, a measure of the  complexity of the query. =An interface for semanticizing the Narc concrete language as  | desired (as per %Unembedding domain specific languages by Atkey,  | Lindley and Yallop). BTerms whose every subexpression is annotated with a value of some  | particular type. @Terms in the nested relational calculus (represented concretely  | with named variables) ,substTerm x v m: substite v for x in term m C (Actually incorrect because it does not make substitutions in the  annotation.) @lazyDepth: calculate a list (poss. inf.) whose sum is the depth  of the term. (unused) AApply a function to each term while traversing down, and use its * | result as the annotation of that node. ?Apply a function to each node while traversing *up*, using its / | result as the new annotation for that node. +0 >Inject a data value back into a literal term that denotes it. BappPrim: apply a primitive function to a list of value arguments. Ceval: Evaluate a typed term in a closing environment. Captures the E effects performed by the term. (NB: type info is not actually used;  should eliminate this.)  "!Unary operators used in queries. "Binary operators used in queries. Atomic-typed query fragments. (The representation of SQL queries (e.g. select R from Ts where B)      &The trivial query, returning no rows.  sizeQuery+ returns the number of nodes in a query. It's 4 | abstracted to Num to allow using Unary, and then `lazily' C | counting up to a certain amount. This helps if you only want to C | know whether a (potentially-enormous) query is larger than some  | modest cutoff.  Serialize a Query! to its ASCII SQL serialization.  Dies on those Query s that don't represent valid SQL queries. )     "          <tyCheck env term infers a type for term in environment env. ' The environment has type [(Var, QType)]; J an entry (x, qty) indicates that variable x has the quantified type qty; % a QType (ys, ty) indicates the type  forall ys, ty.  !"#$%&'  ()2Normalize DB terms in a nearly call-by-value way. &An environment, typing all free vars. The term to normalize. *+,- translateTerm5 homomorphically translates a normal-form Term to an  | SQL Query. ./01116Run a Narc query directly against an HDBC connection.  2343Generate a random term, unlikely to be well-typed. 56789:;<=> 23456789:;<=> 23456789:;<=>:Assertion that well-typed terms compile without throwing. ?@?@A?@B6A polymorphic way of embedding constants into a term. $Lift a constant value into a query.   Constable types currently include Bool and Integer. CDBTranslate a Narc term to an SQL query string--perhaps the central  | function of the interface. 'Translate a Narc term to an SQL query. E;Turn a HOAS representation of a Narc term into a concrete,  | named-binder representation. %A dummy value, or zero-width record. !'Apply some primitive function, such as (+) or avg , to a list  of arguments. "!Create a functional abstraction. #(Apply a functional term to an argument. $>A reference to a named database table; second argument is its  schema type. %BA condition between two terms, as determined by the boolean value  of the first term. &$A singleton collection of one item. 'An empty collection. (The union of two collections )BConstruct a record (name-value pairs) out of other terms; usually > used, with base values for the record elements, as the final ) result of a query, corresponding to the select clause of a SQL A query, but can also be used with nested results internally in a  query. *'Project a field out of a record value. +9For each item in the collection resulting from the first @ argument, give it to the function which is the second argument @ and evaluate--this corresponds to a loop, or two one part of a # cross in traditional SQL queries. ,?Filter the current iteration as per the condition in the first  argument. Corresponds to a where clause in a SQL query. -.A shortcut for giving the typical bottom of a ``FLWOR-style''  comprehension:  foreach t $ \row ->  having (project x "a" > 2) $ $ result [("result", project x "b")]   !"#$%&'()*+,- $!"#%&'()*+,-  !"#$%&'()*+,-F !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno p q r s t u v w  x y z { | } ~ 69:;<=>?@ABCD/t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH narc-0.1.3Database.Narc.Type Database.NarcDatabase.Narc.HDBCDatabase.Narc.TestDatabase.Narc.ContractDatabase.Narc.VarUnaryDatabase.Narc.UtilDatabase.Narc.DebugDatabase.Narc.CommonDatabase.Narc.PrettyGensymDatabase.Narc.FailureQCUtils Database.Narc.Failure.QuickCheckDatabase.Narc.ASTDatabase.Narc.EvalDatabase.Narc.AST.PrettyDatabase.Narc.SQLDatabase.Narc.SQL.PrettyDatabase.Narc.TypeInferDatabase.Narc.CompileDatabase.Narc.TermGenDatabase.Narc.RewriteTyEnvTySubstQTypeTypeTVarTRecordTArrTListTUnitTStringTNumTBoolTyVar emptyTySubst applyTySubst normalizeType instanceOfunifyunifyAllcomposeTySubst disjoinSubst serializerunnormalizerTests unitTests runUnitTestsprop_compile_safeprop_typedTermGen_tyCheckmaincnstnarcToSQLString narcToSQLunitprimAppabsapptable ifthenelse singletonnilunionrecordprojectforeachhavingresultcontractassertVarNameSZ rightPlusunaryUnderflow sortAlistonCorrespondingintSqrtdisjointasListisRightisLeft mapstrcatdomrngcollatecrossonRightonLeftshadowvalidEnvmr$>imagemapsunassocnubassocgraphalistmapbagEqsetEqucontainssetMinus\\\allEq disjointAlistzipAlisteqUpTo debugFlagdebugforceAndReport breakFlagFieldTabnamePrettyprettyGgensym runGensym ErrorGensymFailurerunErrorrunErrorGensymbaseGHC.ErrerrortryErrorGensymfaylisError isSuccessunderisErrorMSuccesspropertyDefined excAsFalse excAsNothingthrowsarbChar arbLetter arbWordChar arbStringLenvecTorposInt nonNegIntgenEnvtinyArgs verySmallArgs smallArgs mediumArgsbigArgsf_equal arbStringarbStringSizedgenIntLt expIntGenwhenssmallbighuge histogramsubsets chooseSubset arbSubsetfailPropignorefailureToPropertyfailureToPropertyIgnoreFailureisBaseTyisTyVar isDBRecordTy isRecordTy isDBTableTyftvsnumFtvs ftvsSubstoccurs instantiaterunNormalizeTypeprop_composeTySubstprop_unify_apply_substbindConstcnst_ ConstableNarcSemboolnumstringvar TypedTerm PlainTermTermTerm'CompProjectRecordUnionNil SingletonIfTableAppAbsVarPrimAppStringNumBoolUnit substTerm lazyDepth entagulate retagulatefvs variablesrenamestrip!unit_primApp_var_abs_app_table_ ifthenelse_ singleton_nil_union_record_project_foreach_ValueVAbsVRecordVListVStringVNumVBoolVUnitEnv fromValue initialEnvappPrimeval concatVListsUnOpAverageSumCountMaxMinOpDivideTimesMinusPlusLessEqDataItemQBaseExistsNotLitRowQuerySelectrslttabscond sizeQuery sizeQueryB emptyQuery freevarsQueryfreevarsQueryB serializeRow serializeAtom serializeLit serializeOptyCheck annotationinferinfer' runTyCheck tryTyCheckinferTys inferType inferType' tyCheckTerms unquantTyperunInfer typeAnnotate runInferType unitAssert tyCheckTests typingTest1 typingTestetaExpandRecordnormTerminsert insertFurther minFreeFor translateTerm translateF translateZ translateBcompile smallIntGentypeGentermGen closedTermGen oneofMaybe typedTermGenclosedTypedTermGendbTableTypeGenlistGen identCharGenidentGenvarGenpairGenperhapsburwNarcTermtypeCheckAndCompilerealize