Desc
fx.experimental.desc-interp.desc: freer monad encoded as a levitated Desc (freeFx = pure + impure plus continuation queue); the substrate descInterp runs.
freeFx
freeFx Eff Resp A : Desc¹ ⊤ — freer monad as a plus-of-two-summands description; the Impure summand's continuation slot is a queue value μI U² (kontQueueApp Eff Resp) (Resp op, A) rather than a meta-level fn.
freeFx : Hoas U -> Hoas (U -> U) -> Hoas U -> Hoas (Desc¹ ⊤)
freeFxApp
freeFxApp Eff Resp A — identity-tagged HOAS form of freeFx Eff Resp A; canonApp wrapper that stamps the resulting VDescCon with _canonRef = { id = "freeFx"; params = [Eff, Resp, A]; } so conv/quote short-circuit on the canonical identity.
freeFxApp : Hoas U -> Hoas (U -> U) -> Hoas U -> Hoas (Desc¹ ⊤)
impureCon
impureCon Eff Resp A op q — smart constructor for the Impure summand; q : μI U² (kontQueueApp Eff Resp) (Resp op, A) is a queue value carrying the continuation. Emits a desc-con HOAS form with a Desc¹ inr payload storing op and the ret witness through LiftAt 0 1.
impureCon : Hoas U -> Hoas (U -> U) -> Hoas U -> Hoas Eff -> Hoas (μI U² kontQueueApp …) -> Hoas (FreeFx Eff Resp A)
kontQueue
kontQueue Eff Resp : IDesc(U × U) — description-side FTCQueue (Kiselyov & Ishii 2015, section 3.1) at the indexed slice; three-summand plus encoding Identity / Leaf / Node where ∃M existentials are reified as descArgAt-bound index witnesses (CDMM 2010, section 6). Levitation transposition of nix/nix-effects/src/queue.nix.
kontQueue : Hoas U -> Hoas (U -> U) -> Hoas (IDesc (U × U))
kontQueueApp
kontQueueApp Eff Resp — identity-tagged HOAS form of kontQueue Eff Resp; canonApp wrapper that stamps the resulting VDescCon with _canonRef = { id = "kontQueue"; params = [Eff, Resp]; } so conv on μI(kontQueueApp …) self-equality short-circuits without forcing .D. X and A are dropped from the wrapper's params — the indexing is intrinsic to IDesc(U × U).
kontQueueApp : Hoas U -> Hoas (U -> U) -> Hoas (IDesc (U × U))
pureCon
pureCon Eff Resp A v — smart constructor for the Pure summand; emits a desc-con HOAS form with a Desc¹ inl payload storing v and the ret witness through LiftAt 0 1.
pureCon : Hoas U -> Hoas (U -> U) -> Hoas U -> Hoas A -> Hoas (FreeFx Eff Resp A)
qIdentity
qIdentity Eff Resp X — smart constructor for the Identity summand of kontQueue; emits a desc-con HOAS form at index (X, X) with payload bootInl (X, refl) of the outer plus. Carries _index = { X; A = X; } sidecar.
qIdentity : Hoas U -> Hoas (U -> U) -> Hoas U -> Hoas (μI U² kontQueueApp …)
qLeaf
qLeaf Eff Resp X A fn — smart constructor for the Leaf summand; fn : X → μ(freeFxApp Eff Resp A) is a HOAS lam with fn.domain == X (host-level == is the principled Nix-meta surrogate for the descArgAt(X)-instantiation equality the kernel checker would enforce, mirroring qNode's seam check on _index). Emits a desc-con HOAS form at index (X, A) with payload bootInr (bootInl (X, (A, (fn, refl)))) of the nested plus. Carries _index = { X; A; } sidecar.
qLeaf : Hoas U -> Hoas (U -> U) -> Hoas U -> Hoas U -> Hoas (X -> μ freeFx) -> Hoas (μI U² kontQueueApp …)
qNode
qNode Eff Resp l r — smart constructor for the Node summand; l and r are queue values whose _index sidecars supply the index witnesses. Seam M = l._index.A is asserted equal to r._index.X via Nix-level == (kernel has no surface metavariables; the host-level check is the principled enforcement). Emits a desc-con HOAS form at index (l._index.X, r._index.A) with payload bootInr (bootInr (X, (M, (A, (l, (r, refl)))))) of the nested plus. Carries _index = { X; A; } sidecar.
qNode : Hoas U -> Hoas (U -> U) -> Hoas (μI U² kontQueueApp …) -> Hoas (μI U² kontQueueApp …) -> Hoas (μI U² kontQueueApp …)