Racket

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

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

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

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

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

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

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

להלן תוכנית קצת פחות טריוויאלית:
ממוזער| התוצאה של תוכנית זו, כפי שמוצג ב- DrRacket
#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
קטגוריה:פיתוח תוכנה