تطبيق الوظيفة
في الرياضيات ، يُعرف تطبيق الدالة (أو تقييمها ) بأنه عملية أخذ دالة ومدخل من مجالها للحصول على القيمة المقابلة من مداها . وبهذا المعنى، يمكن اعتبار تطبيق الدالة نقيضًا لتجريد الدالة . [ 1 ]
يُعدّ هذا المفهوم أساسيًا في لغات البرمجة المشتقة من حساب لامدا ، مثل LISP و Scheme ، وكذلك في اللغات الوظيفية . وله دورٌ في دراسة الدلالات التفسيرية لبرامج الحاسوب، لأنه دالة متصلة على الترتيبات الجزئية الكاملة . كما أن تطبيق الدوال دالة متصلة في نظرية التماثل ، بل إنه يُشكّل أساس النظرية بأكملها: فهو يسمح برؤية تشويه التماثل كمسار متصل في فضاء الدوال. وبالمثل، يمكن اعتبار الطفرات (إعادة هيكلة) الصحيحة لبرامج الحاسوب بمثابة تلك "المتصلة" في طوبولوجيا سكوت .
التمثيل
يُصوَّر تطبيق الدالة عادةً بوضع المتغير الذي يُمثل الدالة بجانب وسيطها بين قوسين . على سبيل المثال، يُمثل التعبير التالي تطبيق الدالة ƒ على وسيطها x .
في بعض الحالات، يُستخدم ترميز مختلف حيث لا تكون الأقواس مطلوبة، ويمكن التعبير عن تطبيق الدالة بمجرد وضعها جنبًا إلى جنب . على سبيل المثال، يمكن اعتبار التعبير التالي مماثلاً للتعبير السابق:
تُعدّ الصيغة الأخيرة مفيدة بشكل خاص عند دمجها مع تماثل التقسيم الجزئي . بالنظر إلى دالة، ويتم تمثيل تطبيقها على النحو التاليبالصيغة السابقة و(أومع الحجةمكتوبة باستخدام الأقواس الزاوية الأقل شيوعًا) بواسطة الأخير. ومع ذلك، فإن الدوال في شكلها المُقَيَّديمكن تمثيل ذلك من خلال مقارنة حججهم:بدلاً منيعتمد هذا على أن يكون تطبيق الدالة ترابطيًا من اليسار .
عندما يتم تمثيل الترميز الرياضي في مستند رقمي، يمكن استخدام أحرف Unicode غير المرئية ذات العرض الصفري U+2061 FUNCTION APPLICATION و U+2062 INVISIBLE TIMES للتمييز بين معنى التسلسل الذي يعني تطبيق الدالة ومعنى التسلسل الذي يعني الضرب.
بصفتك مشغلًا
يمكن تعريف تطبيق الدالة كعامل تشغيل يسمى تطبيق أو، وفقًا للتعريف التالي:
يمكن أيضًا الإشارة إلى المعامل بعلامة اقتباس معكوسة (`).
إذا كان من المفهوم أن عامل التشغيل ذو أولوية منخفضة وتجميع من اليمين ، فيمكن استخدام عامل التطبيق لتقليل عدد الأقواس المطلوبة في التعبير. على سبيل المثال؛
يمكن إعادة كتابتها على النحو التالي:
ويمكن التعبير عن ذلك بشكل مكافئ باستخدام تركيب الدوال كما يلي:
أو حتى:
إذا أخذنا في الاعتبارأن تكون دالة ثابتة تُرجع.
نظرية المجموعات
في نظرية المجموعات البديهية ، وخاصة نظرية زيرميلو-فرانكل للمجموعات ، الدالةغالباً ما يُعرَّف بأنه علاقة () التي تتمتع بالخاصية التي، لأيهناك شيء فريدبحيث.
لا يكتفي المرء عادةً بكتابة ""لتحديد ذلك"وعادةً ما يرغب في استخدام صيغة الدالة الأكثر شيوعًا "" . تطبيق الدالة، أو بشكل أكثر تحديدًا، الترميز "لا يوجد الرمز "" في التوقيع المعتاد لنظرية المجموعات، ولكن يمكن إضافته إلى النظرية كرمز دالة ثنائيةإذا رغبت في ذلك دون أي فقدان للتعبيرية عن طريق تحديد: [ 2 ]
أو بصورة أكثر رسمية: [ 3 ] [ 4 ]
أينيشير إلى مجموعة الأسية : مجموعة جميع الدوال منل.
في النثر:إذا كان هناك مجالوالمدىبحيثهي دالة منلوأو (نفي السابق) واختيار استخدام المجموعة الفارغةمتىإن عدم التعريف هو أمر اعتباطي لضمان أن تكون الرموز محددة لمجال الخطاب بأكمله . [ 5 ]
لويشير إلى الصيغة الموجودة على الجانب الأيمن من العبارة الشرطية الثنائية أعلاه، لأي مجموعتين،الصيغةيربط كائنًا فريدًا:لذلك، يمكن للغة نظرية المجموعات أن تستخدم امتدادًا بحكم تعريفها لتشمل عملية تطبيق الدالة.بشكل متحفظ .
برمجة
في برمجة الحاسوب، يشير تطبيق الوظيفة غالبًا إلى استدعاء أو تنفيذ إجراء، بدلاً من وظيفة رياضية حقيقية (انظر الوظائف في برمجة الحاسوب )، مع قواعد مماثلة لسلوكها.
يتوافق تطبيق الدالة مع تقليل بيتا في حساب التفاضل والتكامل لامدا .
تطبيق الدالة
فيما يتعلق بمعامل التطبيق، تُطبّق الدالة `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}.
الملكية العالمية
لنفترض دالة، إنه،حيث تدوين الأقواسيرمز إلى فضاء الدوال من A إلى B. وبواسطة عملية التقييم الجزئي ، توجد دالة وحيدةثم يوفر تطبيق التشكل الشامل
- ،
لهذا السبب.
أو، بصورة مكافئة، يكون لدينا مخطط التنقل
وبشكل أدق، فإن curry و apply هما دالتان مترافقتان .
الترميزيُعدّ مفهوم فضاء الدوال من A إلى B أكثر شيوعًا في علوم الحاسوب. أما في نظرية الفئات ،يُعرف باسم الكائن الأسي ، ويُكتب على النحو التالي:. هناك اختلافات أخرى شائعة في التدوين أيضًا؛ على سبيل المثال، غالبًا ما يطلق على Apply اسم Eval ، [ 11 ] على الرغم من أنه في علوم الكمبيوتر، فإنهما ليسا نفس الشيء، حيث يتم تمييز eval عن Apply ، باعتباره تقييم شكل السلسلة المقتبسة لدالة مع وسائطها، بدلاً من تطبيق دالة على بعض الوسائط.
أيضًا، في نظرية الفئات، يُشار إلى الكاري عادةً بـ، لهذا السببيُكتب هذا الرمز للدلالة على الكاري ( g ). ويتعارض هذا الترميز مع استخدامفي حساب التفاضل والتكامل اللامدا ، حيث يُستخدم الرمز لامدا للدلالة على المتغيرات المقيدة. مع مراعاة جميع هذه التغييرات في الرموز، يتم التعبير عن خاصية الترافق بين الدالتين Apply و curry في مخطط التبادل.

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