aA      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;< = > ? @   Safe-InferredARead all stuff from a process. ABABAB  Safe-InferredCDCDCD  Safe-InferredEEENone -=Convert a Haskell value to a value representing a Fay value. .=Convert a value representing a Fay value to a Haskell value. FParse a data type or record. G)Parse a data constructor from an object. H0Make a simple ADT constructor from an object: { slot1: 1, slot2: 2} -> Foo 1 2 I"Make a record from a key-value: { x: 1 } -> Foo { x = 1 } JParse a double. KParse an int. LParse a number. MParse a bool. NParse a string. OParse an array. P!Parse a nullable value to Maybe. -.FGHIJKLMNOP-.-. -.FGHIJKLMNOP  Safe-Inferred QRSTUVWXYZ[RWXYZ[ QRSTUVWXYZ[None/BThese are the data types that are serializable directly to native E JS data types. Strings, floating points and arrays. The others are: 7 actions in the JS monad, which are thunks that shouldn' t be forced > when serialized but wrapped up as JS zero-arg functions, and  unknown types can'.t be converted but should at least be forced. 0 Unknown. <Literal value type. BA name of some kind. LExpression type. eStatement type. p&The JavaScript FFI interfacing monad. q Error type. Print some value. 2Just a convenience class to generalize the parsing/ printing of  various types of syntax. Compile monad. A name'+s scope, either imported or bound locally. State of the compiler. Configuration of the compiler. The default compiler state. \!The built-in operations that aren't actually compiled from & anywhere, they come from runtime.js. They'?re in the names list so that they can be overriden by the user % in e.g. let a * b = a - b in 1 * 2. ASo we resolve them to Fay$, i.e. the prefix used for the runtime E support. $ is not allowed in Haskell module names, so there will be < no conflicts if a user decicdes to use a module named Fay. ?So e.g. will compile to (*) Fay$$mult, which is in runtime.js. ]/Helpful for writing qualified symbols (Fay.*). ^Helpful for some things. _Helpful for some things. `Default configuration. /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopaqrstuvwxyz{|}~\]^_bc`/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ŗeonmlkjihgfLdcba`_^]\[ZYXWVUTSRQPONM<A@?>=BKJIHGFEDCq~}|{zyxwvutsrp/;:9876543210/ ;:9876543210<A@?>=B KJIHGFEDCLdcba`_^]\[ZYXWVUTSRQPONMe onmlkjihgfpaq~}|{zyxwvutsr \]^_bc`NonedAThis is a hack for names generated in the Haskell AST. Should be  removed once it's no longer needed. %Encode a Haskell name to JavaScript. e4Normalize the given name to JavaScript-valid names. f"Print the given printer indented. gOutput a newline. h?Write out a string, updating the current position information. iIntercalate monadic action. jConcatenate two printables. k!Print one of the kinds of names. lPrint an expression. mPrint a single statement. nPrint a list of statements. o$Print (and properly encode) a name. p0Print special constructors (tuples, list, etc.) qPrint module name. r4Print (and properly encode to JS) a qualified name. s5Print literals. These need some special encoding for 6 JS-format literals. Could use the Text.JSON library. tuvdefghijwxklmnopqrs tuvdefghijtuvdefghijwxklmnopqrsNone )Contains allowed foreign function types. Declare a foreign action. yMaybes are pretty common. zFunctions are foreignable. {JS values are foreignable. |Tuples ! arrays are OK. }Lists ! arrays are OK. ~Bools are OK. Characters are OK. Some numbers in JS are int. All numbers in JS are double.  Unit is OK. The foreign value. Bottom. yz{|}~yz{|}~NoneAppend two lists. 9Evaluate each action in the sequence from left to right,  and collect the results.  sequence :: [Fay a] -> Fay [a] :65Nonei  !"#$%&'()*+,pip  #&! '%$,+("*)None State. Optimize monad. @The arity of a function. Arity here is defined to be the number C of arguments that can be directly uncurried from a curried lambda  abstraction. So x y z -> if x then (a -> a) else (a -> a) has an  arity of 3, not 4.  :Run an optimizer, which may output additional statements.  @Perform any top-level cross-module optimizations and GO DEEP to  optimize further.   Perform tail-call optimization.  7Strip redundant forcing from the whole generated code.  9Strip redundant forcing from an application if possible. =Apply the given function to the top-level expressions in the  given statements. =Apply the given function to the top-level expressions in the  given statement. :Collect functions and their arity from the whole codeset.  Get the arity of an expression. 0Rename an uncurried copy of a curried function.                     None Extra the string from an ident. 0Make an identifier from the built-in HJ module. Wrap an expression in a thunk. Wrap an expression in a thunk. Generate unique names. ?Resolve a given maybe-qualified name to a fully qualifed name. Do have have a simple import X import on our hands? 'Qualify a name for the current module. Make a top-level binding. ECreate a temporary scope and discard it after the given computation. 3Run a compiler and just get the scope information.  &Bind a variable in the current scope. !Emit exported names. " Force an expression in a thunk. #)Is a JS expression a literal (constant)? $!Extract the string from a qname.  qname :: QName -> String " qname (UnQual (Ident str)) = str 0 qname (UnQual (Symbol sym)) = jsEncodeName sym  qname i = error $ *qname: Expected unqualified ident, found:  ++ show i -- FIXME: 8Deconstruct a parse result (a la maybe, foldr, either). %Get a config option. &FOptimize pattern matching conditions by merging conditions in common. 'Throw a JS exception. ()Throw a JS exception (in an expression). )Is an alt a wildcard? *Is a pattern a wildcard? +=Generate a temporary, SCOPED name for testing conditions and  such. ,=Generate a temporary, SCOPED name for testing conditions and  such. We don'2t have name tracking yet, so instead we use this.  !"#$%&'()*+, !"#$%&'()*+, !"#$%&'()*+, !"#$%&'()*+,None -Compile an FFI call. "Get arg types of a function type. :Convert a Haskell type to an internal FFI representation. Extract the type. Expand a type application. Generate a user-defined type. Translate: JS ! Fay. Translate: Fay ! JS. :Get a JS-representation of a fundamental type for encoding/ decoding. Get the arity of a type. 7Format the FFI format string with the given arguments. -#Location of the original FFI decl. Name of the to-be binding. The format string. Type signature. .The format string.  Arguments.  The JS code. /01-./01.1-0/-./01None02Run the compiler. 3?Compile a Haskell source string to a JavaScript source string. 4?Compile a Haskell source string to a JavaScript source string. Parse some Fay code. The parse mode for Fay. 5;Compile the given input and print the output out prettily. 6?Compile a String of Fay and print it as beautified JavaScript. 7:Compile the given Fay code for the documentation. This is * specialised because the documentation isn't really real   compilation. 8"Compile the top-level Fay module. BCollect record definitions and store record name and field names. / A ConDecl will have fields named slot1..slotN 9Compile Haskell module. Compile the given import. AAdd the new scopes to the old one, stripping out local bindings. Add Don't re-import the same modules. Compile Haskell declaration. :Compile a declaration. "Compile a top-level pattern bind. )Compile a normal simple pattern binding. Compile a data declaration. DCompile a function which pattern matches (causing a case analysis). &Compile a right-hand-side expression. Compile guards ;Compile Haskell expression. Compile simple application. Compile a negate application 7Compile an infix application, optimizing the JS cases. Compile a list expression. Compile an if. Compile a lambda. Compile list comprehensions. Compile case expressions. Compile a do block. #Compile a statement of a do block. 8Compile the given pattern against the given expression. 8Compile the given pattern against the given expression. #Compile a pattern variable e.g. x.  Compile a record field pattern. .Compile a literal value from a pattern match. $Compile as binding in pattern match 0Compile a record construction with named fields H | GHC will warn on uninitialized fields, they will be undefined in JS. Compile a pattern application. Compile a pattern list. 1Compile an infix pattern (e.g. cons and tuples.) Compile a guarded alt. Compile a let expression. Compile let declaration. Compile Haskell literal. ?23456789:; 23456789:; 23749;:568?23456789:; None<BCompile the given file and write the output to the given path, or  if nothing given, stdout. =HCompile the given file and write to the output, also generate any HTML. >Compile the given file. /Compile the given module to a runnable module. !Print an this.x = x; export out. ?-Convert a Haskell filename to a JS filename. @-Print a compile error for human consumption. <=>?@/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<=>?@><=?@<=>?@ !"#"$"%"&'()*"+",-.-/0123456789:;<=>?@A-BCD EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~[aUU      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN O P Q R S T U V W XYZ[\]^_`abc d e f g h i j k l m nopqrstuvwxyz{|}~   fay-0.10.0.0Language.Fay.PreludeLanguage.Fay.ConvertLanguage.Fay.TypesLanguage.Fay.FFILanguage.Fay.Compiler.OptimizerLanguage.Fay.Compiler.MiscLanguage.Fay.Compiler.FFILanguage.Fay.Compiler Language.FaySystem.Process.ExtraData.List.ExtraControl.Monad.IO Paths_fayLanguage.Fay.PrintLanguage.Fay.StdlibbaseGHC.Num-ghc-prim GHC.Classes==>=EqGHC.BaseMonad Data.DataDataGHC.ReadReadGHC.ShowShowData.Typeable.InternalTypeable GHC.TypesBoolCharDoubleInt integer-gmpGHC.Integer.TypeIntegerStringFalseTrue Data.MaybeNothingMaybe Text.ReadreadgmapMogmapMpgmapMgmapQigmapQgmapQrgmapQlgmapT dataCast2 dataCast1 dataTypeOftoConstrgunfoldgfoldlGHC.Real/Just*+typeOf/=<=&&||<> showToFay readFromFayFundamentalType UnknownTypeBoolTypeIntType DoubleType StringTypeDateTypeDefined UserDefined TupleTypeListTypeJsType FunctionTypeJsLitJsBool JsFloatingJsIntJsStrJsCharJsName JsBuiltIn JsConstructorJsTmpJsParamJsApplyJsForceJsThunkJsThis JsNameVarJsExp JsUndefinedJsObjJsInfixJsNeqJsEqJsIndex JsInstanceOf JsThrowExpJsNewJsListJsUpdatePropExternJsGetPropExtern JsUpdatePropJsLookup JsGetPropJsParenJsNull JsTernaryIfJsNegAppJsAppJsFunJsRawExpJsStmtJsBlock JsContinue JsSetPropJsUpdateJsWhileJsThrow JsEarlyReturnJsIf JsMappedVarJsVarFay CompileErrorUnableResolveQualifiedUnableResolveUnqualifiedFfiFormatInvalidJavaScriptFfiFormatIncompleteArgFfiFormatNoSuchArgFfiFormatBadCharsFfiNeedsTypeSigCouldn'tFindImportRecursiveDoUnsupportedInvalidDoBlockLetUnsupportedUnsupportedModuleSyntax EmptyDoBlockUnsupportedQualStmtUnsupportedImportUnsupportedGuardedAltsUnsupportedRhsUnsupportedFieldPatternUnsupportedPatternUnsupportedOperatorUnsupportedLetBindingUnsupportedLiteralUnsupportedExpressionUnsupportedWhereInMatchUnsupportedMatchSyntaxUnsupportedExportSpecUnsupportedDeclaration ParseError PrintableprintJSPrinter runPrinter PrintStatepsPrettypsLinepsColumn psMapping psIndentLevelpsOutput psNewlineMapping mappingName mappingFrom mappingTo CompilesTo compileToCompile unCompile NameScope ScopeBindingScopeImportedAs ScopeImported CompileState stateConfig stateExportsstateExportAllstateModuleName stateFilePath stateRecords stateFayToJs stateJsToFay stateImportedstateNameDepth stateScope CompileConfigconfigOptimizeconfigFlattenAppsconfigExportBuiltinsconfigDirectoryIncludesconfigPrettyPrintconfigHtmlWrapperconfigHtmlJSLibs configLibrary configWarnconfigFilePathconfigTypecheck configWalldefaultCompileStateForeignffiOrderingEQLTGT Undefinedshow fromInteger fromRationalsndfstfindanyfilternotnullmapnubelemsortcomparesortByinsertBywhenenumFrom enumFromTozipWithzipflipmaybe.++$concat concatMapfoldrfoldllookup intersperse prependToAll intercalateforM_mapM_constlengthmodminmax fromIntegral otherwisereverse=<<sequence>>>>=failreturnforceOptStateoptStmts optUncurryOptimize FuncArity runOptimizeroptimizeTopleveltcostripAndUncurrywalkAndStripForcesapplyToExpsInStmtsapplyToExpsInStmt collectFuncsexpAritytestuncurryBindingrenameUncurriedunname fayBuiltinthunk stmtsThunk uniqueNames resolveName simpleImportqualify bindToplevel withScope generateScopebindVar emitExport isConstant parseResultconfigoptimizePatConditionsthrowthrowExp isWildCardAlt isWildCardPatwithScopedTmpJsNamewithScopedTmpName compileFFI emitFayToJsfayToJsDispatcherjsToFayDispatcher emitJsToFay runCompile compileViaStr compileToAst printCompileprintTestCompilecompileForDocscompileToplevelModule compileModule compileDecl compileExp compileFromTocompileFromToAndGenerateHtml compileFiletoJsNameshowCompileErrorreadAllFromProcessreadAllFromProcess'unionOfforio parseData parseObject makeSimple makeRecord parseDoubleparseInt parseNumber parseBool parseString parseArray parseMaybecatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNameprimOps$fIsStringModuleName$fIsStringQName$fIsStringName$fDefaultCompileConfig$fErrorCompileError$fDefaultPrintState encodeName normalizeNameindentednewlinewrite intercalateM+>$fPrintableJsName$fPrintableJsExp$fPrintableJsStmt$fPrintable[]0$fPrintableName$fPrintableSpecialCon$fPrintableModuleName$fPrintableQName$fPrintableJsLit printJSString printJSPretty reservedWords$fPrintablePrinter $fPrintable[]$fForeignMaybe $fForeign(->) $fForeignFay $fForeign(,) $fForeign[] $fForeignBool $fForeignChar $fForeignInt$fForeignDouble $fForeign()$fForeign(,,,,,,)$fForeign(,,,,,)$fForeign(,,,,)$fForeign(,,,) $fForeign(,,)concnub'length'$fForeignDefinedfunctionTypeArgsargTypebangType expandApp userDefinedjsToFayfayToJstypeRep typeArity formatFFItranscodingObjtranscodingObjForced explodeFieldsparseFay parseModeinitialPass_dataDecl compileImport mergeScopesaddExportsToScopeunlessImported compileDeclscompilePatBindcompileUnguardedRhscompileDataDeclcompileFunCase compileRhs compileGuards compileApp compileNegAppcompileInfixApp compileList compileIf compileLambdadesugarListComp compileCasecompileDoBlock compileStmt compilePatAlt compilePat compilePVarcompilePatFields compilePLit compilePAsPatcompileRecConstr compilePApp compilePListcompileInfixPatcompileGuardedAlt compileLetcompileLetDecl compileLit initialPassinitialPass_importinitialPass_recordsinitialPass_decl typechecktranslateModuleNamewarn findImport convertGADT compileVarmakeList updateRec$fCompilesToExpJsExp$fCompilesToDecl[]$fCompilesToModule[]compileToModule printExport