LISP ভাষার একটি বিশেষ বৈশিষ্ট্য হলো এর পারেন্টেসিস (parentheses) ব্যবহার, যা কোডের গঠন এবং কার্যপ্রণালীর জন্য অত্যন্ত গুরুত্বপূর্ণ। LISP এর কোড সাধারণত সম্পূর্ণভাবে পারেন্টেসিসের মধ্যে আবদ্ধ থাকে এবং এর মাধ্যমে এক্সপ্রেশন, ফাংশন কল, এবং ডাটা স্ট্রাকচার সবই নির্ধারিত হয়। LISP কোডের সঠিক গঠন এবং কার্যকরী প্রক্রিয়া অর্জন করতে পারেন্টেসিসের সঠিক ব্যবহার গুরুত্বপূর্ণ।
১. পারেন্টেসিস এর মৌলিক ব্যবহার
LISP কোডের মৌলিক গঠন লিস্ট বা এক্সপ্রেশন দ্বারা পরিচালিত হয়, যা সবসময় পারেন্টেসিস দ্বারা ঘেরা থাকে। LISP এর প্রতিটি ফাংশন কল, লজিক্যাল এক্সপ্রেশন এবং ডাটা স্ট্রাকচার (যেমন লিস্ট) একটি বা একাধিক পারেন্টেসিসের মধ্যে থাকে। উদাহরণস্বরূপ:
ফাংশন কল:
(+ 2 3) ; 2 এবং 3 যোগ করা হবেএখানে, + একটি ফাংশন যা দুটি আর্গুমেন্ট 2 এবং 3 গ্রহণ করে এবং তাদের যোগফল প্রদান করে। পারেন্টেসিসের মধ্যে ফাংশন এবং এর আর্গুমেন্টগুলি থাকবে।
আরও উদাহরণ:
(* (+ 3 4) (- 10 2))এখানে দুটি ফাংশন কল একসাথে একটি এক্সপ্রেশনে করা হচ্ছে:
(+ 3 4)প্রথমে ৩ এবং ৪ যোগ করবে।(- 10 2)দ্বিতীয় অংশ ১০ থেকে ২ বিয়োগ করবে।- পরে, দুটি ফলাফল গুণফলে (
*) গুন করা হবে।
২. লিস্ট (List) গঠন এবং ব্যবহার
LISP তে লিস্ট সবচেয়ে গুরুত্বপূর্ণ ডাটা স্ট্রাকচার এবং এটি সবসময় পারেন্টেসিসের মধ্যে থাকে। একটি লিস্ট সাধারণত কার (car) এবং সিডিআর (cdr) ফাংশন দ্বারা পরিচালিত হয়।
লিস্ট তৈরি:
(setq mylist '(1 2 3 4)) ; একটি লিস্ট তৈরিএখানে, (1 2 3 4) একটি লিস্ট যা পারেন্টেসিসের মধ্যে রাখা হয়েছে। এই লিস্টে চারটি উপাদান রয়েছে। setq ব্যবহার করে mylist ভেরিয়েবলকে এই লিস্টের সাথে অ্যাসাইন করা হয়েছে।
লিস্টের প্রথম উপাদান এবং বাকি উপাদান পাওয়া:
(car mylist) ; প্রথম উপাদান ১
(cdr mylist) ; বাকি উপাদান '(2 3 4)এখানে, car ফাংশন লিস্টের প্রথম উপাদান প্রদান করে এবং cdr ফাংশন বাকি উপাদানগুলি (বাকি তালিকা) প্রদান করে।
৩. পারেন্টেসিসের মধ্যে কোডের গঠন
LISP তে কোডের প্রতিটি অংশকে ঠিকমতো গঠন করতে এবং তার সঠিক কার্যক্রম নির্ধারণ করতে পারেন্টেসিস ব্যবহৃত হয়। পারেন্টেসিসের মধ্যে ফাংশন নাম এবং তার আর্গুমেন্ট থাকে, যা সঠিকভাবে কোডের কার্যপ্রণালী নির্ধারণ করে।
এফ (IF) এক্সপ্রেশন:
(if (> x 10)
(print "Greater than 10")
(print "Less than or equal to 10"))এখানে, if ফাংশনটি একটি শর্তের ভিত্তিতে দুটি ফলাফল প্রদান করবে:
- যদি
xবড় হয় ১০ এর থেকে, তাহলে"Greater than 10"প্রিন্ট হবে। - যদি না হয়,
"Less than or equal to 10"প্রিন্ট হবে।
এটি একটি সাধারিত শর্তাবলীর (conditional) কোড যা পারেন্টেসিসের মধ্যে গঠিত।
৪. নেস্টেড পারেন্টেসিস
LISP এ নেস্টেড পারেন্টেসিস খুবই সাধারণ। এক এক্সপ্রেশন বা ফাংশন কলের মধ্যে আরও এক বা একাধিক ফাংশন কল করা হতে পারে। এটি কোডের কার্যকারিতা এবং নির্ভরশীলতা বাড়ায়।
নেস্টেড ফাংশন কল:
(+ (* 2 3) (- 10 4))এখানে, দুটি ফাংশন কল একে অপরের মধ্যে নেস্টেড:
(* 2 3)প্রথমে ২ এবং ৩ গুণ করবে।(- 10 4)দ্বিতীয় অংশ ১০ থেকে ৪ বিয়োগ করবে।- পরে, দুটি ফলাফল যোগ করা হবে।
এটি একটি উদাহরণ যেখানে পারেন্টেসিসের মধ্যে পারেন্টেসিস রয়েছে এবং তাদের মধ্যে একাধিক কার্যপ্রণালী রয়েছে।
৫. পারেন্টেসিসের মধ্যে কোড ব্লক
LISP তে কোড ব্লক এবং ফাংশন নির্ধারণ করার জন্য পারেন্টেসিস ব্যবহৃত হয়। উদাহরণস্বরূপ, defun ফাংশন ব্যবহার করে একটি ফাংশন ডিফাইন করা যেতে পারে, এবং পুরো ফাংশন পারেন্টেসিসের মধ্যে থাকবে।
ফাংশন ডিফাইনেশন:
(defun square (x)
(* x x))এখানে:
defunফাংশনটিsquareনামক একটি নতুন ফাংশন ডিফাইন করছে।- ফাংশনের নাম এবং আর্গুমেন্ট পারেন্টেসিসে দেয়া হয়েছে।
- ফাংশনের কাজ হচ্ছে
xএর সাথেxগুণ করা।
৬. পারেন্টেসিস এবং কোড স্ট্রাকচার
LISP কোডের সঠিক গঠন এবং স্ট্রাকচার অর্জন করতে পারেন্টেসিস অত্যন্ত গুরুত্বপূর্ণ। পারেন্টেসিস কোডের কাঠামো নির্ধারণ করে এবং সমস্ত ফাংশন কল, শর্তাবলী, লুপ, এবং অন্যান্য কার্যকরী এক্সপ্রেশন গঠন করতে সাহায্য করে।
লুপ এক্সপ্রেশন (যেমন loop এর ব্যবহার):
(loop for i from 1 to 5
do (print i))এখানে, loop একটি স্টেটমেন্ট যা একটি নির্দিষ্ট পরিসরের মধ্যে কাজ করবে এবং প্রতিটি পরিক্রমায় i কে প্রিন্ট করবে।
সারসংক্ষেপ
LISP ভাষায় পারেন্টেসিস একটি অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। এর মাধ্যমে কোডের কাঠামো এবং গঠন নির্ধারণ করা হয়। প্রতিটি ফাংশন কল, শর্তাবলী, লিস্ট, এবং কোড ব্লক পারেন্টেসিসের মধ্যে থাকবে। LISP এর কোড স্ট্রাকচার সম্পূর্ণভাবে পারেন্টেসিস নির্ভর, এবং এগুলির সঠিক ব্যবহার কোডের কার্যকারিতা ও সঠিকতার জন্য অত্যন্ত গুরুত্বপূর্ণ।
Read more