{ "schema": "ailang/v0", "name": "max3", "imports": [], "defs": [ { "kind": "fn", "name": "max", "type": { "k": "fn", "params": [ { "k": "con", "name": "Int" }, { "k": "con", "name": "Int" } ], "ret": { "k": "con", "name": "Int" }, "effects": [] }, "params": ["a", "b"], "body": { "t": "match", "scrutinee": { "t": "app", "fn": { "t": "var", "name": ">" }, "args": [ { "t": "var", "name": "a" }, { "t": "var", "name": "b" } ] }, "arms": [ { "pat": { "p": "lit", "lit": { "kind": "bool", "value": true } }, "body": { "t": "var", "name": "a" } }, { "pat": { "p": "wild" }, "body": { "t": "var", "name": "b" } } ] } }, { "kind": "fn", "name": "max3", "type": { "k": "fn", "params": [ { "k": "con", "name": "Int" }, { "k": "con", "name": "Int" }, { "k": "con", "name": "Int" } ], "ret": { "k": "con", "name": "Int" }, "effects": [] }, "params": ["a", "b", "c"], "doc": "Demonstriert verschachteltes if (statt max-call) zum Test des Block-Trackings.", "body": { "t": "match", "scrutinee": { "t": "app", "fn": { "t": "var", "name": ">" }, "args": [ { "t": "var", "name": "a" }, { "t": "var", "name": "b" } ] }, "arms": [ { "pat": { "p": "lit", "lit": { "kind": "bool", "value": true } }, "body": { "t": "match", "scrutinee": { "t": "app", "fn": { "t": "var", "name": ">" }, "args": [ { "t": "var", "name": "a" }, { "t": "var", "name": "c" } ] }, "arms": [ { "pat": { "p": "lit", "lit": { "kind": "bool", "value": true } }, "body": { "t": "var", "name": "a" } }, { "pat": { "p": "wild" }, "body": { "t": "var", "name": "c" } } ] } }, { "pat": { "p": "wild" }, "body": { "t": "match", "scrutinee": { "t": "app", "fn": { "t": "var", "name": ">" }, "args": [ { "t": "var", "name": "b" }, { "t": "var", "name": "c" } ] }, "arms": [ { "pat": { "p": "lit", "lit": { "kind": "bool", "value": true } }, "body": { "t": "var", "name": "b" } }, { "pat": { "p": "wild" }, "body": { "t": "var", "name": "c" } } ] } } ] } }, { "kind": "fn", "name": "main", "type": { "k": "fn", "params": [], "ret": { "k": "con", "name": "Unit" }, "effects": ["IO"] }, "params": [], "body": { "t": "do", "op": "io/print_int", "args": [ { "t": "app", "fn": { "t": "var", "name": "max3" }, "args": [ { "t": "lit", "lit": { "kind": "int", "value": 3 } }, { "t": "lit", "lit": { "kind": "int", "value": 17 } }, { "t": "lit", "lit": { "kind": "int", "value": 9 } } ] } ] } } ] }