פונקציית קורי

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
Nuvola apps edu mathematics blue-p.svg

בערך זה
נעשה שימוש
בסימנים מוסכמים
מתחום המתמטיקה.
להבהרת הסימנים
ראו סימון מתמטי.

פונקציית Curry היא פונקציה המקבלת פונקציה דו-מקומית f: A \times B \to C ומחזירה פונקציה שמחזירה פונקציה f^{\mathrm{Cu}}: A \to ( B \to C). באופן פורמלי, קל להגדיר את פונקציית קורי באמצעות תחשיב למדא. באופן אינטואיטיבי, פונקציית קורי היא פונקציה שבמקום להכניס מספר קלטים ב"בת-אחת" בפונקציה המקורית, יוצרת ממנה פונקציה שבה מכניסים את הקלטים אחד אחרי השני, כך שבשלבי הביניים לפני הכנסת הקלט האחרון, יש לנו פונקציה עם פחות משתנים.

פונקציית קורי התגלתה לראשונה על ידי המתמטיקאי הרוסי-גרמני מוזס שנפינקל, אך התגלתה בשנית על ידי המתמטיקאי והלוגיקן האמריקאי הסקל קורי, שעל שמו היא נקראת.

הגדרה[עריכת קוד מקור | עריכה]

תהי f: A \times B \to C פונקציהסימון למדא היא תירשם כך:)

f = \lambda a \in A , b \in B . f(a,b) \in C

אזי פונקציית קורי מתאימה ל-f את הפונקציה הבאה

f^\mathrm{Cu} = \lambda a \in A . \lambda b \in B . f(a,b) \in C

שזו פונקציה המקבלת איבר ב-A ומחזירה פונקציה מ-B ל-C, כלומר: לכל a \in A מוחזרת הפונקציה

f^\mathrm{Cu}(a) = [\![ \mbox{ } b \mapsto f(a,b) \mbox{ } ]\!]

קיים גם התהליך ההפוך, שנקרא UnCurry, שלוקח פונקציה g: A \to (B \to C) והופך אותה לפונקציה g^\mathrm{UnCu} : A \times B \to C. תהליכים אלה הופכיים אחד לשני ומהם מסיקים את האיזומורפיזם הבא:

\left( A \times B \to C \right) \cong \left( A \to (B \to C) \right)
\mathrm{Hom}\left( A \times B , C \right) \cong \mathrm{Hom} \left( A ,\mathrm{Hom}(B,C) \right)

דוגמאות[עריכת קוד מקור | עריכה]

דוגמה 1[עריכת קוד מקור | עריכה]

תהי f : \mathbb{R} \times \mathbb{R} \to \mathbb{R}, למשל: f(x,y) = x + y. בסימון למדא נכתוב אותה כך:

f = \lambda x , y . x + y

אזי פונקציית קורי שלה היא

f^\mathrm{Cu} = \lambda x . \lambda y . x + y

לדוגמה:

f(3,4) = 3 + 4 = 7

בעוד ש-

f^\mathrm{Cu}(3) = 3 + y

וזו פונקציה במשתנה y שבו אפשר להציב ערכים, למשל:

f^\mathrm{Cu}(3)(4) = ( \lambda y. 3 + y )(4) = 3 + 4 = 7.

דוגמה 2[עריכת קוד מקור | עריכה]

תהי D הפונקציה הבאה: היא מקבלת פונקציה ממשית f: \mathbb{R} \to \mathbb{R} ומספר ממשי x \in \mathbb{R} ומחזירה את ערך הנגזרת של f בנקודה x, כלומר את f'(x). לכן אפשר לרשום: D(f,x)=f'(x) כאשר D: (\mathbb{R} \to \mathbb{R} ) \times \mathbb{R} \to \mathbb{R}.

נסתכל על פונקציית קורי של D, זו פונקציה המקבלת פונקציה ממשית f: \mathbb{R} \to \mathbb{R} ומחזירה את הפונקציה הנגזרת שלה f': \mathbb{R} \to \mathbb{R} שהיא פונקציה המקבלת מספר ממשי x \in \mathbb{R} ומחזירה את ערך הנגזרת ב-x. כלומר: D^\mathrm{Cu}(f) = [\![ x \mapsto f'(x) ] \! ] כאשר D^\mathrm{Cu} : ( \mathbb{R} \to \mathbb{R} ) \to ( \mathbb{R} \to \mathbb{R} ).

בפועל, כאשר רוצים לטפל בפונקציה D למעשה מטפלים בפונקציה D^\mathrm{Cu}: קודם מחשבים את הפונקציה הנגזרת ואז מציבים בה את הנקודה הרצויה.

לקריאה נוספת[עריכת קוד מקור | עריכה]