अधिकांश प्रोग्रामिंग भाषाओं (दोनों गतिशील और सांख्यिकीय रूप से टाइप की गई भाषाएं) में विशेष कीवर्ड और / या सिंटैक्स होते हैं जो फ़ंक्शन घोषित करने के लिए चर घोषित करने की तुलना में बहुत अलग दिखते हैं। मैं अन्य नामांकित इकाई की घोषणा करते हुए कार्य देखता हूं:
उदाहरण के लिए पायथन:
x = 2
y = addOne(x)
def addOne(number):
return number + 1
क्यों नहीं:
x = 2
y = addOne(x)
addOne = (number) =>
return number + 1
इसी तरह, जावा जैसी भाषा में:
int x = 2;
int y = addOne(x);
int addOne(int x) {
return x + 1;
}
क्यों नहीं:
int x = 2;
int y = addOne(x);
(int => int) addOne = (x) => {
return x + 1;
}
यह सिंटैक्स कुछ घोषित करने का अधिक स्वाभाविक तरीका है (यह एक फ़ंक्शन या एक चर है) और एक कम कीवर्ड जैसे def
या function
कुछ भाषाओं में। और, IMO, यह अधिक सुसंगत है (मैं चर या फ़ंक्शन के प्रकार को समझने के लिए एक ही स्थान पर देखता हूं) और शायद लिखने के लिए पार्सर / व्याकरण को थोड़ा सरल बनाता है।
मुझे पता है कि बहुत कम भाषाएं इस विचार (कॉफीस्क्रिप्ट, हास्केल) का उपयोग करती हैं, लेकिन अधिकांश आम भाषाओं में फ़ंक्शन (जावा, सी ++, पायथन, जावास्क्रिप्ट, सी #, पीएचपी, रूबी) के लिए विशेष वाक्यविन्यास हैं।
यहां तक कि स्काला में, जो दोनों तरह से समर्थन करती है (और टाइप इनफैक्शन), यह लिखना अधिक आम है:
def addOne(x: Int) = x + 1
बजाय:
val addOne = (x: Int) => x + 1
IMO, स्काला में कम से कम, यह शायद सबसे आसानी से समझ में आने वाला संस्करण है, लेकिन इस मुहावरे का शायद ही कभी पालन किया जाता है:
val x: Int = 1
val y: Int = addOne(x)
val addOne: (Int => Int) = x => x + 1
मैं अपनी खुद की टॉय लैंग्वेज पर काम कर रहा हूं और मैं सोच रहा हूं कि क्या इस तरह से मेरी भाषा डिजाइन की जाए और अगर कोई ऐतिहासिक या तकनीकी कारण हैं तो इस पैटर्न का व्यापक रूप से पालन नहीं किया जाता है?
(int => int) addOne = (x) => {
लिए "विशेष" और "जटिल" की तुलना में बहुत अधिक है int addOne(int) {
...