المصفوفة List في Elm هي مجموعة غير قابلة للتغيير من صفر أو أكثر من القيم من النوع نفسه.
يمكن تعريف المصفوفات على النحو التالي:
empty = []
singleValue = [ 5 ]
threeValues = [ "a", "b", "c" ]
أكثر الأساليب شيوعًا لإضافة عنصر إلى مصفوفة هو استخدام العامل :: (cons):
twoToFour = [ 2, 3, 4 ]
oneToFour = 1 :: twoToFour --> [ 1, 2, 3, 4 ]
يتم التعامل مع المصفوفات بواسطة دوال وعوامل معرَّفة في وحدة List أو عبر مطابقة الأنماط
describe : List String -> String
describe list =
case list of
[] ->
"Empty list"
[ "hello" ] ->
"Singleton list with: hello"
x :: xs ->
"Non-empty list with head: " ++ x
describe [] --> "Empty list"
describe [ "hello" ] --> "Singleton list with: hello"
describe [ "hello", "world" ] --> "Non-empty list with head: hello"
في هذا التمرين ستكتب كودًا لتتبّع مصفوفة لغات البرمجة التي تريد تعلّمها على Exercism. لديك ست مهام، وكلها ستتضمن التعامل مع المصفوفات.
لتتبّع اللغات التي تريد تعلّمها، ستحتاج إلى إنشاء مصفوفة جديدة.
عرّف الثابت newList الذي يحتوي على مصفوفة جديدة فارغة.
newList
--> []
حاليًا، لديك ورقة مكتوب عليها اللغات التي تريد تعلّمها: Elm وClojure وHaskell.
عرّف الثابت existingList لتمثيل هذه المصفوفة.
existingList
--> [ "Elm", "Clojure", "Haskell" ]
بينما تستكشف Exercism وتجد لغات أكثر إثارة للاهتمام، تريد إضافتها إلى مصفوفتك.
نفّذ الدالة addLanguage لإضافة لغة جديدة إلى بداية مصفوفتك.
addLanguage "TypeScript" [ "JavaScript", "CoffeeScript" ]
--> [ "TypeScript", "JavaScript", "CoffeeScript" ]
عدّ اللغات يدويًا أمر غير مريح.
نفّذ الدالة countLanguages لعدّ عدد اللغات في مصفوفتك.
countLanguages [ "C#", "Racket", "Rust", "Ruby" ]
--> 4
في مرحلة ما، تدرك أن ترتيب مصفوفتك معكوس فعلًا!
نفّذ الدالة reverseList لعكس ترتيب مصفوفتك.
reverseList [ "Prolog", "C", "Idris", "Assembly" ]
--> [ "Assembly", "Idris", "C", "Prolog" ]
رغم أنك تحب جميع اللغات، فإن Elm له مكانة خاصة في قلبك. لذلك، تتحمس كثيرًا لمصفوفة لغات إذا:
نفّذ الدالة excitingList للتحقق مما إذا كانت مصفوفة اللغات مثيرة:
excitingList [ "Nim", "Elm" ]
--> True
سجّل في Exercism لتتعلّم وتتقن Elm عبر 28 مفهومًا110 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.