LISP (LISt Processing) ভাষায় Lists হল প্রধান ডাটা স্ট্রাকচার এবং car, cdr, এবং cons এর মতো ফাংশনগুলি LISP লিস্টের উপাদান অ্যাক্সেস এবং ট্র্যাভার্সাল করতে ব্যবহৃত হয়। এগুলি খুবই গুরুত্বপূর্ণ ফাংশন যা লিস্টের কার্যকারিতা এবং লজিকাল কাঠামো তৈরি করতে সাহায্য করে। এখানে আমরা car, cdr, এবং cons ফাংশনের বিস্তারিত আলোচনা করব।
১. car (first element of a list)
car ফাংশনটি একটি লিস্টের প্রথম উপাদান (first element) প্রদান করে। এটি লিস্টের প্রথম উপাদানটি এক্সেস করতে ব্যবহৃত হয় এবং অন্য সমস্ত উপাদান অগ্রাহ্য করা হয়।
উদাহরণ:
(setq mylist '(1 2 3 4)) ; একটি লিস্ট ঘোষণা
(car mylist) ; আউটপুট: 1এখানে, car ফাংশনটি লিস্টের প্রথম উপাদান 1 প্রদান করেছে।
আরও একটি উদাহরণ:
(setq mylist '((1 2) (3 4) (5 6))) ; একটি নেস্টেড লিস্ট
(car mylist) ; আউটপুট: (1 2)এখানে, car ফাংশনটি নেস্টেড লিস্টের প্রথম উপাদান (1 2) প্রদান করছে।
২. cdr (rest of the list)
cdr ফাংশনটি একটি লিস্টের বাকি অংশ (rest of the list) প্রদান করে, অর্থাৎ প্রথম উপাদান বাদে বাকি সমস্ত উপাদান। এটি লিস্টের প্রথম উপাদান বাদে সমস্ত উপাদান নিয়ে একটি নতুন লিস্ট তৈরি করে।
উদাহরণ:
(setq mylist '(1 2 3 4)) ; একটি লিস্ট ঘোষণা
(cdr mylist) ; আউটপুট: (2 3 4)এখানে, cdr ফাংশনটি লিস্টের প্রথম উপাদান বাদে বাকি অংশ (2 3 4) প্রদান করেছে।
আরও একটি উদাহরণ:
(setq mylist '((1 2) (3 4) (5 6))) ; একটি নেস্টেড লিস্ট
(cdr mylist) ; আউটপুট: ((3 4) (5 6))এখানে, cdr ফাংশনটি প্রথম উপাদান (1 2) বাদে বাকি অংশ ((3 4) (5 6)) প্রদান করেছে।
৩. cons (construct a new pair)
cons ফাংশনটি দুটি উপাদানকে একটি নতুন জোড়া (pair) হিসেবে একত্রিত করতে ব্যবহৃত হয়। এটি একটি নতুন লিস্ট তৈরি করে, যেখানে প্রথম উপাদানটি হল তার প্রথম আর্গুমেন্ট এবং দ্বিতীয় উপাদানটি হলো তার দ্বিতীয় আর্গুমেন্ট। সাধারণত এটি একটি নতুন লিস্টের প্রথম উপাদান হিসেবে ব্যবহৃত হয়।
উদাহরণ:
(setq mylist '(2 3 4)) ; একটি লিস্ট ঘোষণা
(cons 1 mylist) ; আউটপুট: (1 2 3 4)এখানে, cons ফাংশনটি 1 এবং mylist লিস্টটিকে একত্রিত করে নতুন একটি লিস্ট তৈরি করেছে যা (1 2 3 4)।
আরও একটি উদাহরণ:
(setq mylist '(3 4 5)) ; একটি লিস্ট ঘোষণা
(cons 1 (cons 2 mylist)) ; আউটপুট: (1 2 3 4 5)এখানে, cons ফাংশনটি প্রথমে 2 এবং mylist লিস্টটিকে একত্রিত করে (2 3 4 5) তৈরি করেছে এবং পরে 1 কে ওই লিস্টের সাথে যুক্ত করে নতুন লিস্ট (1 2 3 4 5) তৈরি করেছে।
List Traversal (List-এর উপাদানগুলি একের পর এক প্রক্রিয়া করা)
LISP এ লিস্টের উপাদানগুলি এক এক করে প্রক্রিয়া (traverse) করতে হলে সাধারণত car এবং cdr ফাংশনগুলোকে ব্যবহার করা হয়। আপনি এগুলির মাধ্যমে একটি লিস্টের সমস্ত উপাদান নিয়ে কোন কাজ করতে পারেন, যেমন প্রিন্ট করা বা কোনো শর্ত যাচাই করা।
উদাহরণ (List Traversal):
(setq mylist '(1 2 3 4 5))
(defun print-list (lst)
(when lst ; যদি লিস্টটি খালি না হয়
(print (car lst)) ; প্রথম উপাদান প্রিন্ট করা
(print-list (cdr lst)))) ; বাকি উপাদান প্রক্রিয়া করা
(print-list mylist) ; আউটপুট: 1 2 3 4 5এখানে, print-list ফাংশনটি car এবং cdr ফাংশন ব্যবহার করে লিস্টের সমস্ত উপাদান প্রিন্ট করে। এটি একটি রিকার্সিভ ফাংশন, যা লিস্টের প্রথম উপাদান প্রিন্ট করে এবং পরে বাকি অংশে রিকার্সন করে প্রক্রিয়া চালায়।
সংক্ষেপ
| ফাংশন | বর্ণনা |
|---|---|
| car | লিস্টের প্রথম উপাদান প্রদান করে। |
| cdr | লিস্টের প্রথম উপাদান বাদে বাকি অংশ প্রদান করে। |
| cons | দুটি উপাদানকে একটি নতুন জোড়া (pair) হিসেবে একত্রিত করে। |
| List Traversal | car এবং cdr ব্যবহার করে লিস্টের সমস্ত উপাদান একের পর এক প্রক্রিয়া করা। |
car, cdr, এবং cons ফাংশনগুলি LISP এর লিস্টের কার্যকারিতা এবং ট্র্যাভার্সাল (যতদূর পর্যন্ত উপাদানগুলি প্রক্রিয়া করা) সহজ এবং কার্যকরী করে তোলে। LISP ভাষায় লিস্টের ওপর কাজ করার সময় এই ফাংশনগুলো খুবই গুরুত্বপূর্ণ এবং প্রয়োজনীয়।
Read more