1. ענה נכון/לא נכון על כל אחת מארבע הטענות הבאות:
- לאופרטור -: קדימות גבוהה יותר מלאופרטור ',' (הפסיק).
- לאופרטור החבור + יש קדימות גבוהה יותר מלאופרטור הכפל *.
- האופרטור -: מוגדר פעמיים: פעם כאופרטור prefix ופעם כאופרטור infix.
- האופרטורים ; ו-, (נקודה-פסיק ופסיק) הם אסוציאטיבים לשמאל.
(מידע אודות האופרטורים המוגדרים מראש בגרסת הפרולוג בה אתם משתמשים ניתן למצוא במדריך למשתמש המסופק עם התוכנה).
2. Type של + הוא:
3. אחת מספריות העזר שמספק SWI Prolog מכילה מתארים לזיהוי סוג אופרטור. ההגדרה, מתוך הקובץ explain.pl, היא כדלקמן:
op_type(X, ???) :- atom_chars(X, [f, _]).
op_type(X, ???) :- atom_chars(X, [_, f]).
op_type(X, ???) :- atom_chars(X, [_, f, _]).
atom_chars/2 הוא מתאר שלוקח אטום במתואר הראשון (למשל, prolog) ומחזיר רשימה של תוים ממנו הוא מורכב במתואר השני (בדוגמא זו, [p,r,o,l,o,g]).
כפי ששמתם לב, בכל שורה בהגדרה חסר משהו. מה צריך לכתוב במקום סימני השאלה בכל שורה כדי לקבל הגדרה נכונה?
4. איך צריך לאתחל אתאיך מגדירים את הסימן # להיות אופרטור מסוג infix עם אסוציאטיביות לימין ורמת קדימות זהה לזו של האופרטור +?
5. נניח היינו רוצים להגדיר אופרטורים and, or, implies, ו-not כדי לכתוב בפרולוג בצורה בהירה טענות בלוגיקה, כמו: not (a and b) implies c.
אנו רוצים שפרולוג יבין גם את המבנה הפנימי של הטענות כפי שאנו מתכוונים לו, כלומר שיידע להבחין בין not (a and b) implies c לבין (not a and b) implies c, למשל.
איזה מן הטענות הבאות אינה נכונה?
|