macro_rules! lambda {
($var:ident = $($any:tt)*) => { ... };
({$($any0:tt)*}) => { ... };
({$($any0:tt)*},$($any1:tt)*) => { ... };
([$($any0:tt)*] [$($any1:tt)*] ) => { ... };
(($($any1:tt)*) $($any2:tt)*) => { ... };
( $fun:tt $($var:ident)* , ( $($any1:tt)*) $($any2:tt)* ) => { ... };
($var:ident $($any:tt)*) => { ... };
($fun0:tt $($var0:ident)* , $var:ident $($any:tt)*) => { ... };
({[,$($any0:tt)*]} $var00:ident $($var01:ident)*, $fun1:tt $($var1:ident)* $( , $fun2:tt $($var2:ident)* )* $(; $( $fun3:tt $($var3:ident)*),*)* ) => { ... };
({[$($any0:tt)*], ($($any1:tt)*) $($any2:tt)* } $var00:ident $($var01:ident)* , $fun1:tt $($var1:ident)* $( , $fun2:tt $($var2:ident)* )* $(; $( $fun3:tt $($var3:ident)*),*)* ) => { ... };
({[$($any0:tt)*], $fun1:tt $($var1:ident)* $( , $fun11:tt $($var11:ident)* )* } $var00:ident $($var01:ident)* , $fun2:tt $($var2:ident)* $( , $fun3:tt $($var3:ident)* )* $(; $( $fun4:tt $($var4:ident)*),*)* ) => { ... };
({$($any0:tt)*}$($var0:ident)* , $fun1:tt $($var1:ident)* $( , $fun2:tt $($var2:ident)* )* $(; $( $fun3:tt $($var3:ident)*),*)* ) => { ... };
( $fun1:tt $($var1:ident)* ; $fun2:tt $($var2:ident)* , () $($any:tt)* ) => { ... };
( { $($any0:tt)*} ; {[$($any1:tt)*], ( ) $($any2:tt)* } $($any3:tt)* ) => { ... };
($($any:tt)*) => { ... };
}
Expand description
基础语法 f1, f2, f3 依次运算 将f2作为参数传给f1,将f3传给第一次运算的结果 f1,(f2, f3)先计算 将f3作为参数传给f2,将第一次运算的结果传给 f1 {…}x y z 以空格分隔的标识符是函数的变量 x = … 将运算的最终结果赋值给x { … __ …} __ x y z , f 使用已经定义的常量时,将它作为第一个变量传入 其他的语法都是由lambda宏自己生成的,可以不使用