تُعرَّف القيمة الثابتة بـ name = expression، وفي Elm يكون كل شيء تعبيرًا ما عدا التعريفات.
five = 5
six = 3 + 3
تُعرَّف الدوال بـ name parameters... = expression، وتُفصل المعاملات بمسافة فقط.
add number1 number2 = number1 + number2
استدعاء دالة هو أيضًا تعبير، ويتم بتحديد اسم الدالة وتمرير الوسائط لكل معامل من معاملاتها، مفصولة بمسافة، تمامًا كما في تعريف الدالة.
five = add 2 3
يمكن استخدام الأقواس الهلالية لتحديد ترتيب تقييم التعبير.
six = add 2 (1 * 4)
twelve = add 2 1 * 4
لا يستخدم Elm علامات نحوية مثل الأقواس المعقوفة أو الأقواس الهلالية أو الفواصل المنقوطة لتحديد حدود الكود. بل يستخدم المسافات البيضاء والإزاحة بدلًا منها.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
number1 + number2
https://elmprogramming.com/indentation.html
كل ملف في Elm هو وحدة، ويجب أن يحتوي على عبارة module قبل كل الكود الآخر.
يجب أن تتطابق أسماء الوحدات مع أسماء ملفاتها، لذا يجب أن تكون الوحدة Calculator في الملف Calculator.elm.
وكل ما يُعرَّف داخل وحدة يكون نطاقه خاصًا بها
ولا يمكن الوصول إليه من خارج هذه الوحدة، إلا إذا ذُكر في exposing.
-- Define the Calculator module, and expose the `add` function
module Calculator exposing (add)
six = 3 + 3
add number1 number2 = number1 + number2
-- Define the Calculator module, and expose everything within: `six` and `add`
module Calculator exposing (..)
six = 3 + 3
add number1 number2 = number1 + number2
https://elm-lang.org/docs/syntax#modules
التعليق نص داخل ملف Elm لا يُفسَّر ككود.
والغرض منه أساسًا أن تقرأه أنت ومبرمجون آخرون.
توجد صيغة بسيطة للتعليقات أحادية السطر، تعتمد على الشرطتين المتصلتين.
كما يمكن كتابة تعليقات متعددة الأسطر باستخدام الزوجين {- و -} من المحددات الافتتاحية والختامية.
-- a single line comment
-- another single line comment
{- a multiline comment
spawning multiple lines
-}
يوجد دليل الأسلوب، ويمكن استخدام elm-format لتنسيق الكود تلقائيًا.
في هذا التمرين ستكتب بعض الكود لمساعدتك في طهي لازانيا رائعة من كتاب الوصفات المفضل لديك.
لديك ثلاث مهام، وكلها تتعلق بالوقت المستغرق في طهي اللازانيا.
عرّف expectedMinutesInOven لحساب عدد الدقائق التي ينبغي أن تبقى فيها اللازانيا في الفرن. وفقًا لكتاب الوصفات، زمن الفرن المتوقع بالدقائق هو 40:
expectedMinutesInOven
--> 40
عرّف preparationTimeInMinutes التي تأخذ عدد طبقات اللازانيا كمعامل وتُرجع عدد الدقائق اللازمة لتحضير اللازانيا، بافتراض أن كل طبقة تستغرق 2 دقائق للتحضير.
preparationTimeInMinutes 3
--> 6
عرّف الدالة elapsedTimeInMinutes التي تأخذ معاملين: المعامل الأول هو عدد طبقات اللازانيا، والمعامل الثاني هو عدد الدقائق التي قضتها اللازانيا في الفرن. ينبغي أن تُرجع الدالة عدد الدقائق التي عملت فيها على طهي اللازانيا، وهو مجموع زمن التحضير بالدقائق والوقت بالدقائق الذي قضته اللازانيا في الفرن في تلك اللحظة.
elapsedTimeInMinutes 3 20
--> 26
سجّل في Exercism لتتعلّم وتتقن Elm عبر 28 مفهومًا110 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.