{ "schema": "ailang/v0", "name": "t2_length", "imports": [], "defs": [ { "kind": "type", "name": "List", "vars": [ "a" ], "ctors": [ { "name": "Nil", "fields": [] }, { "name": "Cons", "fields": [ { "k": "var", "name": "a" }, { "k": "con", "name": "List", "args": [ { "k": "var", "name": "a" } ] } ] } ] }, { "kind": "fn", "name": "length", "type": { "k": "forall", "vars": [ "a" ], "body": { "k": "fn", "params": [ { "k": "con", "name": "List", "args": [ { "k": "var", "name": "a" } ] } ], "param_modes": [ "own" ], "ret": { "k": "con", "name": "Int" }, "ret_mode": "own", "effects": [] } }, "params": [ "xs" ], "body": { "t": "match", "scrutinee": { "t": "var", "name": "xs" }, "arms": [ { "pat": { "p": "ctor", "ctor": "Nil", "fields": [] }, "body": { "t": "lit", "lit": { "kind": "int", "value": 0 } } }, { "pat": { "p": "ctor", "ctor": "Cons", "fields": [ { "p": "wild" }, { "p": "var", "name": "rest" } ] }, "body": { "t": "app", "fn": { "t": "var", "name": "+" }, "args": [ { "t": "lit", "lit": { "kind": "int", "value": 1 } }, { "t": "app", "fn": { "t": "var", "name": "length" }, "args": [ { "t": "var", "name": "rest" } ] } ] } } ] } }, { "kind": "fn", "name": "main", "type": { "k": "fn", "params": [], "param_modes": [], "ret": { "k": "con", "name": "Unit" }, "ret_mode": "own", "effects": [ "IO" ] }, "params": [], "body": { "t": "seq", "lhs": { "t": "seq", "lhs": { "t": "do", "op": "io/print_str", "args": [ { "t": "app", "fn": { "t": "var", "name": "int_to_str" }, "args": [ { "t": "app", "fn": { "t": "var", "name": "length" }, "args": [ { "t": "ctor", "type": "List", "ctor": "Nil", "args": [] } ] } ] } ] }, "rhs": { "t": "do", "op": "io/print_str", "args": [ { "t": "lit", "lit": { "kind": "str", "value": "\n" } } ] } }, "rhs": { "t": "seq", "lhs": { "t": "do", "op": "io/print_str", "args": [ { "t": "app", "fn": { "t": "var", "name": "int_to_str" }, "args": [ { "t": "app", "fn": { "t": "var", "name": "length" }, "args": [ { "t": "ctor", "type": "List", "ctor": "Cons", "args": [ { "t": "lit", "lit": { "kind": "int", "value": 7 } }, { "t": "ctor", "type": "List", "ctor": "Cons", "args": [ { "t": "lit", "lit": { "kind": "int", "value": 8 } }, { "t": "ctor", "type": "List", "ctor": "Cons", "args": [ { "t": "lit", "lit": { "kind": "int", "value": 9 } }, { "t": "ctor", "type": "List", "ctor": "Nil", "args": [] } ] } ] } ] } ] } ] } ] }, "rhs": { "t": "do", "op": "io/print_str", "args": [ { "t": "lit", "lit": { "kind": "str", "value": "\n" } } ] } } } } ] }