!X      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       None'6 haskus-utils)Embed bytes in a C array, return an Addr#7 haskus-utils.Adapted from the raw-strings-qq package (BSD3)}A quasiquoter for raw string literals - that is, string literals that don't recognise the standard escape sequences (such as '\n'). Basically, they make your code more readable by freeing you from the responsibility to escape backslashes. They are useful when working with regular expressions, DOS/Windows paths and markup languages (such as XML).Don't forget the LANGUAGE QuasiQuotes1 pragma if you're using this module in your code.Usage:  ghci> :set -XQuasiQuotes ghci> import Text.RawString.QQ ghci> let s = [raw|\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}|] ghci> s "\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}" ghci> [raw|C:\Windows\SYSTEM|] ++ [raw|\user32.dll|] "C:\\Windows\\SYSTEM\\user32.dll" 1Multiline raw string literals are also supported:  multiline :: String multiline = [raw|<HTML> <HEAD> <TITLE>Auto-generated html formated source</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252"> </HEAD> <BODY LINK="0000ff\" VLINK=\"4800080" BGCOLOR="#ffffff"> <P> </P> <PRE>|] Caveat: since the "|]"q character sequence is used to terminate the quasiquotation, you can't use it inside the raw string literal. Use 8D if you want to embed that character sequence inside the raw string.8 haskus-utils A variant of 7 that interprets the "|~]" sequence as "|]", "|~~]" as "|~]" and, in general, "|~^n]" as  "|~^(n-1)]" for n >= 1.Usage: j ghci> [rawQ||~]|~]|] "|]|]" ghci> [rawQ||~~]|] "|~]" ghci> [rawQ||~~~~]|] "|~~~]"  !678678None*9 haskus-utilsApply a function: haskus-utilsApply a function; haskus-utilsApply a function in a Functor< haskus-utilsApply a function in a Functor ! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9:;< ! 9:;<    90:0;0<0None+-<CFGSTVi<@ haskus-utilsA type t is maybe indexable in the arrayA haskus-utilsA type t is indexable in the arrayB haskus-utils The type t with index n is indexable in the arrayC haskus-utilsheterogeneous arrayD haskus-utils Empty arrayE haskus-utils Empty arrayF haskus-utilsGet an element by indexG haskus-utilsGet first elementH haskus-utilsSet an element by indexI haskus-utils<Get an element by type (select the first one with this type)J haskus-utils<Set an element by type (select the first one with this type)K haskus-utils<Get an element by type (select the first one with this type)L haskus-utils!Append a value to an array (O(n))M haskus-utils"Prepend a value to an array (O(n))N haskus-utils Concat arraysO haskus-utilsDrop the last elementP haskus-utilsDrop the first elementQ haskus-utilsCompose HArrayT=>?@ABCDEFGHIJKLMNOPQCBA@DEFGHIJKLMNOP=>?QNone -<CFSTVFR haskus-utils Multi-stateS haskus-utilsMulti-state monad transformer,States are stacked in a heterogeneous array.T haskus-utils Run MStateU haskus-utilsEvaluate MStateV haskus-utilsExecute MStateW haskus-utilsSet a value in the stateX haskus-utilsGet a value in the stateY haskus-utilsTry to get a value in the stateZ haskus-utilsModify a value in the state[ haskus-utils,Modify a value in the state (strict version)\ haskus-utils(Execute an action with an extended state] haskus-utils-Lift a multi-state into an HArray transformer^ haskus-utilsCompose MStateT_ haskus-utilsCompose MStateTRSTUVWXYZ[\]^_SRWXYZ[\TUV]^_None-;<=>?CFSTVi] b haskus-utils Parser errore haskus-utilsTry to apply the actions in the list in order, until one of them succeeds. Returns the value of the succeeding action, or the value of the last one. Failures are detected with values of type  ParseError.f haskus-utilsTry to apply the actions in the list in order, until one of them succeeds. Returns the value of the succeeding action, or the value of the last one. Failures are detected with values of type "a".g haskus-utilsLApply the action zero or more times (until a ParseError result is returned)h haskus-utilsVApply the action zero or more times (up to max) until a ParseError result is returnedi haskus-utilsVApply the action zero or more times (up to max) until a ParseError result is returnedj haskus-utilsVApply the action zero or more times (up to max) until a ParseError result is returnedk haskus-utilsXApply the action at least n times or more times (until a ParseError result is returned)l haskus-utils{Apply the first action zero or more times until the second succeeds. If the first action fails, the whole operation fails.9Return both the list of first values and the ending valuem haskus-utils{Apply the first action zero or more times until the second succeeds. If the first action fails, the whole operation fails.$Return only the list of first valuesn haskus-utils Apply the given action at least min times and at most max timeOn failure, fails.`abcdefghijklmnbcd`aefnhijgklmSafear haskus-utils%Execute an STM transaction atomicallys haskus-utilsRead a TVar in an IO monadt haskus-utilsCreate a broadcast channelu haskus-utils Create a TVarv haskus-utilsCreate a TMVar"#$%&'()*+,-./01234rstuvrus"$#/v%.-(,*&')+4t3201Noneh$ w haskus-utilsSetter for a future valuex haskus-utilsFuture value of type ay haskus-utilsCreate a Future and its sourcez haskus-utilsy in { haskus-utils Set a future| haskus-utilsSet a future in IO} haskus-utils Set a future'Return False if it has already been set~ haskus-utilsWait for a future haskus-utils Poll a future haskus-utils in  wxyz{|}~ xwyz~{|} Safeh NoneV]~n haskus-utilsA node in the listEvery list has a marker node whose value is Nothing. Its nodePrev links to the last node and its nodeNext links to the first node. haskus-utilsA double linked-list haskus-utils Get value associated with a node haskus-utilsEmpty node singleton haskus-utils*Remove all the elements of the list (O(1)) haskus-utilsCreate a singleton list haskus-utilsIndicate if the list is empty haskus-utils/Count the number of elements in the list (0(n)) haskus-utilsGet the first element if any haskus-utilsGet the last element if any haskus-utilsGet the previous element if any haskus-utilsGet the next element if any haskus-utilsDelete a element of the list haskus-utils)Insert a node between two adjacent nodes. haskus-utilsAppend an element to the list haskus-utilsAppend an element to the list haskus-utilsPrepend an element to the list haskus-utilsPrepend an element to the list haskus-utils Insert an element before another haskus-utilsInsert an element after another haskus-utilsConvert into a list (O(n)) haskus-utils#Convert into a reversed list (O(n)) haskus-utilsCreate from a list haskus-utils(Only keep element matching the criterium haskus-utils3Find the first node matching the predicate (if any) haskus-utilsGet the node from its index haskus-utils5Take (and remove) up to n elements in the list (O(n)) None haskus-utils@A node contains a value and two lists of incoming/outgoing edges haskus-utilsDeep-first graph traversalubefore is executed when the node is entered after is executed when the node is leaved children gets node's children haskus-utilsBreadth-first graph traversalsvisit is executed when the node is entered. If False is returned, the traversal ends children gets node's children haskus-utilsCreate a graph node haskus-utilsLink two nodes together None+ haskus-utils STM hashmap haskus-utilsIndicate if the map is empty haskus-utils%Get the number of elements in the map haskus-utils)Lookup an element in the map from its key haskus-utilsCheck if a key is in the map haskus-utils Check if a key is not in the map haskus-utilsCreate an empty map haskus-utils(Create a map containing a single element haskus-utilsInsert an element in the map haskus-utilsCreate a new TMap from a list haskus-utilsDelete an element from the map haskus-utilsCreate a list of (key,value) haskus-utils Get values haskus-utilsGet keys haskus-utilsUnsafe lookup in the map55 None+J haskus-utilsSTM Set haskus-utilsIndicate if the set is empty haskus-utilsNumber of elements in the set haskus-utils!Check if an element is in the set haskus-utils%Check if an element is not in the set haskus-utilsCreate an empty set haskus-utils(Create a set containing a single element haskus-utilsInsert an element in a set haskus-utilsDelete an element from a set haskus-utilsConvert a set into a list haskus-utilsCreate a set from a list haskus-utilsGet the set elements haskus-utilsGet the set as a ListT stream haskus-utilsPerform a set union haskus-utils+Apply a function to each element in the set None  haskus-utilsPath in the tree haskus-utilsA STM mutable tree haskus-utilsNode identifier haskus-utils Node value haskus-utilsChildren haskus-utilsParent haskus-utilsCreate a singleton node haskus-utils Add a child haskus-utilsDetach a child haskus-utilsEAttach a child a node (detaching it from a previous one if necessary) haskus-utils Follow a path from a parent node None ;<=FNTV]^% haskus-utilsReduction result haskus-utilsPredicated data }data T data NT type family RuleT e p a s :: * where RuleT e p a T = a RuleT e p a NT = Rule e p a data PD t = PD { p1 :: RuleT () Bool Int t , p2 :: RuleT () Bool String t } deriving instance Eq (PD T) deriving instance Show (PD T) deriving instance Ord (PD T) deriving instance Eq (PD NT) deriving instance Show (PD NT) deriving instance Ord (PD NT) instance Predicated (PD NT) where type PredErr (PD NT) = () type Pred (PD NT) = Bool type PredTerm (PD NT) = PD T liftTerminal (PD a b) = PD (liftTerminal a) (liftTerminal b) reducePredicates oracle (PD a b) = initP PD PD |> () reducePredicates oracle a) |> (p reducePredicates oracle b) |> resultP getTerminals (PD as bs) = [ PD a b | a <- getTerminals as , b <- getTerminals bs ] getPredicates (PD a b) = concat [ getPredicates a , getPredicates b ]  haskus-utils Error type haskus-utilsPredicate type haskus-utils Terminal type haskus-utils$Build a non terminal from a terminal haskus-utilsReduce predicates haskus-utils Get possible resulting terminals haskus-utilsGet used predicates haskus-utilsPredicate oracle haskus-utilsPredicate state haskus-utils Set predicate haskus-utilsUnset predicate haskus-utilsUndefined predicate haskus-utils#Ask an oracle if a predicate is set haskus-utils%Ask an oracle if a predicate is unset haskus-utils)Ask an oracle if a predicate is undefined haskus-utilsCheck the state of a predicate haskus-utilsGet predicate state haskus-utilsCreate an oracle from a list haskus-utils'Get a list of predicates from an oracle haskus-utilsOracle that always answer Undef haskus-utilsReduce a constraint haskus-utils=Check that a constraint is evaluated to a given boolean value haskus-utils#Get predicates used in a constraint haskus-utilsGet constraint terminals haskus-utils4NonTerminal whose constraints are evaluated in orderKEarlier constraints must be proven false for the next ones to be considered haskus-utilsSimplify a constraint haskus-utilsMerge two rules together haskus-utils Reduce a rule haskus-utils Get possible resulting terminals haskus-utilsGet predicates used in a rule haskus-utilsFConstraint checking that a predicated value evaluates to some terminal haskus-utilsCompose reduction resultsWe reuse the MatchResult data type: * a "terminal" on the left can be used to build either a terminal or a non terminal * a "non terminal" on the left can only be used to build a non terminal haskus-utilsIInitialise a reduction result (typically with two functions/constructors) haskus-utils#Fixup result (see initP and applyP) haskus-utils3Create a table of predicates that return a terminal// ! " #$%$&$'$($)$*+,+-./012312412512612789:89;89<=>?=>@=>A=BC=BD=BE=BF=BG=BH=BI=BJ=BK=BL=BM=NO=NP=NQ=NR=NSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~                  !"#$%&'()*+,-./-.0-.1-.2-.3-.4-.5-.6-.7-.8-.9-.:-.;-.<-.=-.>-.?-.@-.A-.B-.C-.D-.E-.F-.G-.H-.I-.J-.K-.L-.M-.N-.O-.P-.Q-.R-.S-.T-.U-.V-.W-.X-.Y-.Z-.[-.\-.]-.^-._-.`-.a-.b-.c-.d-.e-.f-.g-.h-.i-.j-.k-.l-.m-.n-.o-.p-.q-.r-.s-.t-.u-.v-.w-.x-.y-.z-.{-.|-.}-.~-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-------- 'haskus-utils-1.1-9EbdpbFIJbe6X3LrLosS08Haskus.Utils.FlowHaskus.Utils.STMHaskus.Utils.STM.TMapHaskus.Utils.EmbedHaskus.Utils.HArrayHaskus.Utils.MultiStateHaskus.Utils.ParserHaskus.Utils.STM.FutureHaskus.Utils.STM.TEqHaskus.Utils.STM.TListHaskus.Utils.STM.TGraphHaskus.Utils.STM.TSetHaskus.Utils.STM.TTreeHaskus.Utils.Solverbase Control.MonadguardGHC.BasejoinControl.Monad.IO.ClassliftIOMonadIOunless replicateM_ replicateMfoldM_foldMforever<=<>=>filterMData.TraversableforMsequencemapM GHC.Conc.Sync writeTVarreadTVarnewTVarretrySTMTVar Data.FoldableforM_mapM_ Data.Functorvoidwhen#extra-1.6.13-KuENukr0H0F6XFWIjbKhXpControl.Monad.ExtraifMunlessMwhenMwhileMloopM,haskus-utils-data-1.1-5DVJjE4YIIWLdEWqtdIsLdHaskus.Utils.Monad liftWith2liftWith MonadInIO"stm-2.4.5.1-1n1oRyz2WxkGi5pMiXlR3yControl.Concurrent.STM.TVarswapTVar modifyTVar' modifyTVarControl.Concurrent.STM.TMVar isEmptyTMVar swapTMVar tryReadTMVar readTMVar tryPutTMVarputTMVar tryTakeTMVar takeTMVarnewEmptyTMVarIO newEmptyTMVarTMVarControl.Concurrent.STM.TChandupTChan readTChan writeTChannewBroadcastTChanTChan,stm-containers-0.2.16-8A7HZJJM9Pk3tjubKGtoUiSTMContainers.MapKey embedBytesrawrawQ|><|||><||HArrayT runHArrayTHArrayTryIndexT HArrayIndexT HArrayIndexHArray emptyHArray singleHArray getHArrayN getHArray0 setHArrayN getHArrayT setHArrayT tryGetHArrayT appendHArray prependHArray concatHArray initHArray tailHArray>~:~>MStateMStateT runMState evalMState execMStatemSetmGetmTryGetmModifymModify'mWith liftMStateT>~:>>:>Choice ParseError SyntaxError EndOfInputchoicechoice'many manyAtMost manyAtMost' manyAtMost'' manyAtLeastmanyTill manyTill' manyBounded$fApplyChoice(,)z$fShowParseError$fEqParseError atomically readTVarIOnewBroadcastTChanIO newTVarIO newTMVarIO FutureSourceFuture newFuture newFutureIO setFuture setFutureIO setFuture' waitFuture pollFuture pollFutureIOTEqteq $fTEqTVarTNodeTListvalueempty deleteAll singletonnulllengthfirstlastprevnextdeleteappendappend_prependprepend_ insertBefore insertAftertoList toReverseListfromListfilterfindindextake nodeValue nodeEdgeIn nodeEdgeOut deepFirst breadthFirstlinkToTMapsizelookupmember notMemberinsertelemskeys!TSetstreamunionsmap TTreePathTTreetreeKey treeValue treeChildren treeParentaddChild detachChild attachChildtreeFollowPath MatchResultNoMatchMatch DontMatch MatchFail MatchDiverge PredicatedPredErrPredPredTerm liftTerminalreducePredicates getTerminals getPredicatesRuleTerminal NonTerminalFail Constraint PredicateNotAndOrXorCBool PredOracle PredStateSetPred UnsetPred UndefPred predIsSet predIsUnset predIsUndefpredIs predState makeOracleoraclePredicates emptyOracleconstraintReduceorderedNonTerminalsimplifyConstraint mergeRulesevalsToapplyPinitPresultPcreatePredicateTable$fFunctorConstraint $fFunctorRule$fFunctorMatchResult$fPredicatedConstraint$fPredicatedRule$fShowPredState $fEqPredState$fOrdPredState$fShowConstraint$fEqConstraint$fOrdConstraint $fShowRule$fEqRule $fOrdRule$fShowMatchResult$fEqMatchResult$fOrdMatchResult(file-embed-0.0.11-F0DApYaRQMkAdYGXjkQy01Data.FileEmbedmakeRelativeToProjectinjectFileWith injectFile injectWithinjectdummySpaceWith dummySpacestrToExpembedOneStringFileOfembedStringFile stringToBsbsToExpgetDirembedDirListingembedDirembedOneFileOf embedFile/haskus-utils-variant-2.0-2NrYGUd0Hl8BSRRcuypJu5Haskus.Utils.Variant.Flow>~||>~||>~||>-||>-||>-||liftFliftV combineSinglecombineLiftBothcombineLiftUnselected combineUnion combineConcat combineEithercombineSameTail combineFirstapplyFapplyM applyPure applyConst selectType selectTail selectFirst makeFlowOpM makeFlowOp>%~!!>%~!!>>?~!!>?~!!>>%~!>%~!>>?~!>?~!>>%~=>%~=>>?~=>?~=>>%~|>%~|>>?~|>?~|>>%~$>%~$>>?~$>?~$>>%~^>%~^>>?~^>?~^>>%~^^>%~^^>>?~^^>?~^^>>%~+>%~+>>?~+>?~+>>%~.>%~.>>?~.>?~.>>..%~!>..%~!>>..?~!>..?~!>>..%~!!>..%~!!>>..?~!!>..?~!!>>..~!!>..~!!>>..~!>..~!>>..~=>..~=>>..%~$>..%~$>>..?~$>..?~$>>..%~^^>..%~^^>>..?~^^>..?~^^>>..%~^>..%~^>>..?~^>..?~^>>..~^>..~^>>..~^^>..~^^>>..~..>..~..>>..-..>..-..>>..-.>..-.>>..~.>..~.>>.~~!>.~~!>>.~~=>.~~=>>.~~|>.~~|>>.~~$>.~~$>>.~~^>.~~^>>.~~^^>.~~^^>>.~~+>.~~+>>.~~.>.~~.><|<<*<<$<<.-.<<.-.>.-.>.-.>>.~!!>.~!!>>.~!>.~!>>.~=>.~=>>.~|>.~|>>.~$>.~$>>.~^>.~^>>.~^^>.~^^>>.~+>.~+>>.~.>.~.> flowMatchFail flowMatch flowBind'flowBindflowMapflowRes flowForFilterflowTraverseFilterflowFor flowTraverse flowToContflowLift flowSingleflowSetflowSetNFlowIOV ReplaceRHS ExtractRHS LiftContTupleLiftContliftContHaskus.Utils.Variant:<: