run ( def fib [n:Int r:!Int] = ( new br:^Bool ( <=![n 1 (rchan br)] | br?b = if b then r!1 else ( new nr1:^Int new nr2:^Int new fib1:^Int new fib2:^Int ( -![n 1 (rchan nr1)] | -![n 2 (rchan nr2)] | nr1?nMinus1 = (new fr1:^Int ( fib![nMinus1 fr1] | fr1?f = fib1!f ) ) | nr2?nMinus2 = (new fr2:^Int ( fib![nMinus2 fr2] | fr2?f = fib2!f ) ) | fib1?fi1 = fib2?fi2 = +![fi1 fi2 (rchan r)] ) ) ) ) fib![8 printi] )