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.
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){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.affineandBoot.affineuse/{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.