שים לב להופעת המשתנה המזהה את הלולאה מיד לאחר ה-let.
תכנית זו שקולה לתכנית הכתובה עם letrec. ניתן להתייחס ל-'named let' כאל macro (ראה פירוט נוסף
בפרק 8) המרחיב את צורת ה-letrec.
6.3 איטרציות
הפונקציה countdown המוגדרת לעיל הינה פרוצדורה רקורסיבית אמיתית.
Scheme יכולה להגדיר לולאות רק בעזרת רקורסיות. אין דרך מיוחדת ליצירת לולאות או בניית איטרציות.
אעפ"כ, הלולאה המוגדרת לעיל היא לולאה אמיתית, בדיוק באותו אופן בו שפות אחרות מודיעות על הלולאות שלהן.
כלומר, Scheme לוקחת על עצמה אחריות להבטיח שרקורסיות מהסוג הנראה לעיל לא ייצרו לפרוצדורה תקורת
קריאות/ החזרות.
Scheme עושה זאת בעזרת תהליך הנקרא 'tail-call elimination' .אם תתבונן היטב בפרוצדורת countdown, תבחין
כי כאשר מתבצעת קריאה רקורסיבית בגוף הפרוצדורה, זוהי קריאת זנב או במילים אחרות - זהו הדבר האחרון
שנעשה. כל קריאה של countdown - או שהקריאה אינה לפרוצדורה עצמה, או שזו הפעולה האחרונה ממש שנעשית.
עבור מימוש Scheme , הדבר יוצר רקורסיה שאינה נבדלת מאיטרציה. אז המשך להשתמש ברקורסיה לכתוב לולאות! אל
תדאג- הדבר בטוח!
להלן דוגמא נוספת המציגה פרוצדורת רקורסית זנב שימושית: