macro_rules! ifn {
    ($name:expr, fn() -> $ret:expr) => { ... };
    ($name:expr, fn(...) -> $ret:expr) => { ... };
    ($name:expr, fn($($arg:expr),*) -> $ret:expr) => { ... };
}