{ "schema": "ailang/v0", "name": "fn_with_do_seq", "imports": [], "defs": [ { "kind": "fn", "name": "main", "doc": "Print two Ints in sequence. Exercises TermDo, TermSeq, and the IO effect on a fn type. The trailing unit return is implicit in the last Do (op returns Unit).", "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": "lit", "lit": { "kind": "int", "value": 1 } } ] } ] }, "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": "lit", "lit": { "kind": "int", "value": 2 } } ] } ] }, "rhs": { "t": "do", "op": "io/print_str", "args": [ { "t": "lit", "lit": { "kind": "str", "value": "\n" } } ] } } } } ] }