Index: doc/theses/rob_schluntz/examples/variadic/new.c
===================================================================
--- doc/theses/rob_schluntz/examples/variadic/new.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
+++ doc/theses/rob_schluntz/examples/variadic/new.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
@@ -0,0 +1,13 @@
+forall(dtype T | sized(T)) T * malloc(void);
+
+forall(dtype T, ttype Params | sized(T) | { void ?{}(T *, Params); })
+T * new(Params p) {
+  return ((T*)malloc()){ p }; // construct result of malloc
+}
+
+struct S { int x, y; }; 
+void ?{}(S *, int, int);
+
+int main() {
+  S * s = new(3, 4);
+}
Index: doc/theses/rob_schluntz/examples/variadic/print.c
===================================================================
--- doc/theses/rob_schluntz/examples/variadic/print.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
+++ doc/theses/rob_schluntz/examples/variadic/print.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
@@ -0,0 +1,11 @@
+forall(otype T, ttype Params |
+  { void print(T); void print(Params); })
+void print(T arg, Params rest) {
+  print(arg);
+  print(rest);
+}
+void print(const char * x) { printf("%s", x); }
+void print(int x) { printf("%d", x);  }
+int main() {
+  print("x = ", 123, ".");
+}
Index: doc/theses/rob_schluntz/examples/variadic/sum1.c
===================================================================
--- doc/theses/rob_schluntz/examples/variadic/sum1.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
+++ doc/theses/rob_schluntz/examples/variadic/sum1.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
@@ -0,0 +1,8 @@
+int sum(void){ return 0; }        // (0)
+forall(ttype Params | { int sum(Params); })
+int sum(int x, Params rest) { // (1)
+  return x+sum(rest);
+}
+int main() {
+  printf("%d\n", sum(10, 20, 30, 40, 50, 60));
+}
Index: doc/theses/rob_schluntz/examples/variadic/sum2.c
===================================================================
--- doc/theses/rob_schluntz/examples/variadic/sum2.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
+++ doc/theses/rob_schluntz/examples/variadic/sum2.c	(revision 728df66bde6df9b1ca4ad068be30ea89605f46a3)
@@ -0,0 +1,10 @@
+int sum(int x, int y){
+  return x+y;
+}
+forall(ttype Params | { int sum(int, Params); })
+int sum(int x, int y, Params rest) {
+  return sum(x+y, rest);
+}
+int main() {
+  printf("%d\n", sum(10, 20, 30, 40, 50, 60));
+}
