diff --git a/Core.tcl b/Core.tcl
--- a/Core.tcl
+++ b/Core.tcl
@@ -17,6 +17,15 @@
 }
 
 #
+# Loop constructs
+#
+
+# http://wiki.tcl.tk/3603
+proc do {code while cond} {
+    tailcall try $code\n[list $while $cond $code]
+}
+
+#
 # Trivial procs
 #