Racket

Racket (בעברית: ראָקֵט) היא שפת תכנות, שמבוססת על ניב Scheme של Lisp.

שפת Racket נוצרה בתור פלטפורמה לתכנון ומימוש שפות תכנות. בנוסף לשפת הבסיס Racket, המונח Racket מתייחס גם למשפחת שפות התכנות שנוצרו בRacket וסט הכלים שתומך בפיתוח Racket ובפיתוח בעזרת Racket. משתמשים בRacket גם עבור תסרוט (Scripting), לימוד מדעי המחשב ומחקר.

פלטפורמת Racket מספקת מימוש של שפת Racket (כולל מערכת זמן ריצה, ספריות ומהדר JIT) יחד עם סביבת הפיתוח המשולבת DrRacket שנכתבה ב-Racket .Racket משמש, לתוכנית ProgramByDesign, שמטרתה להפוך את מדעי המחשב ל״חלק חיוני מתוכנית הלימודים לאמנויות ליברליות״.

שפת Racket הבסיסית ידועה עבור מערכת המאקרו הנרחבת שלה המאפשרת ליצור שפות מוטמעותו שפות לתחום ספציפי, מבני שפה כמו מחלקות או מודולים, וניבים נפרדים של Racket עם סמנטיקה שונה.

הפצת הפלטפורמה היא תוכנה חופשית וקוד פתוח המופצת תחת הרישיון הציבורי הכללי המוקטן של גנו (LGPL). תוספים וחבילות שנכתבו על ידי הקהילה מועלים לפעמים למערכת ניהול החבילות של Racket.

דוגמאות קוד 
להלן תוכנית שלום עולם טריוויאלית: #lang racket
"Hello, World!"

הרצת תוכנית זו מפיקה את הפלט:
Hello, World!

להלן תוכנית קצת פחות טריוויאלית:

#lang racket
(require 2htdp/image)

(let sierpinski ([n 8])
 (if (zero? n)
 (triangle 2 'solid 'red)
 (let ([t (sierpinski (- n 1))])
 (freeze (above t (beside t t)))))) תוכנית זו, שנלקחה מאתר Racket, מציירת משולש שרפינסקי, מקונן לעומק 8.

בעזרת ההנחיה lang# ניתן לכתוב קוד בניבים שונים של Racket. להלן דוגמה לתוכנית המחשבת עצרת ב-Typed Racket, ניב בעל טיפוסיות סטטית של Racket: #lang typed/racket

(: fact (Integer -> Integer))
(define (fact n)
 (if (zero? n) 1 (* n (fact (- n 1)))))

לקריאה נוספת 
 Felleisen et al., 2013.  Realm of Racket. No Starch Press.
 Felleisen et al., 2003. How to Design Programs. MIT Press.

קישורים חיצוניים

הערות שוליים

שפות תכנות
שפות תכנות פונקציונליות
ניבי Lisp
פיתוח תוכנה