(setglobal Functors! (let (O = (function X is_a_functor always_inline (let (cow = (function x[int] : int (apply (field_imm 0 X) x)) sheep = (function x[int] : int (+ 1 (apply cow x)))) (makeblock 0 cow sheep))) F = (function X Y is_a_functor always_inline (let (cow = (function x[int] : int (apply (field_imm 0 Y) (apply (field_imm 0 X) x))) sheep = (function x[int] : int (+ 1 (apply cow x)))) (makeblock 0 cow sheep))) F1 = (function X Y is_a_functor always_inline (let (cow = (function x[int] : int (apply (field_imm 0 Y) (apply (field_imm 0 X) x))) sheep = (function x[int] : int (+ 1 (apply cow x)))) (makeblock 0 sheep))) F2 = (function X Y is_a_functor always_inline (let (X =a (makeblock 0 (field_mut 1 X)) Y =a (makeblock 0 (field_mut 1 Y)) cow = (function x[int] : int (apply (field_imm 0 Y) (apply (field_imm 0 X) x))) sheep = (function x[int] : int (+ 1 (apply cow x)))) (makeblock 0 sheep))) M = (let (F = (function X Y is_a_functor always_inline (let (cow = (function x[int] : int (apply (field_imm 0 Y) (apply (field_imm 0 X) x))) sheep = (function x[int] : int (+ 1 (apply cow x)))) (makeblock 0 cow sheep)))) (makeblock 0 (function funarg funarg is_a_functor stub (let (let = (apply F (makeblock 0 (field_mut 1 funarg)) (makeblock 0 (field_mut 1 funarg)))) (makeblock 0 (field_mut 1 let))))))) (makeblock 0 O F F1 F2 M)))