مسیرها
/
Clojure
Clojure
/
تمرین‌ها
/
ترک روی ترک روی ترک
ترک روی ترک روی ترک

ترک روی ترک روی ترک

تمرین یادگیری

مقدمه

در Clojure، لیست‌ها یک مجموعه هستند، درست مانند لیست‌ها در زبان‌های دیگر. مشابه دیگر زبان‌های خانواده‌ی Lisp، Clojure از پرانتز برای بیان لیست‌ها استفاده می‌کند.

لیست‌های Clojure به یکی از دو روش ساخته می‌شوند. تابع list می‌تواند یک لیست بسازد، یا می‌توانید با quote یک لیست تحت‌اللفظی بنویسید.

لیست‌ها خاص‌اند چون Clojure با آن‌ها همچون فراخوانی رفتار می‌کند. انتظار دارد که فراخوانی با یک عملگر شروع شود، که معمولاً یک تابع است. بقیه‌ی عنصرهای لیست عملوند در نظر گرفته می‌شوند، یعنی به آرگومان‌های تابع تبدیل می‌شوند.

رفتار ویژه‌ی Clojure با لیست‌ها دلیل آن است که نمی‌توانیم مستقیماً یک لیست تحت‌اللفظی بسازیم. استفاده از quote یا شکل کوتاه آن ' برای یک لیست نشان می‌دهد که آن لیست نباید ارزیابی شود.

برخلاف برخی زبان‌های مدرن، لیست‌های Clojure ناهمگون هستند، یعنی می‌توانند چندین نوع عنصر را درون خود نگه دارند، مثلاً '(2 "a" "b" 3). برخلاف دیگر Lispها، یک لیست خالی در Clojure «درست» به شمار می‌آید و با nil یا false هم‌ارز نیست.

دستورالعمل‌ها

در این تمرین، کدی می‌نویسید که فهرستی از زبان‌های برنامه‌نویسی را که قصد دارید از پلتفرم Exercism تمرین کنید، پردازش می‌کند.

شش کار دارید.

1. یک فهرست جدید بسازید

پیش از آنکه بتوانید زبانی اضافه کنید، باید کار را با ساختن یک فهرست جدید شروع کنید. تابعی تعریف کنید که یک فهرست خالی برمی‌گرداند.

(new-list)
;; => ()

2. یک زبان جدید به فهرست اضافه کنید

وقتی Exercism را کاوش می‌کنید و زبان‌هایی را پیدا می‌کنید که می‌خواهید یاد بگیرید، باید بتوانید آن‌ها را به فهرستتان اضافه کنید. تابعی تعریف کنید که یک زبان جدید را به ابتدای فهرستتان اضافه کند.

(add-language '("Clojurescript") "JavaScript")
;; => '("JavaScript" "Clojurescript")

3. آخرین زبان اضافه‌شده را بررسی کنید

می‌خواهید به‌سرعت بررسی کنید کدام زبان را همین الان اضافه کرده‌اید. تابعی تعریف کنید که اولین زبان فهرستتان را برمی‌گرداند.

(first-language '("Haskell" "Python"))
;; => "Haskell"

4. اولین زبان را از فهرست حذف کنید

گاهی درباره‌ی زبانی که همین الان اضافه کرده‌اید نظرتان عوض می‌شود. تابعی تعریف کنید که اولین زبان را از فهرستتان حذف کند.

(remove-language '("Common Lisp" "Racket" "Scheme"))
;; => '("Racket" "Scheme")

5. زبان‌های فهرست را بشمارید

شمردن زبان‌ها یکی‌یکی کار دشواری است. تابعی تعریف کنید که تعداد زبان‌های فهرستتان را بشمارد.

(count-languages '("C#" "Racket" "Rust" "Ruby"))
;; => 4

6. همه را کنار هم بگذارید

تابعی به اسم learning-list تعریف کنید و در آن از برخی از توابعی که در بالا تعریف کردید استفاده کنید.

  • یک فهرست خالی بسازید.

  • ۲ زبان برنامه‌نویسی جدید به فهرست اضافه کنید.

    • «Clojure»
    • «Lisp»
  • «Lisp» را از فهرست حذف کنید، چون ممکن است امسال وقت کافی برایش نداشته باشید و شباهت زیادی به Clojure دارد.

  • ۲ زبان برنامه‌نویسی دیگر به فهرست اضافه کنید.

    • «Java»
    • «JavaScript»
  • تعداد کل زبان‌ها را برگردانید. راهنما: باید ۳ باشد.

(learning-list)
;; => 3
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Clojure Exercism

آماده‌اید ترک روی ترک روی ترک را شروع کنید؟

در Exercism ثبت‌نام کنید تا Clojure را همراه با 12 مفهوم105 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.