שאלת מבחן בשפות תכנות - האוניברסיטה הפתוחה 2023 - מערכות טיפוסים
להלן נתונה תוכנית בשפת "ויקיש" (INFERRED):
א. (15 נקודות)
הקצו לביטוי הנתון בשאלה ולתתי הביטויים שלו משתני-טיפוס (Type Variables) מתאימים, וחברו משוואות מתאימות לביטוי הנתון ולתתי הביטויים שלו.
ב. (15 נקודות)
פתרו את המשוואות שהרכבתם בסעיף א' תוך שימוש ב-substitution ו-unification בדומה למתואר בספר בעמודים 252-258. בסיום פתרון המשוואות רשמו מהו הטיפוס שאותו הקשתם עבור התוכנית הנתונה.
let p=proc(x: ?) -(x,5) in (p -((p 5),5))ברצוננו לקבוע מהו טיפוס התוכנית (אם קיים). לשם כך, עליכם להשתמש באלגוריתם שנלמד בפרק 7 להקשת הטיפוס.
א. (15 נקודות)
הקצו לביטוי הנתון בשאלה ולתתי הביטויים שלו משתני-טיפוס (Type Variables) מתאימים, וחברו משוואות מתאימות לביטוי הנתון ולתתי הביטויים שלו.
ב. (15 נקודות)
פתרו את המשוואות שהרכבתם בסעיף א' תוך שימוש ב-substitution ו-unification בדומה למתואר בספר בעמודים 252-258. בסיום פתרון המשוואות רשמו מהו הטיפוס שאותו הקשתם עבור התוכנית הנתונה.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד ב2023סמסטר ב
★★★★★
מערכות טיפוסיםהסקת טיפוסים
הקצו משתנה-טיפוס לכל תת-ביטוי:
t_p לפרוצדורה, t_x לפרמטר x, ו-t_body לגוף. בנו משוואות מהגדרת proc, מביטוי החיסור, ומיישום הפרוצדורה, ואז פתרו בעזרת unification.פתרון — הסקת טיפוסים לתוכנית INFERRED
סעיף א — הקצאת משתני-טיפוס ובניית משוואות
נסמן:
1. מגדרת
מהמשוואה (2): , .
מהמשוואה (4): , .
מהמשוואה (1): .
נאחד עם משוואה (3): נאחד עם משוואה (5): , כלומר ממשוואה (6): .
טיפוס התוכנית: `int`
סעיף א — הקצאת משתני-טיפוס ובניית משוואות
נסמן:
- — טיפוס התוכנית כולה (הביטוי
let ... in ...) - — טיפוס המשתנה
p(ופרוצדורתproc(x: ?) -(x,5)) - — טיפוס הפרמטר
x - — טיפוס הביטוי
-(x,5)(גוף הפרוצדורה) - — טיפוס הביטוי
(p 5)(היישום הפנימי) - — טיפוס הביטוי
(p 5)-5)כלומר-((p 5),5) - — טיפוס הביטוי
(p -((p 5),5))(היישום החיצוני = גוף ה-in)
1. מגדרת
proc(x: ?) -(x,5): הביטוי הוא פרוצדורה מ- ל-:2. מביטוי החיסור -(x,5): חיסור דורש ארגומנטים מסוג int ומחזיר int:3. מיישום (p 5): p מופעלת על 5 (מסוג int), טיפוס התוצאה הוא :4. מביטוי -((p 5),5): חיסור דורש int:5. מיישום (p -((p 5),5)): p מופעלת על ביטוי מסוג , התוצאה מסוג :6. טיפוס ה-let שווה לטיפוס הגוף:סעיף ב — פתרון המשוואות בעזרת Substitution ו-Unificationמהמשוואה (2): , .
מהמשוואה (4): , .
מהמשוואה (1): .
נאחד עם משוואה (3): נאחד עם משוואה (5): , כלומר ממשוואה (6): .
טיפוס התוכנית: `int`