1 type Token = 2 let f : Unit -> Unit 3 let mut is_discarded = false 4 5 def discard = 6 assert not is_discarded 7 is_discarded = true 8 f () 9 10 object Token = 11 def from (t1 : Token 12 t2 : Token) = Token { t2.discard 13 t1.discard } 14 15 def from (t1 : Token 16 t2 : Token 17 t3 : Token) = Token { t3.discard 18 t2.discard 19 t1.discard } 20 21 def from (t1 : Token 22 t2 : Token 23 t3 : Token 24 t4 : Token) = Token { t4.discard 25 t3.discard 26 t2.discard 27 t1.discard } 28 29 def from (t1 : Token 30 t2 : Token 31 t3 : Token 32 t4 : Token 33 t5 : Token) = Token { t5.discard 34 t4.discard 35 t3.discard 36 t2.discard 37 t1.discard } 38