úÎ$† cÚ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙNoneÚ&Convert a GADT to a normal data type. ÚÚÚ  Safe-InferredÛWord version of flip (>>=). ÜWhen the value is Just. ÝWrap up a form in a Maybe. ÞFlip of mapMaybe. ßMonadic version of maybe. à*Do any of the (monadic) predicates match? ÛÜÝÞßàÛÜÝÞßàÛÜÝÞßà  Safe-Inferredá"Get the union of a list of lists. â Flip of map. áâáâáâ  Safe-Inferredããã  Safe-Inferredä4Alias of liftIO, I hate typing it. Hate reading it. äääNone=Convert a Haskell value to a value representing a Fay value. =Convert a value representing a Fay value to a Haskell value. å&Parse a data type or record or tuple. æParse a tuple. ç)Parse a data constructor from an object. è0Make a simple ADT constructor from an object: { slot1: 1, slot2: 2} -> Foo 1 2 é"Make a record from a key-value: { x: 1 } -> Foo { x = 1 } êParse a double. ëParse an int. ìParse a number. íParse a bool. îParse a string. ïParse a char. ðParse a Text. ñParse an array. ò Parse unit. åæçèéêëìíîïðñòåæçèéêëìíîïðñò Noneó3Maps names bound in the module to their real names 2 The keys are unqualified for locals and imports, ' the values are always fully qualified  Example contents:  [ (UnQUal main , Qual Main main)  , (UnQual take , Qual Prelude take)  , ( Qual M  insertWith, Qual Data.Map  insertWith) ] ô&Find the path of a locally bound name  Returns special values in the Fay$ module for primOps õ*Bind a list of names into the local scope - Right now all bindings are made unqualified öNFind all names that are bound locally in this module, which excludes imports. ÷!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. ø2Get module level names from a haskell module AST. ùóúôõö÷øûüýþÿóôõöø ùóúôõö÷øûüýþÿ Safe-Inferred           NoneJ.The serialization context indicates whether we' re currently E serializing some value or a particular field in a user-defined data  type. 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. Literal value type. A name of some kind. &Expression type. @Statement type. M&The JavaScript FFI interfacing monad. N Error type. lPrint some value. nThe printer monad. q!The state of the pretty printer. sAre we to pretty print? tThe current line. uCurrent column. vSource mappings. wCurrent indentation level. x/The current output. TODO: Make more efficient. yJust outputted a newline? zA source mapping. |The name of the mapping. }The original source location. ~The new source location. 2Just a convenience class to generalize the parsing/ printing of  various types of syntax. Compile monad. ƒRun the compiler. „,Configuration and globals for the compiler. †The compilation configuration. ‰$Things written out by the compiler. ‹Constructors. ŒFay to JS dispatchers. JS to Fay dispatchers. ŽState of the compiler. Collects exports from modules ‘Map types to constructors ’Map constructors to fields “4Newtype constructor, destructor, wrapped type tuple ”8Map of all imported modules and their source locations. •$Depth of the current lexical scope. –$Names in the current lexical scope. —Names in the module scope. ™-Name of the module currently being compiled. šConfiguration of the compiler. œRun optimizations Flatten function application? žExport built-in functions? ŸExport the runtime?  Export the stdlib? ¡Export only the stdlib? ¢Export dispatchers? £Export only the dispatcher? ¤!Export without a module wrapper? ¥6Possibly a fay package name, and a include directory. ¦Pretty print the JS output? §.Output a HTML file including the produced JS. ¨%Any JS files to link to in the HTML. ©Don'"t invoke main in the produced JS. ª4Warn on dubious stuff, not related to typechecking. «File path to output to. ¬Typecheck with GHC. ­Typecheck with -Wall. ®'Run Google Closure on the produced JS. ¯)The package config e.g. packages-6.12.3. °Included Fay packages. ±$Custom source location for fay-base ²!The data-files source directory. ³Adds a new export to  for the module specified by  ™. ´<Get all of the exported identifiers for the current module. ¶:Get all of the exported identifiers for the given module.  /Helpful for writing qualified symbols (Fay.*).  Helpful for some things. Helpful for some things. Just handy to have. Default state. Simple concatenating instance. ½  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶  µ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶µ@LKJIHGFEDCBA&?>=<;:9876543210/.-,+*)('%$#"! Nkjihgfedcba`_^]\[ZYXWVUTSRQPO‚ƒ€lmM„…†‡ˆ‰Š‹Œš›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±Ž‘’“”•–—˜™³´µ¶² qrstuvwxynopz{|}~  %$#"! &?>=<;:9876543210/.-,+*)('@ LKJIHGFEDCBAMNkjihgfedcba`_^]\[ZYXWVUTSRQPOlmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶  None%The CPP's parsing state.  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. 'Qualify a name for the current module. 7Qualify a QName for the current module if unqualified. Make a top-level binding. KCreate a temporary environment and discard it after the given computation. 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)? %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? ,5Return formatter string if expression is a FFI call. -=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. /Print out a compiler warning. 0 Pretty print a source location. 1)Lookup the record for a given type name. 2!Get the fields for a given type. 3>Get the flag used for GHC, this differs between GHC-7.6.0 and > GHC-everything-else so we need to specially test for that. It's  lame, but that'$s random flag name changes for you. 4Find an import'.s filepath and contents from its module name. ·Run the compiler. ¸Parse some Fay code. 5LApply incredibly simplistic CPP handling. It only recognizes the following:   #if FAY  #ifdef FAY  #ifndef FAY  #else  #endif INote that this implementation replaces all removed lines with blanks, so $ that line numbers remain accurate. 6The parse mode for Fay. +789:;< !"#$%&'()*+,-./01234·¸56+789:;< !"#$%&'()*+,-./01234·¸56(987:;< !"#$%&'()*+,-./01234·¸56None=Print the JS to a flat string. >!Print the JS to a pretty string. ?7Words reserved in haskell as well are not needed here: , case, class, do, else, if, import, in, let @AThis 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. A4Normalize the given name to JavaScript-valid names. B"Print the given printer indented. COutput a newline. D?Write out a string, updating the current position information. EIntercalate monadic action. FConcatenate two printables. GA printer is a printable. HJust write out strings. I!Print one of the kinds of names. JPrint an expression. KPrint a single statement. LPrint a list of statements. M$Print (and properly encode) a name. N0Print special constructors (tuples, list, etc.) OPrint module name. P4Print (and properly encode to JS) a qualified name. Q5Print literals. These need some special encoding for 6 JS-format literals. Could use the Text.JSON library. =>?@ABCDEFGHIJKLMNOPQ =>?@ABCDEF=>?@ABCDEFGHIJKLMNOPQNone¹The opposite of Ptr,. Serialize the specified polymorphic type.  foo :: Automatic a -> String º>Do not serialize the specified type. This is useful for, e.g.   foo :: String -> String  foo = ffi "%1" AThis would normally serialize and unserialize the string, for no  reason, in this case. Instead:  ! foo :: Ptr String -> Ptr String %Will just give an identity function. »Values that may be undefined 9 Defined x encodes to x, Undefined decodes to undefined. B An undefined property in a record will be removed when encoding. ¾Values that may be null 1 Nullable x decodes to x, Null decodes to null. ÁDeclare a foreign action. ¹º»¼½¾¿ÀÁThe foreign value. Bottom. M¹º»¼½¾¿ÀÁ M¾À¿»½¼º¹Á¹º»½¼¾À¿ÁNoneÂ9Get all include directories without the package mapping. Ã;Get all include directories not included through packages. Ä;Add a mapping from (maybe) a package to a source directory Å!Add several include directories. Æ<Add several include directories without package references. ÇAdd a package to compilation È$Add several packages to compilation RDefault configuration. ÂÃÄÅÆÇÈRÂÃÄÅÆÇÈÂÃÄÅÆÇÈÂÃÄÅÆÇÈRNoneSCompile an FFI call. TMWarn about uses of naked x.y which will not play nicely with Google Closure. UMake a Fay!’JS encoder. VA name used for transcoding. W@The name used for the forced version of a transcoding variable. X"Get arg types of a function type. Y:Convert a Haskell type to an internal FFI representation. ZExtract the type. [Expand a type application. \Generate a user-defined type. ]Translate: JS !’ Fay. ^Translate: Fay !’ JS. _Make a translator. `:Get a JS-representation of a fundamental type for encoding/ decoding. aGet the arity of a type. b7Format the FFI format string with the given arguments. c/Generate n name-typ pairs from the given list. d'The dispatcher for Fay->JS conversion. e'The dispatcher for JS->Fay conversion. fMake a JS!’Fay decoder. gMThe argument types used in serialization of parametrized user-defined types. hAGet the index of a name from the set of type variables bindings. i/Extract the name from a possibly-kinded tyvar. S#Location of the original FFI decl. Name of the to-be binding. The format string. Type signature. jkTUVWXYZ[\]^_`ab#Location of the original FFI decl. The format string.  Arguments.  The JS code. cdefghiSkUdefSjkTUVWXYZ[\]^_`abcdefghiNonelDon't re-import the same modules. mFind newtype declarations nAdd new types to the state o%Add record declarations to the state p%Is this name imported from anywhere? qCCompile an import filtering the exports based on the current module' s imports rstlmnopqr rstlmnopqNoneuState. vOptimize monad. w@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. x:Run an optimizer, which may output additional statements. y'Inline x >> y to x;y in the JS output. zFlatten a a>>(b>>c) to [a,b,c]. {!Try to collect nested a>>(b>>c). |@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. „(Change foo(x)(y) to foo$uncurried(x,y). …0Rename an uncurried copy of a curried function. u†‡ˆvwxyz{|}~€‚ƒ„…u†‡ˆvwxyz{|}~€‚ƒ„…u†‡ˆvwxyz{|}~€‚ƒ„…None‰(Call out to GHC to type-check the file. ‰‰‰NoneŠ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 Compile a pattern application. Compile a pattern list. ‘1Compile an infix pattern (e.g. cons and tuples.) Š‹ŒŽ’‘ Š‹ŒŽ’‘ Š‹ŒŽ’‘NoneÉCompile Haskell expression. “Compile variable. ”Compile Haskell literal. •Compile simple application. –Compile a negate application —7Compile an infix application, optimizing the JS cases. ˜Compile a let expression. ™Compile let declaration. šCompile a list expression. ›Compile an if. œCompile case expressions. 8Compile the given pattern against the given expression. žCompile a guarded alt. ŸCompile guards  Compile a do block. ¡Compile a lambda. ¢"Desugar left sections to lambdas. £"Desugar left sections to lambdas. ¤ Compile [e1..] arithmetic sequences. ¥Compile [e1..e3] arithmetic sequences. ¦Compile [e1,e2..] arithmetic sequences. §Compile [e1,e2..e3] arithmetic sequences. ¨0Compile a record construction with named fields H | GHC will warn on uninitialized fields, they will be undefined in JS. ©Desugar list comprehensions. ªMake a Fay list. «#Compile a statement of a do block. ¬Optimize short literal [e1..e3] arithmetic sequences. ­!Optimize short literal [e1,e2..e3] arithmetic sequences. ®BMaximum number of elements to allow in strict list representation  of arithmetic sequences. ¯Compiling instance. É“”•°–—˜™š›œžŸ ¡¢£¤¥¦§¨±©ª«¬­®¯É“”•°–—˜™š›œžŸ ¡¢£¤¥¦§¨±©ª«¬­® É“”•°–—˜™š›œžŸ ¡¢£¤¥¦§¨±©ª«¬­®¯None²Compile Haskell declaration. ÊCompile a declaration. ³"Compile a top-level pattern bind. ´)Compile a normal simple pattern binding. µGCompile a data declaration (or a GADT, latter is converted to former). ¶DCompile a function which pattern matches (causing a case analysis). ·&Compile a right-hand-side expression. ¸Convenient instance. ²Ê³´µ¶·¸²Ê³´µ¶·²Ê³´µ¶·¸None¹?Given a configuration, resolve any packages specified to their 7 data file directories for importing the *.hs sources. ºResolve package. »@Does a directory exist and does it contain any Haskell sources? ¼Describe the given package. ½6Get the package version from the package description. ¾"Make a share directory generator. ¹º»¼½¾¹º»¼½¾¹º»¼½¾None¿#The default compiler reader value. ÀThe default compiler state. ¿À¿À¿ÀNoneË?Compile a Haskell source string to a JavaScript source string. Ì?Compile a Haskell source string to a JavaScript source string. Í"Compile the top-level Fay module. ÎCompile Haskell module. Á2Is the module a standard module, i.e., one that we' d rather not  output code for if we're compiling separate files. ÂCompile the given import. ËÌÍÎÁÂÃÄ·¸ÉÊËÌÍηËÌÎÉÊ͸ËÌÍÎÁÂÃÄNoneÏ?Compile a String of Fay and print it as beautified JavaScript. Ð?Compile a Haskell source string to a JavaScript source string. Ñ.Print a useful debug output of a compilation. Ò;Compile the given input and print the output out prettily. ÏÐÑÒÏÐÑÒÏÐÑÒÏÐÑÒ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 a file returning the state. Å/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. ÙGet the JS runtime source. ÓÔÕÖÅÆ×ØÙ¼  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶ÓÔÕÖרÙÕÖÓÔ×ØÙ ÓÔÕÖůרÙÇ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST/UVW5XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„……†‡‡ˆ‰Š‹ŒŽ‘’“”••–——˜™š››œžŸŸ ¡¢£¤¥¦§¨©ªª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇ!È)É)(Ê(ËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãä å æ ç è é ê ë ì í îïðñòóôõö÷øùúûü ý þ ÿ     ý            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ}Ž‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈ{tÉÊËÌ fay-0.15.0.0 Fay.Convert Fay.Types Fay.CompilerLanguage.Fay.FFIFay.Compiler.ConfigFay.Compiler.DebugFayFay.Compiler.GADTControl.Monad.ExtraData.List.ExtraSystem.Process.ExtraControl.Monad.IOFay.Compiler.ModuleScope Paths_fayFay.Compiler.MiscFay.Compiler.PrintFay.Compiler.FFIFay.Compiler.InitialPassFay.Compiler.OptimizerFay.Compiler.TypecheckFay.Compiler.PatternFay.Compiler.ExpFay.Compiler.DeclFay.Compiler.PackagesFay.Compiler.Defaults showToFay readFromFaySerializeContextSerializeUserArgSerializeAnywhereFundamentalType UnknownType AutomaticPtrTypeBoolTypeIntType DoubleType StringTypeDateTypeNullableDefined UserDefined TupleTypeListTypeJsType FunctionTypeJsLitJsBool JsFloatingJsIntJsStrJsCharJsName JsBuiltIn JsConstructorJsTmpJsParamJsApplyJsForceJsThunkJsParametrizedTypeJsThis JsNameVarJsExp JsUndefinedJsObjJsInfixJsNeqJsEqJsIndex JsInstanceOf JsThrowExpJsNewJsListJsUpdatePropExternJsGetPropExtern JsUpdatePropJsLookup JsGetPropJsParenJsNull JsTernaryIfJsNegAppJsAppJsFunJsSeqJsRawExpJsStmt JsExpStmtJsBlock JsContinueJsSetPropExtern JsSetPropJsUpdateJsWhileJsThrow JsEarlyReturnJsIf JsMappedVarJsVar CompileErrorUnableResolveQualifiedUnableResolveUnqualifiedFfiFormatInvalidJavaScriptFfiFormatIncompleteArgFfiFormatNoSuchArgFfiFormatBadCharsFfiNeedsTypeSigCouldn'tFindImportRecursiveDoUnsupportedInvalidDoBlockLetUnsupportedUnsupportedModuleSyntax EmptyDoBlockUnsupportedQualStmtUnsupportedImportUnsupportedWhereInAltUnsupportedGuardedAltsUnsupportedRhsUnsupportedFieldPatternUnsupportedPatternUnsupportedOperatorUnsupportedLetBindingUnsupportedLiteralUnsupportedExpressionUnsupportedWhereInMatchUnsupportedMatchSyntaxUnsupportedExportSpecUnsupportedDeclaration ParseError PrintableprintJSPrinter runPrinter PrintStatepsPrettypsLinepsColumn psMapping psIndentLevelpsOutput psNewlineMapping mappingName mappingFrom mappingTo CompilesTo compileToCompile unCompile CompileReader readerConfigreaderCompileLitreaderCompileDecls CompileWriter writerCons writerFayToJs writerJsToFay CompileState _stateExportsstateRecordTypes stateRecords stateNewtypes stateImportedstateNameDepthstateLocalScopestateModuleScopestateModuleScopesstateModuleName CompileConfigconfigOptimizeconfigFlattenAppsconfigExportBuiltinsconfigExportRuntimeconfigExportStdlibconfigExportStdlibOnlyconfigDispatchersconfigDispatcherOnly configNakedconfigDirectoryIncludesconfigPrettyPrintconfigHtmlWrapperconfigHtmlJSLibs configLibrary configWarnconfigFilePathconfigTypecheck configWallconfigGClosureconfigPackageConfconfigPackagesconfigBasePath faySourceDiraddCurrentExportgetCurrentExports getCurrentExportsWithoutNewtypes getExportsFor runCompileparseFayPtr UndefinedNullfficonfigDirectoryIncludePaths%nonPackageConfigDirectoryIncludePathsaddConfigDirectoryIncludeaddConfigDirectoryIncludesaddConfigDirectoryIncludePathsaddConfigPackageaddConfigPackages compileExp compileDecl compileViaStr compileToAstcompileToplevelModule compileModuleprintTestCompilecompileTestAstdebug printCompile compileFromTocompileFromToAndGenerateHtml compileFilecompileFileWithStatetoJsNameshowCompileError getRuntime convertGADTbindwhenJustjustforMaybemaybeManyMunionOfforreadAllFromProcessioparseDataOrTuple parseTuple parseObject makeSimple makeRecord parseDoubleparseInt parseNumber parseBool parseString parseChar parseText parseArray parseUnit ModuleScope resolveName bindAsLocals moduleLocals envPrimOpsMapfindTopLevelNames ModuleScopeStbindNamed_decl d_classDecl d_qualCon$fDefaultModuleScope$fMonoidModuleScopecatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileName$fIsStringModuleName$fIsStringQName$fIsStringName$fIsStringJsLit$fDefaultPrintState$fMonoidCompileWriter$fErrorCompileErrorCPPStateunname fayBuiltinthunk stmtsThunk uniqueNamestryResolveNamequalify qualifyQName bindToplevelwithModuleScope withScope generateScopebindVar emitExportforce isConstant parseResultconfigoptimizePatConditionsthrowthrowExp isWildCardAlt isWildCardPatffiExpwithScopedTmpJsNamewithScopedTmpNamewarn printSrcLoc typeToRecs typeToFieldsgetGhcPackageDbFlag findImportapplyCPP parseModeCPPElseCPPIfNoCPPunsafeResolveNamelookupNewtypeConstlookupNewtypeDest printJSString printJSPretty reservedWords encodeName normalizeNameindentednewlinewrite intercalateM+>$fPrintablePrinter $fPrintable[]$fPrintableJsName$fPrintableJsExp$fPrintableJsStmt$fPrintable[]0$fPrintableName$fPrintableSpecialCon$fPrintableModuleName$fPrintableQName$fPrintableJsLit$fDefaultCompileConfig compileFFI warnDotUses emitFayToJstranscodingObjtranscodingObjForcedfunctionTypeArgsargTypebangType expandApp userDefinedjsToFayfayToJs translatetypeRep typeArity formatFFI explodeFieldsfayToJsDispatcherjsToFayDispatcher emitJsToFayargTypesgetIndextyvar compileFFI'ffiFununlessImportedscanNewtypeDeclscompileNewtypeDeclscanRecordDeclsimportedcompileImportWithFilter initialPass compileImport compileWithOptStateOptimize FuncArity runOptimizer inlineMonadflattencollectoptimizeTopleveltcostripAndUncurrywalkAndStripForcesapplyToExpsInStmtsapplyToExpsInStmt collectFuncsexpArityuncurryBindingrenameUncurriedoptStmts optUncurry typecheck compilePat compilePVarcompilePatFields compilePLit compilePAsPat compilePApp compilePListcompileInfixPatcompileNewtypePat compileVar compileLit compileApp compileNegAppcompileInfixApp compileLetcompileLetDecl compileList compileIf compileCase compilePatAltcompileGuardedAlt compileGuardscompileDoBlock compileLambdadesugarLeftSectiondesugarRightSectioncompileEnumFromcompileEnumFromTocompileEnumFromThencompileEnumFromThenTocompileRecConstrdesugarListCompmakeList compileStmt optEnumFromTooptEnumFromThenTomaxStrictASLen$fCompilesToExpJsExp compileApp' updateRec compileDeclscompilePatBindcompileUnguardedRhscompileDataDeclcompileFunCase compileRhs$fCompilesToDecl[]resolvePackagesresolvePackagedoesSourceDirExistdescribePackagepackageVersion getShareGendefaultCompileReaderdefaultCompileStateanStdlibModule$fCompilesToModule[]compileToModule printExport