المسارات
/
Clojure
Clojure
/
التمارين
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

تمرين تعلّمي

مقدمة

في 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"
  • اجعل الدالة تُرجع العدد الإجمالي للغات. تلميح: يجب أن يكون 3.

(learning-list)
;; => 3
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Clojure Exercism

مستعد لبدء Tracks on Tracks on Tracks؟

سجّل في Exercism لتتعلّم وتتقن Clojure عبر 12 مفهومًا105 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.