ম্

ম্যাপিং মধ্যে Common Lisp

12টি অনুশীলনী

ম্যাপিং সম্পর্কে

ম্যাপিং বলতে একটি সিকোয়েন্সের প্রতিটি এলিমেন্টের উপর একটি ফাংশন প্রয়োগ করে নতুন একটি সিকোয়েন্স তৈরি করাকে বোঝায়।

mapcar দিয়ে অবজেক্টের একটি অ্যারের উপর একটি ফাংশন ম্যাপ করা যায়

(mapcar #'double '(1 2 3 4)) ; => (2 4 6 8)

লক্ষ্য করুন, প্রথম আর্গুমেন্টটি হলো কল করার জন্য একটি ফাংশন। #' হলো একটি ফাংশন নির্দিষ্ট করার বিশেষ কোটিং সিনট্যাক্স। (এখানে 'double ব্যবহার করা যায়, তবে #' ব্যবহারই ইডিয়োম্যাটিক এবং এক অর্থে "আরও সঠিক"।)

একাধিক অ্যারে

ম্যাপিং কেবল একটি সিকোয়েন্সের উপর ফাংশন প্রয়োগ করার মধ্যেই সীমাবদ্ধ নয়, একাধিক সিকোয়েন্স নিয়েও করা যায়। যদি N সংখ্যক সিকোয়েন্স দেওয়া হয়, তাহলে ফাংশনটিকে অবশ্যই N সংখ্যক আর্গুমেন্ট নিতে হবে।

(mapcar #'list '(1 2) '(a b) '("foo" "bar")) ; => ((1 a "foo") (2 b "bar"))

অন্যান্য map ফাংশন

mapcar ছাড়াও অ্যারের উপর ম্যাপ করার আরও কিছু ফাংশন আছে। mapcar নিঃসন্দেহে সবচেয়ে কমন, তবে বাকিগুলো সম্পর্কেও জানা ভালো।

maplist অনেকটা mapcar-এর মতো কাজ করে, তবে এলিমেন্টের বদলে একটার পর একটা সাবলিস্টের উপর কাজ করে। প্রথমে পুরো অ্যারের উপর, তারপর cdr-এর উপর, তারপর তার cdr-এর উপর, এভাবে চলতে থাকে:

(maplist #'identity '(a b c)) ; => ((A B C) (B C) (C))

mapc ও mapl যথাক্রমে mapcar ও maplist-এর মতোই, তবে এরা ফলাফল সংগ্রহ করে না, বরং প্রথম অ্যারেটিই রিটার্ন করে। এটি সাইড এফেক্ট তৈরি করা অপারেশনের জন্য ব্যবহৃত হয়।

mapcan ও mapcon যথাক্রমে mapcar ও maplist-এর মতো, তবে nconc ব্যবহার করে ফলাফলটি ফ্ল্যাট করা হয়। nconc append-এর মতোই, শুধু শেষ আর্গুমেন্ট ছাড়া বাকি সবগুলোর ক্ষেত্রে ধ্বংসাত্মক আচরণ করে।

অন্য সিকোয়েন্সে ম্যাপিং

ম্যাপিং কেবল অ্যারে-এর মধ্যেই সীমাবদ্ধ নয়। যেকোনো সিকোয়েন্সের উপরই (যা অন্য একটি কনসেপ্টে আলোচনা করা হয়েছে) ম্যাপ করা যায়। অ্যারে ছাড়া অন্য সিকোয়েন্সের ক্ষেত্রে map ফাংশনটি ব্যবহার করা হয়।

map তিন বা তার বেশি আর্গুমেন্ট নেয়:

  • প্রথমটি হলো ফলাফল সিকোয়েন্সের টাইপ
  • দ্বিতীয়টি হলো যে ফাংশনটি প্রয়োগ করতে হবে সেটি
  • তৃতীয়টি এবং বাকিগুলো হলো যে সিকোয়েন্সগুলোর উপর কাজ করতে হবে সেগুলো।
(map 'list #'double '(1 2 3))        ; => (2 4 6)
(map 'string #'char-upcase "foobar") ; => "FOOBAR"

একটি বিশেষ ক্ষেত্রে, ফলাফল সিকোয়েন্সের টাইপ হিসেবে nil দেওয়া হলে nil-ই রিটার্ন করা হয়। এটি (উপরের mapc ও mapl-এর মতোই) সাইড এফেক্টের জন্য ব্যবহৃত হয়।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

ম্যাপিং শিখুন

অনুশীলন লক করা আছে

ম্যাপিং অনুশীলন করতে আরও 8টি অনুশীলনী আনলক করুন