تطبيق الوظيفة

في الرياضيات ، يُعرف تطبيق الدالة (أو تقييمها ) بأنه عملية أخذ دالة ومدخل من مجالها للحصول على القيمة المقابلة من مداها . وبهذا المعنى، يمكن اعتبار تطبيق الدالة نقيضًا لتجريد الدالة . [ 1 ]

يُعدّ هذا المفهوم أساسيًا في لغات البرمجة المشتقة من حساب لامدا ، مثل LISP و Scheme ، وكذلك في اللغات الوظيفية . وله دورٌ في دراسة الدلالات التفسيرية لبرامج الحاسوب، لأنه دالة متصلة على الترتيبات الجزئية الكاملة . كما أن تطبيق الدوال دالة متصلة في نظرية التماثل ، بل إنه يُشكّل أساس النظرية بأكملها: فهو يسمح برؤية تشويه التماثل كمسار متصل في فضاء الدوال. وبالمثل، يمكن اعتبار الطفرات (إعادة هيكلة) الصحيحة لبرامج الحاسوب بمثابة تلك "المتصلة" في طوبولوجيا سكوت .

التمثيل

يُصوَّر تطبيق الدالة عادةً بوضع المتغير الذي يُمثل الدالة بجانب وسيطها بين قوسين . على سبيل المثال، يُمثل التعبير التالي تطبيق الدالة ƒ على وسيطها x .

و(x){\displaystyle f(x)}

في بعض الحالات، يُستخدم ترميز مختلف حيث لا تكون الأقواس مطلوبة، ويمكن التعبير عن تطبيق الدالة بمجرد وضعها جنبًا إلى جنب . على سبيل المثال، يمكن اعتبار التعبير التالي مماثلاً للتعبير السابق:

وx{\displaystyle f\;x}

تُعدّ الصيغة الأخيرة مفيدة بشكل خاص عند دمجها مع تماثل التقسيم الجزئي . بالنظر إلى دالةو:(X×Y)Z{\displaystyle f:(X\times Y)\to Z}، ويتم تمثيل تطبيقها على النحو التاليو(x،y){\displaystyle f(x,y)}بالصيغة السابقة وو(x،y){\displaystyle f\;(x,y)}(أووx،y{\displaystyle f\;\langle x,y\rangle }مع الحجةx،yX×Y{\displaystyle \langle x,y\rangle \in X\times Y}مكتوبة باستخدام الأقواس الزاوية الأقل شيوعًا) بواسطة الأخير. ومع ذلك، فإن الدوال في شكلها المُقَيَّدو:X(YZ){\displaystyle f:X\to (Y\to Z)}يمكن تمثيل ذلك من خلال مقارنة حججهم:وxy{\displaystyle f\;x\;y}بدلاً منو(x)(y){\displaystyle f(x)(y)}يعتمد هذا على أن يكون تطبيق الدالة ترابطيًا من اليسار .

عندما يتم تمثيل الترميز الرياضي في مستند رقمي، يمكن استخدام أحرف Unicode غير المرئية ذات العرض الصفري U+2061 FUNCTION APPLICATION و U+2062 INVISIBLE TIMES للتمييز بين معنى التسلسل الذي يعني تطبيق الدالة ومعنى التسلسل الذي يعني الضرب.

بصفتك مشغلًا

يمكن تعريف تطبيق الدالة كعامل تشغيل يسمى تطبيق أودولار{\displaystyle \$}، وفقًا للتعريف التالي:

ودولارx=و(x){\displaystyle f\mathop {\,\$\,} x=f(x)}

