johnynek / johnynek/zafu

API wishlist

Open
#4 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

**Priority List**

1. `P0` `Zafu/Collection/HashMap` + `Zafu/Collection/HashSet` (HAMT/Hash-trie) with a `Hash` typeclass.
2. `P0` `Zafu/Collection/Heap` (immutable priority queue): `empty/add/peek/pop/merge/from_List`.
3. `P0` `Zafu/Collection/Queue` upgrade (or `Deque`): add `size/is_empty/peek/enqueue/dequeue/concat/from_foldable`.
4. `P0` Expand `Zafu/Collection/Vector` API to production-complete: `append/prepend/updated/slice/take/drop/split/zip`.
5. `P0` `Zafu/Parse` (cats-parse-like combinators) with good errors/locations; current Bosatsu parser in test workspace is very minimal ([Parser](/Users/oscar/code/bosatsu/test_workspace/Parser.bosatsu)).
6. `P0` `Zafu/Pretty/Doc` (paiges-style): `text/line/hardline/group/nest/intercalate/render(width)`.

7. `P1` `Zafu/Cli` (decline-like argument parser) built on `Zafu/Parse` + `Zafu/Pretty`; Bosatsu CLI structure depends on this style ([CommonOpts](/Users/oscar/code/bosatsu/core/src/main/scala/dev/bosatsu/tool/CommonOpts.scala)).
8. `P1` `Zafu/Collection/NonEmptyList` (+ maybe `NonEmptyVector`) with core combinators.
9. `P1` `Zafu/Control/Validated` (+ `ValidatedNel`) for error accumulation.
10. `P1` `Zafu/Control/Ior` for partial-success workflows.

11. `P2` Ordered collection ergonomics over predef `Dict`: `OrdMap`/`OrdSet` helpers (union/intersect/diff/mapValues/filterKeys/grouping utilities).
12. `P2` `Zafu/Graph` utilities (toposort/SCC/reachability) and `Zafu/Json/Codec` combinators for typed JSON encoding/decoding.

Contributor guide

No contributing guide indexed for this repository

Research direction

This issue is a broad API wishlist rather than a single task. Start by reading the listed Bosatsu test-workspace Parser and core/src/main/scala/dev/bosatsu/tool/CommonOpts.scala to understand the parser and CLI context. Before coding, select one specifically scoped collection or utility item; done should be defined by its API, implementation, and tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.