@5b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aSafeTTakes a unique integer representing your value, along with an IO action to create the first instance of your value to be used on subsequent recompilations.None[Extract the sandbox package db directory from the cabal.sandbox.config file. Exception is thrown if the sandbox config file is broken.BGet path to sandbox's package DB via the cabal.sandbox.config file IGet path to the project's snapshot and local package DBs via 'stack path'    None!"T[Allow API users to block until a given file is compiled, to work around a bug where the GHC API crashes while loading libraries if the main thread is doing work (possibly due to accessing said libraries in some way)#[We return the uncoerced HValue, which lets us send polymorphic values back through channels%DOutputs any value that can be pretty-printed using the default style  !"#$%&bcdefghijklmnopqrstuvwxyz{|}~  !"#$%&  !"#$%&   !"#$%&None!"[CCreates a getter for a set of resources that will be rebuilt whenever the file changes. Takes a filename and an action to create a resource based on that file. getWatchedResource <- makeWatchedResource "resources/shapes.frag" $ do shader <- createShaderProgram "resourcesshapes.vert" "resources&shapes.frag" useProgram shader.uTime <- getShaderUniform shader "uTime"(quadVAO, quadVertCount) <- makeScreenSpaceQuad shader return (quadVAO, quadVertCount, uTime) Then use (quadVAO, quadVertCount, uResolution, uMouse, uTime) <- getWatchedResource in main loop*+,-./0123456789:;<=>?@ABC*+,-./0123456789:;<=>?@ABC2/01*+,-.3456789:;<=>?@ABC*+,-./0123456789:;<=>?@ABCNone!"OTWThis is intentionally lazy, since we want to evaluate the string on the SubHalive thread (as it may be e.g. a TextSeq that needs conversion) In the future, we may want to pass GHC's StringBuffer type here instead, and construct those in a smarter way.FGHIJKLMNOPQRSTUVWXYZ[\]FGHIJKLMNOPQRSTUVWXYZ[\]RSTUVWQXYLMNOPZFGHIJK[\] FGHIJKLMNOPQRSTUVWXYZ[\]None%A small collection of helper functions for creating threads that can be killed each time Halive re-runs your main function. This is helpful for programs where you control the threads, but doesn't solve the problem of libraries that use threads (unless you unpack them and replace all forkIOforkOS with forkIO'forkOS') It would be good to ask GHC devs about this; perhaps a GHC flag that registers threads similar to this module, for development use only?^Kill all threads registered to be killed. Meant to be called at the beginning of your program to clean up threads from the last execution before continuing_9Register a thread to be killed when killThreads is called`EFork a thread and register it to be killed when killThreads is calledaIFork an OS thread and register it to be killed when killThreads is called^_`a^_`a^_`a^_`a      !"#$%&'()*+,-.//0123456789:;<=>?@ABCDEFGHIJJKLMNOOPQRSTTUVWXYZ[\]^_`abcdecdfcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzcd{cd|cd}cd~cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd#halive-0.1.2-7afHQCQ6xdfGXsvPAXaYPI Halive.UtilsHalive.FindPackageDBsHalive.SubHaliveHalive.FileListenerHalive.RecompilerHalive.ConcurrentisHaliveActive reacquirepersist persistState extractKey mightExistaddExtraPkgConfs getSandboxDbupdateDynFlagsWithCabalSandbox getStackDbupdateDynFlagsWithStackDB CompiledValueGHCSessionConfiggscFixDebouncegscImportPaths gscPackageDBs gscLibDirgscLanguageExtensionsgscCompilationModegscStartupFile gscVerbosityCompliationMode InterpretedCompiled FixDebounce DebounceFix NoDebounceFixdefaultGHCSessionConfiglogIOwithGHCSession gatherErrorsgetCompiledValuefileContentsStringToBufferrecompileExpressionInFilecatchExceptionsoutput logHandler$fEqFixDebounce$fEqCompliationMode$fShowCompiledValueFileEventListener felEventTChanfelIgnoreNextEventsNear felStopMVarShouldReadFileReadFileOnEventsJustReportEvents FileEventChan atomicallyIO readTChanIO writeTChanIOtryReadTChanIOfileModifiedPredicateeventListenerForFileeventListenerForDirectorykillFileEventListenermodifiedWithExtensionPredicateforkDirectoryListenerThreadforkFileListenerThreadsetIgnoreTimeNow setIgnoreTime readFileEvent onFileEvent onTChanReadmakeWatchedResource$fEqShouldReadFile$fShowShouldReadFileRecompilerConfig rccWatchAll rccExpression rccFilePathrccCompileImmediately RecompilerrecResultTChanrecFileEventListenerrecListenerThreadCompilationResultCompilationRequest crFilePathcrExpressionString crResultTChancrFileContentswithGHCstartGHCrecompilerForExpressionrecompilerWithConfigkillRecompilerrenameRecompilerForExpression killThreadsregisterThreadforkIO'forkOS'ghc-boot-th-8.0.1.20161018GHC.LanguageExtensions.Type ExtensionCpp UnicodeSyntaxOverlappingInstancesUndecidableInstancesIncoherentInstancesUndecidableSuperClassesMonomorphismRestriction MonoPatBindsMonoLocalBindsRelaxedPolyRecExtendedDefaultRulesForeignFunctionInterfaceUnliftedFFITypesInterruptibleFFICApiFFIGHCForeignImportPrim JavaScriptFFIParallelArraysArrowsTemplateHaskellTemplateHaskellQuotes QuasiQuotesImplicitParamsImplicitPreludeScopedTypeVariablesAllowAmbiguousTypes UnboxedTuples BangPatterns TypeFamiliesTypeFamilyDependencies TypeInTypeOverloadedStringsOverloadedLists NumDecimalsDisambiguateRecordFieldsRecordWildCards RecordPuns ViewPatternsGADTs GADTSyntaxNPlusKPatternsDoAndIfThenElseRebindableSyntaxConstraintKinds PolyKinds DataKinds InstanceSigs ApplicativeDoStandaloneDerivingDeriveDataTypeableAutoDeriveTypeable DeriveFunctorDeriveTraversableDeriveFoldable DeriveGenericDefaultSignaturesDeriveAnyClass DeriveLiftTypeSynonymInstancesFlexibleContextsFlexibleInstancesConstrainedClassMethodsMultiParamTypeClassesNullaryTypeClassesFunctionalDependenciesExistentialQuantification MagicHashEmptyDataDeclsKindSignaturesRoleAnnotationsParallelListCompTransformListCompMonadComprehensionsGeneralizedNewtypeDeriving RecursiveDoPostfixOperators TupleSections PatternGuardsLiberalTypeSynonyms RankNTypesImpredicativeTypes TypeOperatorsExplicitNamespacesPackageImportsExplicitForAllAlternativeLayoutRule!AlternativeLayoutRuleTransitionalDatatypeContextsNondecreasingIndentation RelaxedLayoutTraditionalRecordSyntax LambdaCase MultiWayIfBinaryLiteralsNegativeLiteralsDuplicateRecordFieldsOverloadedLabels EmptyCasePatternSynonymsPartialTypeSignaturesNamedWildCardsStaticPointersTypeApplicationsStrict StrictDataMonadFailDesugaringregisteredThreads