aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/external/metalang99/examples/rectangle.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/external/metalang99/examples/rectangle.c')
-rw-r--r--test/external/metalang99/examples/rectangle.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/external/metalang99/examples/rectangle.c b/test/external/metalang99/examples/rectangle.c
new file mode 100644
index 0000000..1ab2bbf
--- /dev/null
+++ b/test/external/metalang99/examples/rectangle.c
@@ -0,0 +1,25 @@
+// Computes the area of a rectangle.
+
+#include <metalang99.h>
+
+#define rect(width, height) ML99_tuple(width, height)
+#define rectWidth ML99_tupleGet(0)
+#define rectHeight ML99_tupleGet(1)
+
+#define rectArea(rect) ML99_mul(rectWidth(rect), rectHeight(rect))
+
+/*
+ * 15
+ * +------------------------------+
+ * | |
+ * | |
+ * | | 7
+ * | |
+ * | |
+ * +------------------------------+
+ */
+#define RECTANGLE rect(v(15), v(7))
+
+ML99_ASSERT_EQ(rectArea(RECTANGLE), v(15 * 7));
+
+int main(void) {}