Functions ডিফাইন করা: defun, Anonymous Functions

Functions in LISP (ফাংশনস) - লিস্প (LISP) - Computer Programming

300

LISP একটি ফাংশনাল প্রোগ্রামিং ভাষা, যেখানে ফাংশনই প্রোগ্রামের মূল উপাদান। LISP-এ ফাংশন ডিফাইন করার জন্য defun ব্যবহৃত হয়, এবং ফাংশনগুলিকে অ্যানোনিমাস (অজ্ঞাতনামা) ফাংশন হিসেবে ডিফাইনও করা যায়। চলুন, defun এবং অ্যানোনিমাস ফাংশন সম্পর্কে বিস্তারিত জানি।


১. defun দিয়ে ফাংশন ডিফাইন করা

defun LISP-এ ফাংশন ডিফাইন করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি একটি ফাংশন নাম, তার আর্গুমেন্ট এবং ফাংশনটির কার্যাবলী (বা এক্সপ্রেশন) নির্ধারণ করেন।

সিনট্যাক্স:

(defun function-name (parameter1 parameter2 ... parameterN)
  function-body)
  • function-name: ফাংশনের নাম।
  • parameter1, parameter2, ..., parameterN: ফাংশনের ইনপুট প্যারামিটার।
  • function-body: ফাংশনের কার্যক্রম বা এক্সপ্রেশন যা ইনপুট প্যারামিটার নিয়ে কাজ করবে।

উদাহরণ:

(defun add (a b)
  (+ a b))

এখানে, add একটি ফাংশন যা দুইটি প্যারামিটার a এবং b নিয়ে তাদের যোগফল প্রদান করে।

ফাংশন কল করা:

(add 3 5)   ; আউটপুট: 8

এখানে, add ফাংশন কল করার সময় 3 এবং 5 প্যারামিটার হিসেবে প্রদান করা হয় এবং আউটপুট হবে 8

আরেকটি উদাহরণ (গুণফল ফাংশন):

(defun multiply (x y)
  (* x y))

এই ফাংশনটি x এবং y নামক দুটি প্যারামিটার নিয়ে তাদের গুণফল প্রদান করবে।

ফাংশন কল:

(multiply 4 7)  ; আউটপুট: 28

২. অ্যানোনিমাস ফাংশন (Anonymous Functions)

LISP-এ অ্যানোনিমাস ফাংশন এমন একটি ফাংশন যা কোনো নাম ছাড়াই সরাসরি ব্যবহৃত হয়। এটি সাধারণত lambda এর মাধ্যমে ডিফাইন করা হয়।

সিনট্যাক্স:

(lambda (parameter1 parameter2 ... parameterN) 
  function-body)
  • parameter1, parameter2, ..., parameterN: অ্যানোনিমাস ফাংশনের ইনপুট প্যারামিটার।
  • function-body: ফাংশনের কার্যক্রম বা এক্সপ্রেশন যা ইনপুট প্যারামিটার নিয়ে কাজ করবে।

উদাহরণ:

(setq add-func (lambda (a b) (+ a b)))

এখানে, add-func একটি অ্যানোনিমাস ফাংশন যা a এবং b নামক প্যারামিটার নিয়ে তাদের যোগফল প্রদান করবে।

ফাংশন কল:

(funcall add-func 3 5)  ; আউটপুট: 8

এখানে, funcall ব্যবহার করে অ্যানোনিমাস ফাংশনটি কল করা হয়েছে, এবং প্যারামিটার হিসেবে 3 এবং 5 প্রদান করা হয়েছে।

আরেকটি উদাহরণ (গুণফল):

(setq multiply-func (lambda (x y) (* x y)))
(funcall multiply-func 4 7)  ; আউটপুট: 28

৩. ফাংশন ডিফাইনেশন এবং কলের আরো উদাহরণ

উদাহরণ ১ (তিনটি সংখ্যার যোগফল):

(defun sum-three (x y z)
  (+ x y z))

ফাংশন কল:

(sum-three 1 2 3)  ; আউটপুট: 6

উদাহরণ ২ (অ্যানোনিমাস ফাংশন ব্যবহার):

(funcall (lambda (x y) (* x y)) 5 6)  ; আউটপুট: 30

এখানে, একটি অ্যানোনিমাস ফাংশন ব্যবহার করে দুইটি সংখ্যার গুণফল বের করা হয়েছে।

আরো একটি উদাহরণ (হায়ার-অর্ডার ফাংশন):

(setq apply-add (lambda (f x y) (funcall f x y)))

(funcall (apply-add (lambda (a b) (+ a b)) 3 7))  ; আউটপুট: 10

এখানে, apply-add একটি হায়ার-অর্ডার ফাংশন যা অন্য একটি ফাংশন (lambda (a b) (+ a b)) গ্রহণ করে এবং তা ব্যবহার করে যোগফল প্রদান করে।


সারসংক্ষেপ

ফাংশনব্যাখ্যাউদাহরণ
defunনাম সহ একটি ফাংশন ডিফাইন করা হয়।(defun add (a b) (+ a b))
lambdaঅ্যানোনিমাস ফাংশন, যেখানে কোনো নাম থাকে না।(lambda (x y) (* x y))
funcallঅ্যানোনিমাস ফাংশন বা যেকোনো ফাংশন কল করতে ব্যবহৃত।(funcall (lambda (a b) (+ a b)) 3 5)

LISP-এ ফাংশন ডিফাইন করার জন্য defun এবং অ্যানোনিমাস ফাংশন ডিফাইন করার জন্য lambda ব্যবহৃত হয়। funcall ফাংশন ব্যবহার করে অ্যানোনিমাস ফাংশন বা যেকোনো ফাংশন কল করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...