HORIZON HASKELLDocslts/ghc-10.0.xaa25b892026-10-10Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · aa25b89 · 2026-10-10

Modulevortex-call-0.1.1.0GHC2024

Vortex.Call

Calls without elaboration. A Table maps operation names to functions from textual arguments into the DSL's monad; dispatch looks a Call up and applies it. What is lost against a block is composition — one operation, literal arguments — which is exactly the shape of a D-Bus method call. What is kept is everything after the term exists: the wisp-indexed model, the fuel, the trace.

A streaming operation (stream0, stream1) runs without fuel: it is a subscription, emitting Said frames until the peer goes away. That is the D-Bus signal, as a call that does not return.

  • 2 types
  • 9 values
valueanswer
  1. :: Table f
  2. -> forall a. Emit -> f a -> IO a
  3. -> Emit
  4. -> String
  5. -> IO Reply
#

One frame's terminal reply: the call it names run under its fuel, the table's names for Call ":commands" [], or why it is refused. What the call says on the way goes to the Emit.

valueserveTable
  1. :: Wisp -> Table f
  2. -> forall a. Wisp -> Emit -> f a -> IO a
  3. -> Wisp
  4. -> Session
  5. -> IO ()
#

Drive a session from a table alone — the shell of a process that carries no GHC, such as init. The table is chosen per wisp, so authorization is which operations the caller can even name; Call ":commands" [] lists them. An Exec session is one call: its command is answered and the session ends, as a shell answers a block; any other session answers each frame until the peer goes.