let, setq এবং defvar এর ব্যবহার

Variables এবং Bindings (ভেরিয়েবলস এবং বাইন্ডিংস) - লিস্প (LISP) - Computer Programming

402

LISP প্রোগ্রামিং ভাষায় let, setq, এবং defvar হল তিনটি গুরুত্বপূর্ণ কনস্ট্রাক্ট যা ভেরিয়েবল ডিফাইন এবং অ্যাসাইন করার জন্য ব্যবহৃত হয়। এই তিনটি কনস্ট্রাক্টের মধ্যে কিছু পার্থক্য আছে এবং প্রতিটির নির্দিষ্ট ব্যবহারের উদ্দেশ্য রয়েছে। এখানে আমরা তাদের ব্যবহার এবং পার্থক্য বিস্তারিতভাবে আলোচনা করব।


১. let (স্থানীয় ভেরিয়েবল ডিফাইন করা)

let একটি ব্লক-বদ্ধ স্থানীয় ভেরিয়েবল ডিফাইন করার জন্য ব্যবহৃত হয়। এটি একটি স্থানীয় স্কোপ তৈরি করে, যেখানে আপনি ভেরিয়েবল ডিফাইন করেন এবং সেই ভেরিয়েবলগুলি কেবল সেই ব্লক বা স্কোপের মধ্যে বৈধ থাকে। যখন স্কোপ শেষ হয়, তখন ঐ ভেরিয়েবলগুলি অদৃশ্য হয়ে যায়। এটি সাধারণত একটি ফাংশন বা কার্যকলাপের মধ্যে ব্যবহৃত হয়।

ব্যবহারের ধরন:

(let ((var1 value1)
      (var2 value2))
  ;; এখানে var1 এবং var2 শুধুমাত্র let ব্লকের মধ্যে অ্যাক্সেসযোগ্য
  (print var1)
  (print var2))

উদাহরণ:

(let ((x 5) (y 10))
  (+ x y))  ; আউটপুট: 15

এখানে:

  • x এবং y হল স্থানীয় ভেরিয়েবল।
  • এই ভেরিয়েবলগুলো শুধুমাত্র let ব্লকের মধ্যে কার্যকর, এবং তার পর তাদের মান আর ব্যবহার করা যাবে না।

২. setq (ভেরিয়েবল অ্যাসাইন করা)

setq একটি গ্লোবাল ভেরিয়েবল এর মান অ্যাসাইন করতে ব্যবহৃত হয়। এটি ভেরিয়েবল এর মান পরিবর্তন করে, এবং সেই ভেরিয়েবলটি গ্লোবাল স্কোপে পাওয়া যায়। setq এর মধ্যে প্রথম আর্গুমেন্ট হচ্ছে ভেরিয়েবলের নাম এবং দ্বিতীয় আর্গুমেন্ট হচ্ছে তার নতুন মান।

ব্যবহারের ধরন:

(setq var value)

উদাহরণ:

(setq x 5)
(setq y (+ x 10))  ; y এর মান হবে 15

এখানে:

  • setq ভেরিয়েবলের মানকে গ্লোবাল স্কোপে পরিবর্তন করে। অর্থাৎ, এখানে x এবং y গ্লোবাল ভেরিয়েবল।

৩. defvar (গ্লোবাল ভেরিয়েবল ডিফাইন করা)

defvar ব্যবহার করা হয় গ্লোবাল ভেরিয়েবল ডিফাইন করতে এবং যদি সেই ভেরিয়েবল আগে থেকেই ডিফাইন না থাকে তবে সেটির মান অ্যাসাইন করতে। যদি ভেরিয়েবলটি আগে থেকে ডিফাইন করা থাকে, তাহলে তার মান পরিবর্তন হবে না। এটি সাধারণত গ্লোবাল ভেরিয়েবল তৈরি করার জন্য ব্যবহার করা হয়।

ব্যবহারের ধরন:

(defvar varname initial-value)

উদাহরণ:

(defvar x 10)
(defvar y (+ x 5))  ; y এর মান হবে 15

এখানে:

  • defvar ব্যবহার করলে যদি x এবং y আগে থেকেই ডিফাইন করা না থাকে, তবে তাদের মান ডিফাইন হবে। তবে যদি তারা আগে থেকেই ডিফাইন হয়ে থাকে, তবে তাদের মান অপরিবর্তিত থাকবে।

পার্থক্য

কনস্ট্রাক্টব্যবহারবৈশিষ্ট্য
letস্থানীয় ভেরিয়েবল ডিফাইন করে, যেগুলি শুধু let ব্লকের মধ্যে বৈধ থাকে।ভেরিয়েবলগুলি শুধুমাত্র ব্লকের মধ্যে বৈধ থাকে।
setqগ্লোবাল ভেরিয়েবলের মান পরিবর্তন করে।গ্লোবাল ভেরিয়েবল হিসাবে ব্যবহার হয়।
defvarগ্লোবাল ভেরিয়েবল ডিফাইন করে এবং যদি পূর্বে ডিফাইন করা না থাকে তবে মান অ্যাসাইন করে।পূর্বে ডিফাইন করা ভেরিয়েবলের মান পরিবর্তন হয় না।

উদাহরণ

let উদাহরণ:

(let ((a 3) (b 4))
  (print (+ a b)))  ; আউটপুট: 7

এখানে a এবং b শুধুমাত্র let ব্লকের মধ্যে বৈধ, তাদের স্কোপ বাইরে পৌঁছাবে না।

setq উদাহরণ:

(setq a 5)
(setq b 10)
(print (+ a b))  ; আউটপুট: 15

এখানে a এবং b গ্লোবাল ভেরিয়েবল হিসেবে অ্যাসাইন করা হয়েছে এবং তাদের মান পরিবর্তন করা হয়েছে।

defvar উদাহরণ:

(defvar a 5)
(defvar b 10)
(print (+ a b))  ; আউটপুট: 15

এখানে a এবং b ডিফাইন করা হয়েছে এবং যদি তারা আগে থেকে ডিফাইন না হয়ে থাকে, তবে তাদের মান ৫ এবং ১০ হবে।


সারসংক্ষেপ

  • let ব্যবহার করে আপনি স্থানীয় ভেরিয়েবল তৈরি করতে পারেন যেগুলি কেবলমাত্র একটি ব্লকের মধ্যে বৈধ থাকে।
  • setq ব্যবহার করে আপনি গ্লোবাল ভেরিয়েবলের মান পরিবর্তন করতে পারেন।
  • defvar ব্যবহার করে আপনি গ্লোবাল ভেরিয়েবল ডিফাইন করতে পারেন, তবে যদি সেই ভেরিয়েবলটি আগে থেকেই ডিফাইন করা থাকে তবে তার মান পরিবর্তিত হবে না।

এগুলো LISP ভাষায় ভেরিয়েবল ব্যবস্থাপনার মৌলিক উপাদান।

Content added By
Promotion

Are you sure to start over?

Loading...