{ "schema": "ailang/v0", "name": "test_22b2_constraint_declared_via_superclass", "imports": [], "defs": [ { "kind": "class", "name": "TEq", "param": "a", "methods": [{ "name": "teq", "type": { "k": "fn", "params": [{ "k": "var", "name": "a" }, { "k": "var", "name": "a" }], "ret": { "k": "con", "name": "Bool" }, "effects": [] } }] }, { "kind": "class", "name": "TOrd", "param": "a", "superclass": { "class": "TEq", "type": "a" }, "methods": [{ "name": "tlt", "type": { "k": "fn", "params": [{ "k": "var", "name": "a" }, { "k": "var", "name": "a" }], "ret": { "k": "con", "name": "Bool" }, "effects": [] } }] }, { "kind": "fn", "name": "uses_eq_via_ord", "type": { "k": "forall", "vars": ["a"], "constraints": [ { "class": "TOrd", "type": { "k": "var", "name": "a" } } ], "body": { "k": "fn", "params": [{ "k": "var", "name": "a" }, { "k": "var", "name": "a" }], "ret": { "k": "con", "name": "Bool" }, "effects": [] } }, "params": ["x", "y"], "body": { "t": "app", "fn": { "t": "var", "name": "teq" }, "args": [{ "t": "var", "name": "x" }, { "t": "var", "name": "y" }] } } ] }