Îõ³h$ ® Ü„      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ Safe-InferredG„…†‡ˆ‰Š‹None  >ÀÁÂ΂=    !"#$%&(')*+,-./0123546789:;<=23541./0+,-*)%&('"#$ !   6789:;<None#$8<ÆÎÙå%NOPQRTUSVWXYZ\[]^_`abcdefcdef`ab]^_YZ\[VWXQRTUSNOPHaskell bindings to the  https://bellard.org/quickjs/QuickJS library(c) Samuel Balco, 2020MITgoodlyrottenapple@gmail.comNone ?Ù ¾} 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 2Ø and passed as an argument to the callback function, provided as the second argument to €‚ quickjs-hsâThis 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: Ôquickjs $ do _ <- eval_ "f = (x) => x+1" res <- eval "f(2)" liftIO $ print res'Pass a Haskell value to the JS runtime: òquickjs $ 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.pdfÁExtending the Haskell Foreign Function Interface with Concurrency 2|}~€‚ƒ 2|‚ƒ}~€Ž      !"#$%&&'(()*+,--.//01223456789:;<=>?@ABCDEFGHIJKLMMNOOPQRSSTUUVWXXYZZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š(quickjs-hs-0.1.2.4-84EK2m4f8oHMvR1T3WgCG 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 $fEqJSGPNMask$fBitsJSGPNMask$fShowJSTypeEnum$fShowJSTagEnum $fEqJSTagEnum$fShowJSRefCountHeader$fEqJSRefCountHeader$fShowJSPropertyEnum$fEqJSPropertyEnum $fShowJSValue $fEqJSValue 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$fGenericInternalError$fGenericJSValueIncorrectType$fGenericJSValueUndefined$fGenericJSException$fGenericUnsupportedTypeTag$fGenericUnknownJSTag JSContextPtrevaleval_ fromJSValue_ withJSValuecallquickjsquickjsMultithreadedversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName$aeson-1.5.5.1-84KYGkng9mGI5rKNjU8k2IData.Aeson.Types.InternalValuebaseControl.ConcurrentrunInBoundThread