" খাঁটি ফাংশনাল প্রোগ্রামিং" এর আনুষ্ঠানিক সংজ্ঞাতে গণনা মেশিন ডিজাইনের ধারণা সম্পর্কে বলা হয় যার আউটপুট খাঁটি " মেশিনের ইনপুটটির একটি ফাংশন" । আপনি যদি মেশিনে একই ইনপুট খাওয়ান তবে এটি একই আউটপুট উত্পাদন করবে। প্রতিটি ইনপুট স্পষ্টরূপে নামকরণ করা হয়েছে তাই নির্ভরতাগুলি কী তা আপনি অবিকল জানেন। একটি খাঁটি কার্যকরী প্রোগ্রামিং ভাষা এটিকে কঠোরভাবে প্রয়োগ করে।
তবুও ... বেসলাইন "রেবোল" এ আপনি এই জাতীয় জিনিস লিখতে পারেন:
foo: function [value [integer!]] [
either now/date = 20-Feb-2013 [
value + 1
] [
value
]
]
এখানে আমরা এমন একটি ফাংশন দেখি যা প্রতিদিন এটির পূর্ণসংখ্যার ইনপুট দেয় তবে আজ, যেখানে আপনি মানটি আরও একটি পাবেন। এটিতে তারিখের উপর একটি অদৃশ্য নির্ভরতা অন্তর্ভুক্ত যা ফাংশনটির আর্গুমেন্ট হিসাবে আনুষ্ঠানিকভাবে নির্দিষ্ট করা হয়নি। এটি এক ধরণের জিনিস যা আমার মতো হাস্কেল মানুষ এবং সফ্টওয়্যার ফর্মালিস্টরা রক্তাক্ত হত্যার চিৎকার করে।
সুতরাং রেবোল বাক্সের বাইরে খাঁটি কার্যকর নয় । (... তবে পড়ুন ...)
ফাংশনাল প্রোগ্রামিংয়ের কম কঠোর সংজ্ঞা হ'ল যখন ফাংশন ভাষায় মান হিসাবে কাজ করতে পারে। সুতরাং আপনি একটি চলক একটি ফাংশন বরাদ্দ করতে পারেন, এবং পরে এটি ব্যবহার করতে পারেন। সেই অর্থে, আপনি জাভাস্ক্রিপ্টের পছন্দগুলি পড়তে পারেন একটি কার্যকরী ভাষা এবং দেখুন যে ডাইসাই সংজ্ঞা কিছু লোককে জাভাস্ক্রিপ্টকে একটি কার্যকরী ভাষা বলার দিকে পরিচালিত করবে। আপনি যদি সংজ্ঞার সাথে আলগা হয়ে যাচ্ছেন তবে এটি "কার্যকরী" হবে:
>> foo: does [a + 10]
>> a: 20
>> print foo
== 30
(দ্রষ্টব্য: ডিওএস হ'ল কোনও তর্ক ছাড়াই একটি ফাংশন সংজ্ঞায়িত করার জন্য সুবিধা, যার কেবলমাত্র একটি দেহ রয়েছে has)
আমি জানি না যে আমি যে লোকদের সাথে কথা বলি তার সাথে ফাংশনাল প্রোগ্রামিং কল করার জন্য আমি (বা জাভাস্ক্রিপ্ট) বিবেচনা করব। YMMV।
আপনি যদি কম্পিউটার বিজ্ঞানে কোনও সময় ব্যয় করেন আপনি ট্যুরিং টারপিটস এবং গণনাযোগ্যতা এবং এই ধরণের সমতার নীতিগুলি সম্পর্কে শিখেন যেখানে "যদি আপনি এক্স সাথে যুক্ত করতে পারেন তবে জেডটি সত্য হবে"। এবং আপনি যেমন সিটিতে একটি হ্যাস্কেল বাস্তবায়ন লিখতে পারেন এবং তারপরে কেবল হাসকল লাইব্রেরিতে ম্যাপযুক্ত সি কলগুলি ব্যবহার করে নিজেকে সীমাবদ্ধ রাখতে পারেন, আপনি দাবি করতে পারেন যে আপনি "ফাংশনাল প্রোগ্রামিং" করছেন এবং প্রযুক্তিগতভাবে সঠিক হয়ে উঠছেন।
সুতরাং আপনি যদি বলতে চেয়েছিলেন যে রেবলকে কার্যকরী প্রোগ্রামিং শৈলীর দিকে বাঁকানো যেতে পারে তবে আপনি হতাশবাদী হতে পারেন এবং বলতে পারেন যে "আপনি যখন সি ভাষা করছেন তখন আপনি যে ভাষায় এমন একটি সীমাবদ্ধ উপসেট ব্যবহার করছেন তা বলার চেয়ে ভাল কিছু নয় ' প্রক্সি দ্বারা হাসেলকে পুনরায় ব্যবহার করছেন " । রেবলের আস্তিনের কৌশলটি আপনি সহজেই একটি "ডায়ালাইকিং" উপমা থেকে অন্যটিতে চলে যেতে চলেছেন। একটি কার্যকরী বলে মনে হয় এমন একটি ছোট্ট ডোমেন-নির্দিষ্ট-ভাষা লেখা এত সহজ এবং স্বাভাবিক যে আপনি নিজের ভাষাটিকে যৌথভাবে বাইরে ঘুরিয়ে দেওয়ার মতো মনে করেন না। ক্রিয়ামূলক চরিত্রযুক্ত ডোমেন নির্দিষ্ট ভাষাগুলি তৈরির ক্ষমতা রেবলের লেবেলটিকে "প্যারাডিজম নিরপেক্ষ" হিসাবে নিয়ে যায় ।
অনেকে রেবোলকে এর সর্বাধিক প্রচলিত উপভাষার (ডিও উপভাষা) মিশ্রিত করে এবং "এটিই রেবোল হ'ল" বলে মনে করেন। তবে রেবলের "সারাংশ" এক্সএমএলের মতো, এটি একটি ডেটা এক্সচেঞ্জের ফর্ম্যাট যা কাকতালীয়ভাবে (ঠিক আছে, কাকতালীয়ভাবে নয়) এর হাইপার-অপ্টিমাইজড কোড রয়েছে যা কিছু নির্দিষ্ট উপায়ে বক্সের বাইরে প্রক্রিয়াজাতকরণের উপর দৃষ্টি নিবদ্ধ করে। এক্সএমএল থেকে প্যান্টগুলি কীভাবে প্রহার করে সে সম্পর্কে একটি ভাল ব্যাকগ্রাউন্ড পড়ার জন্য, দেখুন এক্সিএমএল অ্যামিগাসের (এবং এখন রেবোল) খ্যাতির কার্ল স্যাসেনারথের প্রারম্ভ থেকে ত্রুটিযুক্ত ছিলেন ।