يمكن أيضًا الإشارة إلى المعامل بعلامة اقتباس معكوسة (`).

إذا كان من المفهوم أن عامل التشغيل ذو أولوية منخفضة وتجميع من اليمين ، فيمكن استخدام عامل التطبيق لتقليل عدد الأقواس المطلوبة في التعبير. على سبيل المثال؛

و(ز(ح(ج(x)))){\displaystyle f(g(h(j(x))))}

يمكن إعادة كتابتها على النحو التالي:

ودولارزدولارحدولارجدولارx{\displaystyle f\mathop {\,\$\,} g\mathop {\,\$\,} h\mathop {\,\$\,} j\mathop {\,\$\,} x}

ويمكن التعبير عن ذلك بشكل مكافئ باستخدام تركيب الدوال كما يلي:

(وزحج)(x){\displaystyle (f\circ g\circ h\circ j)(x)}

أو حتى:

(وزحجx)(){\displaystyle (f\circ g\circ h\circ j\circ x)()}

إذا أخذنا في الاعتبارx{\displaystyle x}أن تكون دالة ثابتة تُرجعx{\displaystyle x}.

نظرية المجموعات

في نظرية المجموعات البديهية ، وخاصة نظرية زيرميلو-فرانكل للمجموعات ، الدالةو:دR{\displaystyle f:D\mapsto R}غالباً ما يُعرَّف بأنه علاقة (ود×R{\displaystyle f\subseteq D\times R}) التي تتمتع بالخاصية التي، لأيxد{\displaystyle x\in D}هناك شيء فريدyR{\displaystyle y\in R}بحيث(x،y)و{\displaystyle (x,y)\in f}.

لا يكتفي المرء عادةً بكتابة "(x،y)و{\displaystyle (x,y)\in f}"لتحديد ذلك"y{\displaystyle y}وعادةً ما يرغب في استخدام صيغة الدالة الأكثر شيوعًا "و(x)=y{\displaystyle f(x)=y}" . تطبيق الدالة، أو بشكل أكثر تحديدًا، الترميز "و(x){\displaystyle f(x)}لا يوجد الرمز "" في التوقيع المعتاد لنظرية المجموعات، ولكن يمكن إضافته إلى النظرية كرمز دالة ثنائية(){\displaystyle \bullet (\bullet )}إذا رغبت في ذلك دون أي فقدان للتعبيرية عن طريق تحديد: [ 2 ]

X(Y)={zلو X هي دالة، و (Y،z)Xخلاف ذلك{\displaystyle X(Y)=\left\{{\begin{array}{lll}z&{\text{إذا كانت }}X{\text{ دالة، و }}(Y,z)\in X\\\varnothing &{\text{فيما عدا ذلك}}\\\end{array}}\right.}

أو بصورة أكثر رسمية: [ 3 ] [ 4 ]

X(Y)=z(د،R(XRد((Y،z)X)))(د،R(XRد(Y،z)X)z=)،{\displaystyle X(Y)=z\iff (\exists D,R(X\in R^{D}\land ((Y,z)\in X)))\lor (\forall D,R(X\notin R^{D}\lor (Y,z)\notin X)\land z=\varnothing ),}

أينRد{\displaystyle R^{D}}يشير إلى مجموعة الأسية : مجموعة جميع الدوال مند{\displaystyle D}لR{\displaystyle R}.

في النثر:X(Y)=z{\displaystyle X(Y)=z}إذا كان هناك مجالد{\displaystyle D}والمدىR{\displaystyle R}بحيثX{\displaystyle X}هي دالة مند{\displaystyle D}لR{\displaystyle R}و(Y،z)X{\displaystyle (Y,z)\in X}أو (نفي السابق) وz=.{\displaystyle z=\varnothing .}اختيار استخدام المجموعة الفارغة{\displaystyle \varnothing }متىX(Y){\displaystyle X(Y)}إن عدم التعريف هو أمر اعتباطي لضمان أن تكون الرموز محددة لمجال الخطاب بأكمله . [ 5 ]

لوΨ(X،Y،z){\displaystyle \Psi (X,Y,z)}يشير إلى الصيغة الموجودة على الجانب الأيمن من العبارة الشرطية الثنائية أعلاه، لأي مجموعتين،X،Y{\displaystyle X,Y}الصيغةΨ{\displaystyle \Psi }يربط كائنًا فريدًاz{\displaystyle z}:X،Y!zΨ(X،Y،z){\displaystyle \forall X,Y\,\exists !z\,\Psi (X,Y,z)}لذلك، يمكن للغة نظرية المجموعات أن تستخدم امتدادًا بحكم تعريفها لتشمل عملية تطبيق الدالة.(){\displaystyle \bullet (\bullet )}بشكل متحفظ .

برمجة

في برمجة الحاسوب، يشير تطبيق الوظيفة غالبًا إلى استدعاء أو تنفيذ إجراء، بدلاً من وظيفة رياضية حقيقية (انظر الوظائف في برمجة الحاسوب )، مع قواعد مماثلة لسلوكها.

يتوافق تطبيق الدالة مع تقليل بيتا في حساب التفاضل والتكامل لامدا .

تطبيق الدالة

فيما يتعلق بمعامل التطبيق، تُطبّق الدالة `apply` دالةً على قائمة متغيرة من الوسائط. يُعدّ كلٌّ من `eval` و`apply` عنصرين مترابطين في دورة `eval-apply` في لغة ليسب، والموصوفة في كتاب SICP . [ 6 ] يدعم هذا الأسلوب اللغات التي تحتوي على دوال ذات عدد متغير من الوسائط، لأنه الطريقة الوحيدة لاستدعاء دالة بعدد غير محدد من الوسائط (أثناء الترجمة).

لغة Common Lisp ولغة Scheme

في لغة Common Lisp، الدالة apply هي دالة تُطبق دالة أخرى على قائمة من الوسائط (لاحظ هنا أن "+" هي دالة متغيرة الوسائط تأخذ أي عدد من الوسائط):

( تطبيق #' + ( القائمة 1 2 ))

وبالمثل في المخطط:

( تطبيق + ( القائمة 1 2 ))

لغة سي++

في لغة C++ ، يتم استخدام Bind [ 7 ] إما عبر مساحة الاسم std أو عبر مساحة الاسم boost.

لغة سي شارب ولغة جافا

في لغتي C# و Java ، تُجمع الوسائط المتغيرة ببساطة في مصفوفة. يمكن للمستدعي تمرير مصفوفة صراحةً بدلاً من الوسائط المتغيرة. هذا ممكن فقط مع الوسائط المتغيرة. لا يمكن تطبيق مصفوفة من الوسائط على وسيط غير متغير دون استخدام الانعكاس . تنشأ حالة غامضة إذا أراد المستدعي تمرير مصفوفة نفسها كأحد الوسائط بدلاً من استخدامها كقائمة وسائط . في هذه الحالة، يجب على المستدعي تحويل نوع المصفوفة Objectلمنع المُصرّف من استخدام تفسير دالة `apply` .

دالة متغيرة ( مصفوفة من الوسائط 

مع الإصدار الثامن، تم تقديم تعابير لامدا. تُنفذ الدوال ككائنات ذات واجهة وظيفية، وهي واجهة تحتوي على طريقة واحدة غير ثابتة فقط. الواجهة القياسية

الدالة < T , R >

يتكون من الطريقة (بالإضافة إلى بعض الدوال المساعدة الثابتة):

R تطبيق ( T فقرة )

يذهب

في لغة Go ، تُجمع الوسائط المتغيرة النوعية في شريحة. يمكن للمستدعي تمرير شريحة صراحةً بدلاً من الوسائط المتغيرة النوعية، وذلك بإضافة `a` ...إلى وسيط الشريحة. هذا ممكن فقط مع الوسائط المتغيرة النوعية. لا يمكن للمستدعي تطبيق مصفوفة من الوسائط على الوسائط غير المتغيرة النوعية إلا باستخدام الانعكاس.

s := [] سلسلة { "foo" , "bar" } variadicFunc ( s ... )

جافا سكريبت

في لغة جافا سكريبت ، تحتوي كائنات الدوال على applyطريقة، والوسيط الأول هو قيمة الكلمة thisالمفتاحية داخل الدالة؛ أما الوسيط الثاني فهو قائمة الوسائط:

func.apply ( null , args ) ;

يضيف ES6 عامل النشر func(...args)[ 8 ] الذي يمكن استخدامه بدلاً من apply.

لغة لوا

في لغة Lua ، يمكن كتابة دالة apply بهذه الطريقة:

دالة تطبيق ( f ,...) تُرجع f (...) نهاية

بيرل

في لغة بيرل ، يتم "تسطيح" المصفوفات والجداول التجزئية والتعبيرات تلقائيًا في قائمة واحدة عند تقييمها في سياق قائمة، كما هو الحال في قائمة وسائط دالة.

# استدعاءات الروتين الفرعي المكافئة: @args = ( @some_args , @more_args ); func ( @args );func ( @some_args , @more_args );

PHP

في لغة PHP ، applyيُطلق عليه اسم call_user_func_array:

call_user_func_array ( 'func_name' , $args );

بايثون وروبي

في لغتي بايثون وروبي ، يتم استخدام نفس رمز النجمة المستخدم في تعريف الدوال ذات عدد متغير من الوسائط لاستدعاء دالة على تسلسل ومصفوفة على التوالي:

دالة ( * args )

كانت لغة بايثون تحتوي في الأصل على دالة apply، ولكن تم إهمالها لصالح علامة النجمة في الإصدار 2.3 وتمت إزالتها في الإصدار 3.0. [ 9 ]

R

في لغة R ، do.callيقوم بإنشاء وتنفيذ استدعاء دالة من اسم أو دالة وقائمة من الوسائط المراد تمريرها إليها:

f ( x1 , x2 ) # يمكن أيضًا تنفيذها عبر do.call ( what = f , args = list ( x1 , x2 ))

أحاديث قصيرة

في لغة سمول توك ، تحتوي كائنات الكتلة (الدالة) على valueWithArguments:طريقة تأخذ مصفوفة من الوسائط:

قيمة الكتلة مع الوسائط : args

تي سي إل

منذ إصدار Tcl 8.5، [ 10 ] يمكن تطبيق دالة على الوسائط باستخدام applyالأمر

تطبيق الدالة ؟ الوسيط 1 الوسيط 2 ... ؟

حيث تكون الدالة عبارة عن قائمة من عنصرين {args body} أو قائمة من ثلاثة عناصر {args body namespace}.

الملكية العالمية

لنفترض دالةز:(X×Y)Z{\displaystyle g:(X\times Y)\to Z}، إنه،ز[(X×Y)Z]{\displaystyle g\in [(X\times Y)\to Z]}حيث تدوين الأقواس[أب]{\displaystyle [A\to B]}يرمز إلى فضاء الدوال من A إلى B. وبواسطة عملية التقييم الجزئي ، توجد دالة وحيدةكاري(ز):X[YZ]{\displaystyle {\mbox{curry}}(g):X\to [Y\to Z]}ثم يوفر تطبيق التشكل الشامل

يتقدم:([YZ]×Y)Z{\displaystyle {\mbox{Apply}}:([Y\to Z]\times Y)\to Z}،

لهذا السبب.

يتقدم(و،y)=و(y){\displaystyle {\mbox{Apply}}(f,y)=f(y)}

أو، بصورة مكافئة، يكون لدينا مخطط التنقل

يتقدم(كاري(ز)×بطاقة تعريفY)=ز{\displaystyle {\mbox{Apply}}\circ \left({\mbox{curry}}(g)\times {\mbox{id}}_{Y}\right)=g}

وبشكل أدق، فإن curry و apply هما دالتان مترافقتان .

الترميز[أب]{\displaystyle [A\to B]}يُعدّ مفهوم فضاء الدوال من A إلى B أكثر شيوعًا في علوم الحاسوب. أما في نظرية الفئات ،[أب]{\displaystyle [A\to B]}يُعرف باسم الكائن الأسي ، ويُكتب على النحو التالي:بأ{\displaystyle B^{A}}. هناك اختلافات أخرى شائعة في التدوين أيضًا؛ على سبيل المثال، غالبًا ما يطلق على Apply اسم Eval ، [ 11 ] على الرغم من أنه في علوم الكمبيوتر، فإنهما ليسا نفس الشيء، حيث يتم تمييز eval عن Apply ، باعتباره تقييم شكل السلسلة المقتبسة لدالة مع وسائطها، بدلاً من تطبيق دالة على بعض الوسائط.

أيضًا، في نظرية الفئات، يُشار إلى الكاري عادةً بـλ{\displaystyle \lambda }، لهذا السببλز{\displaystyle \lambda g}يُكتب هذا الرمز للدلالة على الكاري ( g ). ويتعارض هذا الترميز مع استخدامλ{\displaystyle \lambda }في حساب التفاضل والتكامل اللامدا ، حيث يُستخدم الرمز لامدا للدلالة على المتغيرات المقيدة. مع مراعاة جميع هذه التغييرات في الرموز، يتم التعبير عن خاصية الترافق بين الدالتين Apply و curry في مخطط التبادل.

خاصية عامة للكائن الأسي
خاصية عامة للكائن الأسي

تُقدّم المقالات المتعلقة بالكائن الأسي والفئة المغلقة الديكارتية نقاشًا أكثر دقةً للصياغة النظرية للفئات لهذه الفكرة. لذا، فإن استخدام لامدا هنا ليس من قبيل الصدفة؛ فاللغة الداخلية للفئات المغلقة الديكارتية هي ببساطة حساب لامدا المُنمذج . أكثر الأطر العامة الممكنة لتطبيق الدالة Apply هي الفئات المونيدية المغلقة ، والتي تُعدّ الفئات المغلقة الديكارتية مثالًا عليها. في الجبر الهومولوجي ، يُعرف الترافق بين دالتي curry و apply باسم اقتران الموتر الهومولوجي .

الخصائص الطوبولوجية

في نظرية الترتيب ، ضمن فئة الترتيبات الجزئية الكاملة المزودة بطوبولوجيا سكوت ، تُعتبر كل من دالتي curry و apply دالتين متصلتين (أي أنهما متصلتان وفقًا لنظرية سكوت ). [ 12 ] تُسهم هذه الخاصية في ترسيخ صحة الأساس العلمي لدراسة الدلالات الدلالية لبرامج الحاسوب.

في الهندسة الجبرية ونظرية التماثل ، تُعتبر كل من دالتي curry و apply دالتين متصلتين عندما يكون الفضاءYX{\displaystyle Y^{X}}من الدوال المتصلة منX{\displaystyle X}لY{\displaystyle Y}تُعطى بنية مفتوحة مضغوطة ، وX{\displaystyle X}هي دالة هاوسدورف متراصة محلياً . هذه النتيجة مهمة للغاية، لأنها تدعم نظرية التماثل، مما يسمح بفهم التشوهات المتماثلة على أنها مسارات متصلة في فضاء الدوال.

حالات أخرى

تربط معادلة كاري -هوارد تطبيق الدالة بالقاعدة المنطقية للقياس المنطقي .

انظر أيضاً

مراجع

  1. ألاما، جيسي؛ كوربماشر، يوهانس (2023)، "حساب لامدا" ، في زالتا، إدوارد ن.؛ نودلمان، أوري (محرران)، موسوعة ستانفورد للفلسفة (طبعة شتاء 2023  )، مختبر أبحاث الميتافيزيقا، جامعة ستانفورد ، تاريخ الاسترجاع 29 فبراير 2024
  2. مندلسون، إليوت (2015). مقدمة في المنطق الرياضي ( الطبعة السادسة). مطبعة سي آر سي . الصفحات 102-103 ، 231، 235، 245-246 . ISBN   978-1-4822-3778-8.
  3. سوبس، باتريك (1972). نظرية المجموعات البديهية . أرشيف الإنترنت. نيويورك، منشورات دوفر. ص 87. ISBN  978-0-486-61630-8.
  4. ^ ليفي ، عزرئيل (1979). نظرية المجموعة الأساسية . برلين؛ نيويورك: سبرينغر-فيرلاغ. ص. 27. رقم ISBN  978-0-387-08417-6.
  5. ^ ليفي ، عزرئيل (1979). نظرية المجموعة الأساسية . برلين؛ نيويورك: سبرينغر-فيرلاغ. ص. 15. رقم ISBN  978-0-387-08417-6.
  6. هارولد أبيلسون، جيرالد جاي سوسمان، جولي سوسمان، بنية وتفسير برامج الحاسوب ، (1996) مطبعة معهد ماساتشوستس للتكنولوجيا، رقم ISBN 0-262-01153-0انظر القسم 4.1 ، مُقيِّم الدوائر الميتا
  7. "Boost: Bind.HPP documentation - 1.49.0" .
  8. "بنية الانتشار - جافا سكريبت | MDN" . تم الاسترجاع في 20 أبريل 2017 .
  9. "الوظائف المدمجة غير الأساسية" . مرجع مكتبة بايثون . 8 فبراير 2005. تم الاطلاع عليه في 19 مايو 2013 .
  10. "تطبيق" . وثائق Tcl . 2006. تم الاطلاع عليه بتاريخ 23 يونيو 2014 .
  11. ساوندرز ماك لين ، نظرية الفئات
  12. ^ HP Barendregt، حساب التفاضل والتكامل لامدا ، (1984) شمال هولندا ISBN 0-444-87508-5