वे अलग हैं।
प्रथम श्रेणी कार्यों एक भाषा है कि समान रूप से भर में नियंत्रित किया जाता है में
मान "प्रथम श्रेणी" कहा जाता है। उन्हें डेटा संरचनाओं में संग्रहीत किया जा सकता है, तर्क के रूप में पारित किया जा सकता है, या नियंत्रण संरचनाओं में उपयोग किया जा सकता है।
भाषाएं जो फ़ंक्शन प्रकारों के साथ मानों का समर्थन करती हैं, और उन्हें गैर-फ़ंक्शन मानों के समान मानती हैं, को "प्रथम श्रेणी के कार्यों" के रूप में कहा जा सकता है।
उच्च आदेश कार्यों
प्रथम श्रेणी कार्यों होने का एक परिणाम यह है कि यदि आप किसी अन्य समारोह के लिए एक तर्क के रूप में एक समारोह पारित करने में सक्षम होना चाहिए। बाद वाला कार्य अब "उच्च आदेश" है। यह एक ऐसा कार्य है जो एक तर्क के रूप में कार्य करता है।
विहित उदाहरण "मानचित्र"
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
है यही कारण है कि, यह एक समारोह है, और एक सरणी लेता है, और समारोह प्रत्येक तत्व के लिए लागू के साथ एक नई सरणी देता है।
कार्यात्मक भाषाएं - भाषाएं जहां कार्य कार्यक्रमों के प्राथमिक साधन हैं - सभी के पास प्रथम श्रेणी के कार्य हैं। अधिकांश में उच्च ऑर्डर फ़ंक्शन भी होते हैं (एक्सेल जैसे भाषाओं में बहुत ही दुर्लभ अपवाद होते हैं, जिन्हें कार्यात्मक कहा जा सकता है, लेकिन उच्च क्रम नहीं)।
स्रोत
2012-04-13 13:35:41
मुझे लगता है कि एक चीज़ मुझे आसानी से भ्रमित कर देती है कि वे निकट से संबंधित हैं। – Simon
@ सिमॉन मुझे लगता है कि भ्रम से बचने की कुंजी यह याद रखना है कि किसी भाषा में प्रथम श्रेणी के कार्य होते हैं (आप "प्रथम श्रेणी" अन्य चीजों के बारे में भी बात कर सकते हैं, जैसे प्रथम श्रेणी के वर्ग, आदि), या यह नहीं करता है । तो आप कभी भी एक विशेष समारोह ** के बारे में बात नहीं करते हैं ** प्रथम श्रेणी या नहीं। ओटीओएच, जब आप कहते हैं कि कोई फ़ंक्शन उच्च-आदेश है या नहीं, तो यह कहता है कि यह फ़ंक्शंस पर चल रहा है या नहीं, इसलिए "उच्च-ऑर्डर-नेस" प्रत्येक व्यक्तिगत फ़ंक्शन की एक संपत्ति है। तो "प्रथम श्रेणी के कार्यों" एक भाषा की संपत्ति है, और "उच्च आदेश" एक समारोह की एक संपत्ति है। – Ben
बिल्कुल बेन। मैं सोच रहा था कि उन दोनों काम के लिए एक संपत्ति दोनों हैं इसलिए मैं उलझन में था। धन्यवाद आपकी टिप्पणियां। – Simon