বেশিরভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজে (উভয়ই গতিশীল এবং স্ট্যাটিকালি টাইপ করা ভাষাগুলি) বিশেষ কীওয়ার্ড এবং / অথবা সিনট্যাক্স থাকে যা ডিক্লেয়ারিং ফাংশনগুলির জন্য ভেরিয়েবলগুলি ঘোষণার চেয়ে অনেক আলাদা দেখায়। আমি অন্য একটি নামকৃত সত্তা ঘোষণার মতোই ফাংশনগুলি দেখছি:
পাইথনে উদাহরণস্বরূপ:
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
কিছু ভাষায়। এবং, আইএমও, এটি আরও সামঞ্জস্যপূর্ণ (কোনও পরিবর্তনশীল বা ফাংশনের ধরণটি বোঝার জন্য আমি একই জায়গায় তাকাই) এবং সম্ভবত পার্সার / ব্যাকরণকে লেখার জন্য কিছুটা সহজ করে তোলে।
আমি জানি খুব কম ভাষা এই ধারণাটি ব্যবহার করে (কফিস্ক্রিপ্ট, হাস্কেল) তবে বেশিরভাগ সাধারণ ভাষায় ফাংশনের জন্য বিশেষ বাক্য গঠন রয়েছে (জাভা, সি ++, পাইথন, জাভাস্ক্রিপ্ট, সি #, পিএইচপি, রুবি)।
এমনকি স্কেলাতেও, যা উভয় উপায়ে সমর্থন করে (এবং প্রকারের অনুক্রমটি রয়েছে), এটি লেখার পক্ষে আরও সাধারণ:
def addOne(x: Int) = x + 1
বরং:
val addOne = (x: Int) => x + 1
আইএমও, স্কালায় কমপক্ষে, এটি সম্ভবত খুব সহজেই উপলব্ধিযোগ্য সংস্করণ তবে এই আইডিয়ামটি খুব কমই অনুসরণ করা হয়:
val x: Int = 1
val y: Int = addOne(x)
val addOne: (Int => Int) = x => x + 1
আমি নিজের খেলনা ভাষাতে কাজ করছি এবং আমি ভাবছি যে আমি যদি নিজের ভাষাটি এমনভাবে ডিজাইন করি এবং যদি কোনও historicalতিহাসিক বা প্রযুক্তিগত কারণে এই প্যাটার্নটি ব্যাপকভাবে অনুসরণ না করা হয় তবে কোনও সমস্যা আছে কিনা?
(int => int) addOne = (x) => {
চেয়ে অনেক বেশি "বিশেষ" এবং "জটিল" int addOne(int) {
...