!.&      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SafeNone =?@AM=    !"#$%&(')*+,-./0123546789:;<=23541./0+,-*)%&('"#$ !   6789:;<None"#7;EMXd NOPQRTUSVWXYZ\[]^_`abcdefcdef`ab]^_YZ\[VWXQRTUSNOPHaskell bindings to the  https://bellard.org/quickjs/QuickJS library(c) Samuel Balco, 2020MITgoodlyrottenapple@gmail.comNone>X&} quickjs-hs)Evaluates the given string and returns a " (if the result can be converted).~ quickjs-hsMore efficient than } if we don't care about the value of the expression, e.g. if we are evaluating a function definition or performing other side-effects such as printing to console/modifying state. quickjs-hsTakes a value with a defined ToJSON) instance. This value is marshalled to a 2X and passed as an argument to the callback function, provided as the second argument to  quickjs-hsbThis function initialises a new JS runtime and performs the given computation within this context.+For example, we can evaluate an expression: 5quickjs $ do res <- eval "1+2" liftIO $ print res.Declare a function and call it on an argument: Tquickjs $ do _ <- eval_ "f = (x) => x+1" res <- eval "f(2)" liftIO $ print res'Pass a Haskell value to the JS runtime: rquickjs $ do _ <- eval_ "f = (x) => x+1" res <- withJSValue (3::Int) $ \x -> call "f" [x] liftIO $ print res quickjs-hsThis env differs from regular *, in that it wraps the computation in the  function. This is needed when running the Haskell program mutithreaded (e.g. when using the testing framework Tasty), since quickjs does not like being called from an OS thread other than the one it was started in. Because Haskell uses lightweight threads, this might happen if threaded mode is enabled, as is the case in Tasty. This problem does not occur when running via Main.hs, if compiled as single threaded... For more info see the paper 2https://simonmar.github.io/bib/papers/conc-ffi.pdfAExtending the Haskell Foreign Function Interface with Concurrency 2|}~ 2|}~      !"#$%&&'(()*+,--.//01223456789:;<=>?@ABCDEFGHIJKLMMNOOPQRSSTUUVWXXYZZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~)quickjs-hs-0.1.2.2-68y4fC5Axf59fBTJqmDcqm Quickjs.Types Quickjs.ErrorQuickjsPaths_quickjs_hs JSGPNMask unJSGPNMask JSEvalTypeGlobalModule JSTypeEnum JSTypeFromTag JSIsNumber JSIsArrayJSIsDate JSIsError JSTagEnum JSTagFirstJSTagBigDecimal JSTagBigInt JSTagBigFloat JSTagSymbol JSTagString JSTagModuleJSTagFunctionBytecode JSTagObjectJSTagInt JSTagBool JSTagNullJSTagUndefinedJSTagUninitializedJSTagCatchOffsetJSTagException JSTagFloat64 FromCType fromCTypeToCTypetoCTypeJSRefCountHeader ref_countJSPropertyEnum is_enumerableatomJSAtomJSBool JSContext_unusedContext JSRuntime_unusedRuntime JSValueConstJSValueutagjsGPNStringMaskjsGPNSymbolMaskjsGPNPrivateMask jsGPNEnumOnly jsGPNSetEnum quickjsCtxquickjsTypesTable$fStorableJSValue$fStorableJSPropertyEnum$fStorableJSRefCountHeader$fFromCTypeJSTagEnuma$fToCTypeJSTagEnuma$fToCTypeJSEvalTypea $fShowJSValue $fEqJSValue$fShowJSPropertyEnum$fEqJSPropertyEnum$fShowJSRefCountHeader$fEqJSRefCountHeader$fShowJSTagEnum $fEqJSTagEnum$fShowJSTypeEnum $fEqJSGPNMask$fBitsJSGPNMask InternalError$sel:message:InternalErrorJSValueIncorrectType$sel:name:JSValueIncorrectType"$sel:expected:JSValueIncorrectType$sel:found:JSValueIncorrectTypeJSValueUndefined$sel:value:JSValueUndefined JSException$sel:location:JSException$sel:message:JSExceptionUnsupportedTypeTag$sel:_tag:UnsupportedTypeTag UnknownJSTag$sel:raw_tag:UnknownJSTagSomeJSRuntimeExceptionjsRuntimeExceptionToExceptionjsRuntimeExceptionFromException $fToJSONCLong!$fExceptionSomeJSRuntimeException$fShowSomeJSRuntimeException$fShowUnknownJSTag$fExceptionUnknownJSTag$fShowUnsupportedTypeTag$fExceptionUnsupportedTypeTag$fShowJSException$fExceptionJSException$fShowJSValueUndefined$fExceptionJSValueUndefined$fShowJSValueIncorrectType$fExceptionJSValueIncorrectType$fShowInternalError$fExceptionInternalError$fGenericUnknownJSTag$fGenericUnsupportedTypeTag$fGenericJSException$fGenericJSValueUndefined$fGenericJSValueIncorrectType$fGenericInternalError JSContextPtrevaleval_ fromJSValue_ withJSValuecallquickjsquickjsMultithreadedversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName$aeson-1.5.4.0-HFRp1WVd49z1KGPPJUAdOjData.Aeson.Types.InternalValuebaseControl.ConcurrentrunInBoundThread