+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferred  None.=Convert a Haskell value to a value representing a Fay value. /=Convert a value representing a Fay value to a Haskell value. ././././ Safe-Inferred  Safe-InferredRead all stuff from a process. None0BThese are the data types that are serializable directly to native E JS data types. Strings, floating points and arrays. The others are: 7 actiosn 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. 1 Unknown. ;Literal value type. AExpression type. WStatement type. b&The JavaScript FFI interfacing monad. c Error type. zPrint some value. 2Just a convenience class to generalize the parsing/ printing of  various types of syntax. 2To be used to force name sanitization eventually. *Convenience type for function parameters. Compile monad. State of the compiler. "Names of imported modules so far. Configuration of the compiler. Default configuration. {0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~w0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~wWa`_^]\[ZYXAVUTSRQPONMLKJIHGFEDCB;@?>=<cyxwvutsrqponmlkjihgfedz{b0:987654321|}~0 :987654321;@?>=<AVUTSRQPONMLKJIHGFEDCBW a`_^]\[ZYXbcyxwvutsrqponmlkjihgfedz{|}~ None )Contains allowed foreign function types. 5In case you want to distinguish values with a JsPtr. Declare a foreign action. Functions are foreignable. JS values are foreignable. &Pointers to arbitrary objects 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.             NoneAppend two lists. /-,NoneJust to satisfy GHC. Just to satisfy GHC. b  !"#$%&'()*+,-bbb  #$'! (&%-,)"+* None %Encode a Haskell name to JavaScript.  TODO: Fix this hack. 4Normalize the given name to JavaScript-valid names. $For the pretty printer convenience. $Helpful for writing variable names. /Helpful for writing qualified symbols (Fay.*). Print an expression. Print a single statement. Print a list of statements. $Print (and properly encode) a name. Print module name. 0Print special constructors (tuples, list, etc.) 4Print (and properly encode to JS) a qualified name. 5Print literals. These need some special encoding for 6 JS-format literals. Could use the Text.JSON library.  ! ! !NoneP3Compile something that compiles to something else. Run the compiler. ?Compile a Haskell source string to a JavaScript source string. ?Compile a Haskell source string to a JavaScript source string. Compile from a string. "Parse some Fay code. #The parse mode for Fay. ;Compile the given input and print the output out prettily. ?Compile a String of Fay and print it as beautified JavaScript. :Compile the given Fay code for the documentation. This is * specialised because the documentation isn't really real   compilation. "Compile the top-level Fay module. $BCollect record definitions and store record name and field names. / A ConDecl will have fields named slot1..slotN Compile Haskell module. %Compile the given import. &Don't re-import the same modules. 'Compile Haskell declaration. (Compile a declaration. )"Compile a top-level pattern bind. *Compile an FFI call. +7Format the FFI format string with the given arguments. ,Translate: Fay ! JS. -:Get a JS-representation of a fundamental type for encoding/ decoding. ."Get arg types of a function type. /:Convert a Haskell type to an internal FFI representation. 0Generate a user-defined type. 1Expand a type application. 2Get the arity of a type. 3)Compile a normal simple pattern binding. 4Compile a data declaration. 5Extract the type. 6!Extract the string from a qname. 7 Extra the string from an ident. 8DCompile a function which pattern matches (causing a case analysis). 9&Optimize functions in tail-call form. :?Flatten an application expression into function : arg : arg : [] ;&Expand a forced value into the value. Format a JS string using  js-beautify, or return the JS as-is if   js-beautify is unavailable. <&Compile a right-hand-side expression. =Compile guards Compile Haskell expression. >Compile simple application. ?7Compile an infix application, optimizing the JS cases. @Compile a list expression. ACompile an if. BCompile a lambda. CCompile case expressions. DCompile a do block. E#Compile a statement of a do block. F8Compile the given pattern against the given expression. G8Compile the given pattern against the given expression. H.Compile a literal value from a pattern match. I$Compile as binding in pattern match J0Compile a record construction with named fields H | GHC will warn on uninitialized fields, they will be undefined in JS. K<Equality test for two expressions, with some optimizations. L)Is a JS expression a literal (constant)? MCompile a pattern application. NCompile a pattern list. O1Compile an infix pattern (e.g. cons and tuples.) PCompile a guarded alt. QCompile a let expression. RCompile let declaration. SCompile Haskell literal. TGenerate unique names. UFOptimize pattern matching conditions by merging conditions in common. VThrow a JS exception. W)Throw a JS exception (in an expression). XIs an alt a wildcard? YIs a pattern a wildcard? Z2A temporary name for testing conditions and such. [Wrap an expression in a thunk. \Wrap an expression in a thunk. ]Translate: JS ! Fay. ^ Force an expression in a thunk. _ Force an expression in a thunk. `8Resolve operators to only built-in (for now) functions. a0Make an identifier from the built-in HJ module. bMake a top-level binding. cEmit exported names. dParse result. eGet a config option. f"#fghi$jklm%&'()*#Location of the original FFI decl. Name of the to-be binding. The format string. Type signature. +The format string.  Arguments.  The JS code. ,-./0123n4opqrstu567v89The function parameters. The function name. The body of the function. A new optimized function body. :;<=>?@wABCDEFGHIJxKLMNOPQRSTUVWXYZ[\]^_`abcdeyz{ f"#fghi$jklm%&'()*+,-./0123n4opqrstu567v89:;<=>?@wABCDEFGHIJxKLMNOPQRSTUVWXYZ[\]^_`abcdeyz{None %Something to feed into the compiler. +A result of something the compiler writes. Compile file program to & Compile file program to & Compile readable/writable values. Compile the given file. 0Compile the given module to a runnable program. !Print an this.x = x; export out. -Convert a Haskell filename to a JS filename. |Simple file reader. }Simple file writer. |} |}~       !"#$% &'( )* )+ ,- . / 0 1 2 3 4 5 6 7 8 9 : ; <= > )? @ A BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmVnopqrstuvwxyz{|}~p            | ! " # $ % & ' ( ) * + , - . / 0 1 2 3 456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ fay-0.9.2.0Language.Fay.PreludeLanguage.Fay.ConvertLanguage.Fay.TypesLanguage.Fay.FFI Language.FayLanguage.Fay.Compiler Paths_fayControl.Monad.IOSystem.Process.ExtraLanguage.Fay.StdlibLanguage.Fay.PrintbaseGHC.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/showJust*+typeOf/=<=&&||<> showToFay readFromFayFundamentalType UnknownTypeBoolTypeIntType DoubleType StringTypeDateType UserDefinedListTypeJsType FunctionTypeJsLitJsBool JsFloatingJsIntJsStrJsCharJsExpJsObjJsInfixJsEqJsIndex JsInstanceOf JsThrowExpJsNewJsListJsUpdatePropExternJsGetPropExtern JsUpdatePropJsLookup JsGetPropJsParenJsNull JsTernaryIfJsAppJsFunJsRawExpJsNameJsStmtJsBlock JsContinue JsSetPropJsUpdateJsWhileJsThrow JsEarlyReturnJsIf JsMappedVarJsVarFay CompileErrorFfiFormatInvalidJavaScriptFfiFormatIncompleteArgFfiFormatNoSuchArgFfiFormatBadCharsFfiNeedsTypeSigRecursiveDoUnsupportedInvalidDoBlockLetUnsupportedUnsupportedModuleSyntax EmptyDoBlockUnsupportedGuardedAltsUnsupportedRhsUnsupportedPatternUnsupportedOperatorUnsupportedLetBindingUnsupportedLiteralUnsupportedExpressionUnsupportedWhereInMatchUnsupportedMatchSyntaxUnsupportedExportSpecUnsupportedDeclaration ParseError PrintableprintJSPrinter runPrinter PrintStatepsLinepsColumn psMapping psIndentLevelpsOutput CompilesTo compileToJsParamCompile unCompile CompileState stateConfig stateExportsstateExportAllstateModuleName stateRecords stateFayToJs stateJsToFay stateImported CompileConfig configTCOconfigInlineForceconfigFlattenAppsconfigExportBuiltinsconfigDirectoryIncludesconfigPrettyPrintconfigHtmlWrapperconfigHtmlJSLibs configLibrary configWarnconfigFilePathconfigTypecheck configWalldefaultCompileStateForeignJsPtrffiOrderingEQLTGTsndfstfindanyfilternotnullmapnubelemsortcomparesortByinsertBywhenenumFrom enumFromTozipWithzipflipmaybe.++$concatfoldrfoldllookup intersperse prependToAll intercalateforM_mapM_constlengthmodminmax fromIntegral otherwisereverse fromInteger fromRational>>>>=failreturncompile runCompile compileViaStr compileToAstcompileFromStr printCompileprintTestCompilecompileForDocscompileToplevelModule compileModuleprettyPrintString compileExpReaderreadinWriterwriteout compileFromTocompileFromToReturningStatuscompileReadWrite compileFilecompileProgram printExporttoJsNamecatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNameioreadAllFromProcessreadAllFromProcess'$fDefaultCompileConfig$fErrorCompileError$fDefaultPrintState $fForeign(->) $fForeignFay$fForeignJsPtr $fForeign[] $fForeignBool $fForeignChar $fForeignInt$fForeignDouble $fForeign()concnub' jsEncodeName normalize$fIsStringPrinter$fIsStringQName$fIsStringModuleName$fPrintableJsExp$fPrintableJsStmt $fPrintable[]$fPrintableName$fPrintableModuleName$fPrintableSpecialCon$fPrintableQName$fPrintableJsLit printJSString reservedWordswrite intercalateMparseFay parseModeinitialPass_dataDecl compileImportunlessImported compileDecls compileDeclcompilePatBind compileFFI formatFFIfayToJstypeRepfunctionTypeArgsargType userDefined expandApp typeAritycompileUnguardedRhscompileDataDeclbangTypeqnameunnamecompileFunCaseoptimizeTailCallsflattenexpand compileRhs compileGuards compileAppcompileInfixApp compileList compileIf compileLambda compileCasecompileDoBlock compileStmt compilePatAlt compilePat compilePLit compilePAsPatcompileRecConstr equalExps isConstant compilePApp compilePListcompileInfixPatcompileGuardedAlt compileLetcompileLetDecl compileLit uniqueNamesoptimizePatConditionsthrowthrowExp isWildCardAlt isWildCardPattmpNamethunk stmtsThunkjsToFayforceforceInlinableresolveOpToVarhjIdent bindToplevel emitExport parseResultconfig initialPassinitialPass_importinitialPass_recordsinitialPass_decl typecheckwarncheckModulePragmas findImport convertGADTfayToJsDispatcher emitFayToJsjsToFayDispatcher emitJsToFay explodeFieldstranscodingObjtranscodingObjForcedconstructorNamemakeList updateRec$fIsStringName$fCompilesToExpJsExp$fCompilesToModule[] $fReader[] $fWriter[]