cs2 : CodeSegment ds1 ds1 cs2 = cs id cs1 : CodeSegment ds1 ds1 cs1 = cs (\d -> goto cs2 d) cs0 : CodeSegment ds0 ds1 cs0 = cs (\d -> goto cs1 (record {c = (ds0.a d) + (ds0.b d)})) main : ds1 main = goto cs0 (record {a = 100 ; b = 50})