2010-06-23 23:03:09 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-15 13:19:50 -05:00
|
|
|
// -*- rust -*-
|
2011-06-25 10:45:49 -05:00
|
|
|
fn checktrue(bool rs) -> bool { assert (rs); ret true; }
|
2011-06-15 13:19:50 -05:00
|
|
|
|
|
|
|
fn main() { auto k = checktrue; evenk(42, k); oddk(45, k); }
|
2010-06-23 23:03:09 -05:00
|
|
|
|
2011-06-15 13:19:50 -05:00
|
|
|
fn evenk(int n, fn(bool) -> bool k) -> bool {
|
|
|
|
log "evenk";
|
|
|
|
log n;
|
|
|
|
if (n == 0) { be k(true); } else { be oddk(n - 1, k); }
|
2010-06-23 23:03:09 -05:00
|
|
|
}
|
2011-06-15 13:19:50 -05:00
|
|
|
|
|
|
|
fn oddk(int n, fn(bool) -> bool k) -> bool {
|
|
|
|
log "oddk";
|
|
|
|
log n;
|
|
|
|
if (n == 0) { be k(false); } else { be evenk(n - 1, k); }
|
|
|
|
}
|