प्रकार संपूर्णता सिद्धांत:
कोई आपरेशन मनमाने ढंग से मूल्यों शामिल के प्रकार में प्रतिबंधित किया जाना चाहिए। - वाट
प्रथम श्रेणी मूल्यों का मूल्यांकन किया जा सकता है, तर्क के रूप में पारित और समग्र मूल्यों के घटक के रूप में इस्तेमाल किया। कार्यात्मक भाषाएं कोई वर्ग भेद करने का प्रयास नहीं करती हैं, जबकि अनिवार्य भाषाएं आमतौर पर फ़ंक्शन का इलाज करती हैं ( सर्वोत्तम) दूसरे श्रेणी के मानों के रूप में।
बहुत अधिक प्रोग्रामिंग भाषाएं की इकाइयों को सीमित करती हैं जिन्हें मान के रूप में पास किया जा सकता है (और इसलिए एक सार्थक प्रकार है)। सी या सी ++ में, फ़ंक्शन मान नहीं हैं, हालांकि फ़ंक्शंस के पॉइंटर्स हैं। कक्षाएं मूल्य नहीं हैं।
जावा में, तरीकों और वर्गों नहीं मान, हालांकि आप एक reified वस्तु एक मूल्य के रूप में एक वर्ग का प्रतिनिधित्व प्राप्त कर सकते हैं कर रहे हैं, और जावा 8 में, आप मूल्यों के रूप में विधि संदर्भ पारित कर सकते हैं। हालांकि, पैकेज मान नहीं हैं।
हास्केल में, फ़ंक्शन प्रथम-श्रेणी मान हैं, इसलिए तर्कों के रूप में पारित किया जा सकता है और मानों के रूप में लौटाया जा सकता है। चूंकि हास्केल को स्थाई रूप से टाइप किया गया है, टाइप सिस्टम फ़ंक्शन प्रकारों को व्यक्त करने में सक्षम है।
रुचि का हो सकता है: https://www.researchgate.net/publication/240319683_Type-completeness_as_a_language_principle – Julien