שאלת מבחן בשפות תכנות - האוניברסיטה הפתוחה 2023 - מערכות טיפוסים
להלן נתונה תוכנית בשפת "ויקיש" (INFERRED):
ברצוננו לקבוע מהו טיפוס התוכנית (אם קיים). לשם כך, עליכם להשתמש באלגוריתם שנלמד בפרק 7 להקשת הטיפוס.
א. (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. מביטוי החיסור
3. מיישום
4. מביטוי
5. מיישום
6. טיפוס ה-
סעיף ב — פתרון המשוואות בעזרת Substitution ו-Unification
מהמשוואה (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`