ReadP is:module

This is a module of parser combinators, originally written by Koen Claessen. It parses all alternatives in parallel, so it never keeps hold of the beginning of the input string, a common source of space leaks with other parsers. The (+++) choice combinator is genuinely commutative; it makes no difference which branch is "shorter".
Parse JSON values using the ReadP combinators.
This is a library of parser combinators, originally written by Koen Claessen. It parses all alternatives in parallel, so it never keeps hold of the beginning of the input string, a common source of space leaks with other parsers. The (+++) choice combinator is genuinely commutative; it makes no difference which branch is "shorter".
This is a library of parser combinators, originally written by Koen Claessen. It parses all alternatives in parallel, so it never keeps hold of the beginning of the input string, a common source of space leaks with other parsers. The (+++) choice combinator is genuinely commutative; it makes no difference which branch is "shorter". See also Koen's paper Parallel Parsing Processes (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.19.9217). This version of ReadP has been locally hacked to make it H98, by Martin Sjögren mailto:msjogren@gmail.com The unit tests have been moved to UnitTest.Distribution.Deprecated.ReadP, by Mark Lentczner mailto:mark@glyphic.com
This module defines parser combinators for precedence parsing.
This library defines parser combinators for precedence parsing.
Parsing the SVG path command, see http://www.w3.org/TR/SVG/paths.html#PathData :
The GThreadPool struct represents a thread pool. A thread pool is useful when you wish to asynchronously fork out the execution of work and continue working in your own thread. If that will happen often, the overhead of starting and destroying a thread each time might be too high. In such cases reusing already started threads seems like a good idea. And it indeed is, but implementing this can be tedious and error-prone. Therefore GLib provides thread pools for your convenience. An added advantage is, that the threads can be shared between the different subsystems of your program, when they are using GLib. To create a new thread pool, you use [funcgLib.ThreadPool.new]. It is destroyed by threadPoolFree. If you want to execute a certain task within a thread pool, use threadPoolPush. To get the current number of running threads you call threadPoolGetNumThreads. To get the number of still unprocessed tasks you call threadPoolUnprocessed. To control the maximum number of threads for a thread pool, you use threadPoolGetMaxThreads. and threadPoolSetMaxThreads. Finally you can control the number of unused threads, that are kept alive by GLib for future use. The current number can be fetched with [funcgLib.ThreadPool.get_num_unused_threads]. The maximum number can be controlled by [funcgLib.ThreadPool.get_max_unused_threads] and [funcgLib.ThreadPool.set_max_unused_threads]. All currently unused threads can be stopped by calling [funcgLib.ThreadPool.stop_unused_threads].
Internal module providing a pool of threads.