1*~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} Safe-Infered" !"#$%&'()*+,-./012345678" !"#$%&'()*+,-./012345678 !"#$%&'()*+,-./012345678 Safe-Infered~~~None 9Literal value type. ?Expression type. QStatement type. V&The JavaScript FFI interfacing monad. W Error type. hPrint some value. j2Just a convenience class to generalize the parsing/ printing of  various types of syntax. l2To be used to force name sanitization eventually. m*Convenience type for function parameters. n Convenience/ doc type. 89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn69:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn6QUTSR?PONMLKJIHGFEDCBA@9>=<;:mlWgfedcba`_^]\[ZYXnjkhiV 9>=<;:?PONMLKJIHGFEDCBA@QUTSRVWgfedcba`_^]\[ZYXhijklmn Safe-Infered o)Contains allowed foreign function types. qDeclare a foreign action. rDeclare a foreign function. sDeclare a foreign action. tDeclare a foreign function. Functions are foreignable. JS values are foreignable. &Pointers to arbitrary objects are OK. Lists ! arrays are OK. Bools are OK. Characters are OK. All numbers in JS are double.  Unit is OK. opqThe foreign function name. JS return type. Bottom. rThe foreign function name. JS return type. Bottom. sThe foreign function name. JS return type. Bottom. tThe foreign function name. JS return type. Bottom. opqrstpoqrstopqrstNoneuJust to satisfy GHC. vJust to satisfy GHC. uvwxyz@  !"#$%&'()*+,-./012345678Vuvwxyz@V    uvwxyz0 !"#$%&'()*+,-./12345678uvwxyz Safe-Infered %Encode a Haskell name to JavaScript. $Helpful for writing variable names. 0Helpful 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.   Safe-Infered{3Compile something that compiles to something else. |?Compile a Haskell source string to a JavaScript source string. }Compile Haskell module. {|}{|}{|}{|}       ! " # $ % & ' ( ) *+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`Mabcdefghijklmnopqrstuvwxyz{|}~c fay-0.1.0.0Language.Fay.PreludeLanguage.Fay.TypesLanguage.Fay.FFI Language.FayLanguage.Fay.StdlibControl.Monad.IOLanguage.Fay.PrintbaseGHC.Num-ghc-prim GHC.Classes==GHC.ReadReadGHC.ShowShow GHC.TypesBoolCharDouble integer-gmpGHC.Integer.TypeIntegerGHC.BaseStringFalseTrueshow Text.Readread Data.MaybeNothingJustMaybe*+/=&&||<>OrderingEQLTGTsndfstfindanyfilternotnullmapnubelemsortcomparesortByinsertByenumFromzipWithzipflipmaybe.++$concatfoldrfoldllookup intersperse prependToAll intercalateforM_JsLitJsBool JsFloatingJsIntJsStrJsCharJsExpJsInfixJsEqJsIndex JsInstanceOf JsThrowExpJsNewJsList JsGetPropJsParen JsSequenceJsNull JsTernaryIfJsAppJsFun JsRawNameJsNameJsStmtJsThrow JsEarlyReturnJsIfJsVarFay CompileErrorFfiNeedsTypeSigRecursiveDoUnsupportedInvalidDoBlockLetUnsupportedUnsupportedModuleSyntax EmptyDoBlockUnsupportedGuardedAltsUnsupportedRhsUnsupportedPatternUnsupportedOperatorUnsupportedLetBindingUnsupportedLiteralUnsupportedExpressionUnsupportedMatchSyntaxUnsupportedDeclaration ParseError PrintableprintJS CompilesTo compileToJsParamCompileForeignJsPtr foreignFay foreignPureforeignMethodFay foreignMethod fromInteger fromRational>>>>=failreturncompile compileViaStr compileModuleio$fExceptionCompileError$fErrorCompileError $fForeign(->) $fForeignFay$fForeignJsPtr $fForeign[] $fForeignBool $fForeignChar$fForeignDouble $fForeign() jsEncodeName$fIsStringQName$fIsStringModuleName$fPrintableJsExp$fPrintableJsStmt $fPrintable[]$fPrintableName$fPrintableModuleName$fPrintableSpecialCon$fPrintableQName$fPrintableJsLit$fCompilesToExpJsExp$fCompilesToDecl[]$fCompilesToModule[]