aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-134/abigail/README.md1
-rw-r--r--challenge-134/abigail/m4/ch-1.m425
2 files changed, 26 insertions, 0 deletions
diff --git a/challenge-134/abigail/README.md b/challenge-134/abigail/README.md
index b96391bff6..675aa2f6b7 100644
--- a/challenge-134/abigail/README.md
+++ b/challenge-134/abigail/README.md
@@ -7,6 +7,7 @@
* [Befunge-93](befunge-93/ch-1.bf93)
* [C](c/ch-1.c)
* [Lua](lua/ch-1.lua)
+* [m4](m4/ch-1.m4)
* [Node.js](node/ch-1.js)
* [Perl](perl/ch-1.pl)
* [Python](python/ch-1.py)
diff --git a/challenge-134/abigail/m4/ch-1.m4 b/challenge-134/abigail/m4/ch-1.m4
new file mode 100644
index 0000000000..35bb86b814
--- /dev/null
+++ b/challenge-134/abigail/m4/ch-1.m4
@@ -0,0 +1,25 @@
+define(`com')dnl
+com()dnl
+com(`Macros to simulate an array. First macros fetches a value')dnl
+com(`while the second macro sets a value.')dnl
+com()dnl
+define(`tail',`defn(format(``tail[%d]'',`$1'))')dnl
+define(`tail_set',`define(format(``tail[%d]'',`$1'),`1023456$2')')dnl
+com()dnl
+com(`Load the "tail" array with values')dnl
+com()dnl
+tail_set(`5',`789')dnl
+tail_set(`4',`798')dnl
+tail_set(`3',`879')dnl
+tail_set(`2',`897')dnl
+tail_set(`1',`978')dnl
+com()dnl
+com(`Recursive macro to print the results from the given value')dnl
+com(`down to "1". Better call it with a positive integer value')dnl
+com()dnl
+define(`run',`tail($1)
+ifelse($1,1,,`run(eval($1-1))')')dnl
+com()dnl
+com(`We want five values')dnl
+com()dnl
+run(5)dnl