{ "schema": "ailang/v0", "name": "param_modes_all", "imports": [], "defs": [ { "kind": "fn", "name": "f_implicit", "doc": "Implicit mode is the legacy default — `param_modes` is omitted from canonical JSON when every entry is Implicit, which is the case here. The visitor still observes ParamMode::Implicit via the (defaulted) ret_mode field on Type::Fn.", "type": { "k": "fn", "params": [ { "k": "con", "name": "Int" } ], "ret": { "k": "con", "name": "Int" }, "effects": [] }, "params": ["x"], "body": { "t": "var", "name": "x" } }, { "kind": "fn", "name": "f_own", "doc": "(own T) — caller transfers ownership; callee consumes.", "type": { "k": "fn", "params": [ { "k": "con", "name": "Int" } ], "param_modes": ["own"], "ret": { "k": "con", "name": "Int" }, "effects": [] }, "params": ["x"], "body": { "t": "var", "name": "x" } }, { "kind": "fn", "name": "f_borrow", "doc": "(borrow T) — caller retains ownership; callee may not consume.", "type": { "k": "fn", "params": [ { "k": "con", "name": "Int" } ], "param_modes": ["borrow"], "ret": { "k": "con", "name": "Int" }, "effects": [] }, "params": ["x"], "body": { "t": "var", "name": "x" } } ] }