diff options
author | Till Höppner | 2016-02-23 17:00:53 +0100 |
---|---|---|
committer | Till Höppner | 2016-02-24 18:21:24 +0100 |
commit | e866dceae987acd51d43bd457351bd2188c5f95a (patch) | |
tree | 2cc5a67492bdf00ff68041656a1e870b2b4de17f /src/lambda.rs | |
parent | 815f31f5cef61709c50087c9f7601ea330929bb7 (diff) | |
download | ilc-e866dceae987acd51d43bd457351bd2188c5f95a.tar.gz ilc-e866dceae987acd51d43bd457351bd2188c5f95a.tar.xz ilc-e866dceae987acd51d43bd457351bd2188c5f95a.zip |
Test CI
Diffstat (limited to 'src/lambda.rs')
-rw-r--r-- | src/lambda.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lambda.rs b/src/lambda.rs new file mode 100644 index 0000000..cf7b1ec --- /dev/null +++ b/src/lambda.rs @@ -0,0 +1,18 @@ +// I'm only a little sorry for this. + +// Inline definition of anonymous functions. Examples: +// l!(42;) +// l!(i32 := 42) +// l!(i: i32 := i + 42) +// l!(i: i32, j: i32 -> i32 := i + j) +#[macro_export] +macro_rules! l { + ($body: expr) => ({ fn f() { $body } f }); + ($res: ty := $body: expr) => ({ fn f() -> $res { $body } f }); + ($($n: ident: $t: ty),+ := $body: expr) => ({ + fn f($($n: $t),+) { $body } f + }); + ($($n: ident: $t: ty),+ -> $res: ty := $body: expr) => ({ + fn f($($n: $t),+) -> $res { $body } f + }) +} |