Clojure-এ অ্যারেগুলো কালেকশন, ঠিক অন্যান্য ভাষার অ্যারেগুলোর মতোই। Lisp পরিবারের অন্যান্য ভাষার মতোই Clojure অ্যারে প্রকাশ করতে প্রথম বন্ধনী ব্যবহার করে।
Clojure-এ অ্যারে তৈরি করা যায় দুইভাবে। list ফাংশন দিয়ে একটি অ্যারে তৈরি করা যায়, অথবা quote দিয়ে একটি লিটারাল অ্যারে কোট করা যায়।
অ্যারেগুলো বিশেষ, কারণ Clojure এগুলোকে কল হিসেবে বিবেচনা করে। এটি আশা করে যে কলটি শুরু হবে একটি অপারেটর দিয়ে, যা সাধারণত একটি ফাংশন। অ্যারের বাকি এলিমেন্টগুলোকে অপারেন্ড হিসেবে ধরা হয়, অর্থাৎ এগুলো ফাংশনের আর্গুমেন্ট হয়ে যায়।
অ্যারেগুলোর প্রতি Clojure-এর এই বিশেষ আচরণের কারণেই আমরা সরাসরি কোনো অ্যারে লিটারাল তৈরি করতে পারি না। quote বা তার সংক্ষিপ্ত রূপ ' দিয়ে কোনো অ্যারে কোট করলে বোঝা যায় যে অ্যারেটি ইভ্যালুয়েট করা উচিত নয়।
কিছু আধুনিক ভাষার মতো নয়, Clojure-এর অ্যারেগুলো হেটেরোজেনিয়াস, অর্থাৎ এগুলো ভেতরে একাধিক ধরনের এলিমেন্ট ধারণ করতে পারে, যেমন '(2 "a" "b" 3).
অন্য Lisp-গুলোর মতো নয়, Clojure-এ একটি খালি অ্যারে ট্রুথি, এবং এটি nil বা false-এর সমতুল্য নয়।
এই অনুশীলনীতে আপনি Exercism প্ল্যাটফর্ম থেকে যে প্রোগ্রামিং ভাষাগুলো অনুশীলন করার পরিকল্পনা করছেন, সেগুলোর একটি অ্যারে প্রসেস করার কোড লিখবেন।
আপনার ছয়টি কাজ আছে।
ভাষা যোগ করার আগে, আপনাকে প্রথমে একটি নতুন অ্যারে তৈরি করে শুরু করতে হবে। এমন একটি ফাংশন ডিফাইন করুন যা একটি খালি অ্যারে রিটার্ন করে।
(new-list)
;; => ()
আপনি যখন Exercism ঘুরে দেখবেন এবং শিখতে চান এমন ভাষা খুঁজে পাবেন, তখন সেগুলো আপনার অ্যারেতে যোগ করতে পারার সুবিধা দরকার হবে। আপনার অ্যারের শুরুতে একটি নতুন ভাষা যোগ করার জন্য একটি ফাংশন ডিফাইন করুন।
(add-language '("Clojurescript") "JavaScript")
;; => '("JavaScript" "Clojurescript")
আপনি এইমাত্র কোন ভাষাটি যোগ করলেন, তা দ্রুত যাচাই করতে চাইবেন। এমন একটি ফাংশন ডিফাইন করুন যা আপনার অ্যারে থেকে প্রথম ভাষাটি রিটার্ন করে।
(first-language '("Haskell" "Python"))
;; => "Haskell"
মাঝে মাঝে এইমাত্র যোগ করা কোনো ভাষা নিয়ে আপনার মন বদলে যেতে পারে। আপনার অ্যারে থেকে প্রথম ভাষাটি সরিয়ে ফেলার জন্য একটি ফাংশন ডিফাইন করুন।
(remove-language '("Common Lisp" "Racket" "Scheme"))
;; => '("Racket" "Scheme")
ভাষাগুলো এক এক করে গণনা করা অসুবিধাজনক। আপনার অ্যারেতে থাকা ভাষার সংখ্যা গণনা করার জন্য একটি ফাংশন ডিফাইন করুন।
(count-languages '("C#" "Racket" "Rust" "Ruby"))
;; => 4
একটি learning-list ফাংশন ডিফাইন করুন, যার ভেতরে আপনি উপরে ডিফাইন করা কিছু ফাংশন ব্যবহার করবেন।
একটি খালি অ্যারে তৈরি করুন
অ্যারেতে ২টি নতুন প্রোগ্রামিং ভাষা যোগ করুন।
অ্যারে থেকে "Lisp" সরিয়ে ফেলুন, কারণ বছরের জন্য আপনার যথেষ্ট সময় নাও থাকতে পারে, আর এটি Clojure-এর সাথে বেশ মিলও আছে।
অ্যারেতে আরও ২টি প্রোগ্রামিং ভাষা যোগ করুন।
মোট ভাষার সংখ্যা রিটার্ন করুন। ইঙ্গিত: এটি ৩ হওয়া উচিত।
(learning-list)
;; => 3
Exercism-এ সাইন আপ করুন, Clojure ট্র্যাকের 12টি কনসেপ্ট105টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।