Skip to content

[Repo] Effect-row v1 name list: define IO/Async/Partial/Throws[E]/Mut early #59

@hyperpolymath

Description

@hyperpolymath

Proposal

Pin a v1 effect-name list (even if incomplete) so real migration can begin. AI.a2ml names "effect tracking" as in-scope; the concrete effect names aren't pinned, which blocks real translation.

Real translation needed (from one .res file: Main.res)

  • {IO} — standard
  • {Async} — promise-equivalent, suspend semantics
  • {Partial} — short-circuit failure (? operator on Result)
  • {Throws[E]} — typed exception (separate from Partial because it carries a type)
  • {Mut} — internal mutation (vs ambient global)
  • Plus eventually: {Random}, {Time}, {Net}

Pinning all six in v1 unblocks real translation. The effect-handler design (out-of-scope per AI.a2ml) doesn't have to be solved first; effect tracking alone gives most of the value.

Source observation

The pilot's Main.affine and Boot.affine use /{IO, Async} and would have used /{Partial} for ?-on-Result. Without pinned names every contributor invents their own.


Filed from idaptik Wave 3 pilot. See LESSONS.md and PILOT.md. Idaptik commit hyperpolymath/idaptik@aef38db.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions