https://github.com/akkartik/mu1/blob/master/continuation4.mu
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11 
12 
13 
14 
15 
16 def main [
17   local-scope
18   l:&:list:num <- copy null
19   l <- push 3, l
20   l <- push 2, l
21   l <- push 1, l
22   k:continuation, x:num, done?:bool <- call-with-continuation-mark 100/mark, create-yielder, l
23   {
24     break-if done?
25     $print x 10/newline
26     k, x:num, done?:bool <- call k
27     loop
28   }
29 ]
30 
31 def create-yielder l:&:list:num -> n:num, done?:bool [
32   local-scope
33   load-inputs
34   {
35     done? <- equal l, null
36     break-if done?
37     n <- first l
38     l <- rest l
39     return-continuation-until-mark 100/mark, n, done?
40     loop
41   }
42   
43   
44   
45   return-continuation-until-mark 100/mark, -1, done?
46   assert false, [called too many times, ran out of continuations to return]
47 ]