rebellion
rebellion copied to clipboard
A collection of core libraries for Racket
Graphs
The `rebellion/collection` library should provide an API for graphs and graph-shaped data. Here are some relevant libraries to draw design inspiration from: - [Google Guava Graphs API][guava-graphs] - [Stephen Chang's...
Sometimes records have missing fields that actually represent default values, or are otherwise significant. There should be some support in `rebellion/collection/record` for these use cases: - I have a record...
There should be a way to write transducer implementations such that the state of the transducer is modeled implicitly using control flow. This would make it easier to implement transducers...
The Racket `hash-copy` makes a shallow copy of the hash. Maybe more useful would be a copier that could optionally take a procedures to copy a key and/or a procedure...
Would it be useful to have a way to limit how many emissions a transducer can produce for each item? Either by delaying/buffering them or by dropping them entirely. Example:...
Using the `sorting` transducer is over an order of magnitude slower than using the built-in `sort` function in `racket/base`, even when when the `sorting` transducer is followed immediately by a...
Related to #351, but this is more about users writing and profiling their code. Users should be able to use the [feature profiler](https://docs.racket-lang.org/feature-profile/index.html) to figure out: - how much time...
These two transducer pipelines should have the exact same performance: ```racket (transduce some-sequence (mapping f) (taking 20) (mapping g) (taking 5) (append-mapping h) (filtering p) (filtering q) #:into some-reducer) (transduce...
Something like this: ```racket (define-regular-expression-type memory-usage-row #px"\\s*(\\S+):\\s+(\\d+)\\s+(\\d+)" (usage-type current-usage cumulative-usage)) (define memory-dump #list (in-matched-memory-usage-rows memory-dump)) (list (memory-usage-row "" 3307 105824) (memory-usage-row "" 14761 1007952) (memory-usage-row "
This issue is specifically about data types in `rebellion/base` and `rebellion/collection`. - Either provide lenses directly from the library (and add a dependency on the `lens-common` package) - Or expose...