تخطَّ إلى المحتوى

المدمجات

منقول من الكتاب المرجعي: docs/handbook/stdlib/builtins.md · الإيداع 7a52f6c

مولَّدة من builtin_funcs.BUILTINS بـscripts/gen_handbook.py؛ لا تُحرَّر باليد. المدمجة لا تحتاج استيراداً. كل مثال يُشغَّل في tests/test_docs.py. الأخطاء المذكورة لكل مدمجة هي رسائل مصدرها (الفهرس: فهرس رسائل الأخطاء والتحذيرات).

الصيغة: احجز(نوع, عدد[, المخصص])

يحجز كتلة من عناصر متجاورة مصفَّرة ويرجع شريحة عليها (فهرستها بفحص حدود)؛ من المخصص إن مُرّر وإلا من الافتراضي، وتُحرَّر بـ حرر(الشريحة[, المخصص])

مثال
ش = احجز(عدد32, 3)
ش[0] = 7
اطبع(ش, " ", طول(ش))
حرر(ش)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[7, 0, 0] 3

الصيغة: احجز_خام(نوع, عدد[, المخصص])

يحجز كتلة ويرجع مؤشراً إلى أولها، فهرسته بلا فحص حدود (داخل خطر)؛ تُحرَّر بـ حرر(المؤشر[, المخصص])

مثال
خطر:
م = احجز_خام(عدد, 2)
م[1] = 5
اطبع(م[0] + م[1])
حرر(م)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
5

الصيغة: احذف(القاموس, المفتاح) أو احذف(القائمة, الموضع)

يحذف مفتاحاً من القاموس (خطأ تشغيل إن لم يكن موجوداً)، أو العنصر رقم الموضع من القائمة (خارجها خطأ تشغيل)

مثال
ق = {"ا": 1, "ب": 2}
احذف(ق, "ا")
ل = [10, 20, 30]
احذف(ل, 1)
اطبع(ق, " ", ل)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
{ب: 2} [10, 30]

الصيغة: ادرج(القائمة, الموضع, القيمة)

يدرج القيمة قبل العنصر رقم الموضع (من 0 إلى طول القائمة؛ الطول يعني آخرها كـ اضف)

أخطاؤها:

  • موضع الإدراج %lld خارج القائمة (من 0 إلى %lld)
مثال
ق = [1, 3]
ادرج(ق, 1, 2)
ادرج(ق, 3, 4)
اطبع(ق)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[1, 2, 3, 4]

الصيغة: استبدال(النص, القديم, الجديد[, المخصص])

يستبدل كل ظهور للنص القديم بالجديد

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • النص المطلوب استبداله في ‘استبدال’ لا يمكن أن يكون فارغاً
مثال
اطبع(استبدال("قطة وقطة", "قطة", "كلب"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
كلب وكلب

الصيغة: اضف(القائمة, القيمة)

يضيف قيمة إلى نهاية القائمة

أخطاؤها:

  • ‘اضف’ تعمل مع القوائم فقط لكن وُجد النوع ‘…’
  • ‘اضف’ تعمل مع القوائم فقط لكن … من النوع ‘…’
  • لا يمكن إضافة عنصر إلى المصفوفة … لأن حجمها ثابت
  • لا يمكن استخدام ‘اضف’ مع القاموس …
مثال
ق = [1]
اضف(ق, 2)
اطبع(ق)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[1, 2]

الصيغة: اطبع(قيمة, قيمة, ...)

يطبع القيم متتالية بلا فاصل ثم سطراً جديداً

مثال
اطبع("س = ", 3, " ", [1, 2], " ", صواب)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
س = 3 [1, 2] صواب

الصيغة: اعد(المخصص)

ينهي ساحة (يعيد كل كتلها إلى أصلها) أو كاشفاً (يبلّغ عمّا لم يُحرَّر)؛ لا يُستعمل المخصص بعدها

أخطاؤها:

  • المخصص أُعيد بـ ‘اعد’ من قبل
  • النظام والافتراضي لا يُعادان: ‘اعد’ للساحة والكاشف
مثال
ساحه = ساحة(الافتراضي)
ق = قائمة_من([1, 2], ساحه)
اطبع(طول(ق))
اعد(ساحه)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
2

الصيغة: اعكس(القائمة)

يعكس ترتيب عناصر القائمة في مكانها

مثال
ق = [1, 2, 3]
اعكس(ق)
اطبع(ق)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[3, 2, 1]

الصيغة: اقرأ() أو اقرأ("رسالة", قيمة, ...)

صيغ أخرى للاسم: اقرا

يقرأ سطراً من إدخال المستخدم (بعد عرض رسالة اختيارية)

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • الوسيط رقم … لـ ‘…’ من النوع ‘…’ ولا يمكن وضعه في رسالة
مثال
س = اقرأ()
اطبع("[", س, "]")
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[]

الصيغة: انتهى_الدخل()

هل انتهى الإدخال القياسي (فلا سطر آخر تقرؤه اقرأ)؟

مثال
اسطر = 0
طالما صواب:
اذا انتهى_الدخل():
توقف
س = اقرأ()
اسطر += 1
اطبع("اسطر: ", اسطر)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
اسطر: 0

الصيغة: بحث(النص, الجزء) أو بحث(القائمة, القيمة)

موضع أول ظهور للجزء في النص (بعدد الأحرف، من 0)، أو فهرس أول عنصر يساوي القيمة في القائمة؛ -1 إن لم يوجد

مثال
اطبع(بحث("مرحبا بالعالم", "بال"), " ", بحث([5, 7, 9], 9), " ", بحث([1], 4))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
6 2 -1

الصيغة: تقسيم(النص, الفاصل[, المخصص])

يقسّم النص عند كل ظهور للفاصل إلى قائمة نصوص

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • فاصل ‘تقسيم’ لا يمكن أن يكون نصاً فارغاً
مثال
اطبع(تقسيم("ا,ب,,ج", ","))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[ا, ب, , ج]

الصيغة: جديد(القيمة[, المخصص])

يحجز خانة جديدة على الكومة فيها القيمة ويرجع مؤشراً إليها (من المخصص إن مُرّر، وإلا من الافتراضي)

مثال
م = جديد(41)
اطبع(محتوى(م) + 1)
حرر(م)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
42

الصيغة: جزء(النص, البداية, النهاية) أو جزء(النص, البداية)

جزء من النص (بعدد الأحرف) عرضاً على بايتاته نفسها، بلا حجز ولا نسخ (0.7.0)؛ يعيش ما عاش النص الأصل، ولا يُحرَّر

مثال
ن = "مرحبا بالعالم"
اطبع(جزء(ن, 6), "|", جزء(ن, 0, 5))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
بالعالم|مرحبا

الصيغة: حاول_احجز(نوع, عدد[, المخصص])

مثل احجز، لكنه يرجع !شريحة: خطأ.لا_ذاكرة إن تعذّر الحجز بدل خطأ التشغيل

مثال
ش = حاول_احجز(عدد, 4) والا خ:
خطا_قاتل("لا ذاكرة")
اطبع(طول(ش))
حرر(ش)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
4

الصيغة: حجم_النوع(نوع)

عدد البايتات التي يأخذها عنصر من هذا النوع في كتلة أو شريحة

مثال
اطبع(حجم_النوع(عدد), " ", حجم_النوع(عدد32), " ", حجم_النوع(بايت))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
8 4 1

الصيغة: حرر(المؤشر[, المخصص])

يحرر الخانة التي يشير إليها المؤشر ويجعل المؤشر لاشيء (بالمخصص الذي حجزها؛ المتروك الافتراضي)

أخطاؤها:

  • لا يمكن تحرير الثابت ‘…’: ‘حرر’ يجعل المؤشر لاشيء وهذا تعديل للثابت
مثال
م = جديد(1)
حرر(م)
اطبع(م == لاشيء)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب

الصيغة: حروف_صغيرة(النص[, المخصص])

يحوّل الحروف اللاتينية إلى صغيرة

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

مثال
اطبع(حروف_صغيرة("MEEM ميم"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
meem ميم

الصيغة: حروف_كبيرة(النص[, المخصص])

يحوّل الحروف اللاتينية إلى كبيرة

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

مثال
اطبع(حروف_كبيرة("Meem ميم"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
MEEM ميم

الصيغة: حوّل(قيمة, نوع)

صيغ أخرى للاسم: حول

يعيد تفسير مؤشر أو شريحة بنوع آخر: مؤشر[ا] إلى مؤشر[ب] أو مؤشر_خام، شريحة[ا] إلى شريحة[ب] (داخل خطر)

أخطاؤها:

  • حوّل: حجم الشريحة %lld بايتاً لا ينقسم على حجم العنصر الجديد %lld
  • لا تحويل من ‘…’ إلى ‘…’
مثال
خطر:
م = احجز_خام(طبيعي8, 8)
م[0] = 1
ع = حوّل(م, مؤشر[عدد])
اطبع(ع[0])
حرر(م)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
1

الصيغة: خطا_قاتل(الرسالة)

ينهي البرنامج بخطأ تشغيل (رمز الخروج 3) برسالته: لخطأ المبرمج الذي لا يُكمَل بعده

مثال
اطبع("قبل")
خطا_قاتل("توقف هنا")
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
قبل
[خطأ تشغيل] سطر 2:1 - توقف هنا  خطا_قاتل("توقف هنا")

رمز الخروج: 3

الصيغة: دمج(قائمة_النصوص, الفاصل[, المخصص])

يدمج قائمة نصوص في نص واحد يفصل بينها الفاصل

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • الوسيط رقم 1 لـ ‘دمج’ يجب أن يكون قائمة نصوص لكن وُجد النوع ‘…’
مثال
اطبع(دمج(["ا", "ب", "ج"], " - "))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
ا - ب - ج

الصيغة: دمج_نصوص(قطعة, قطعة, ...[, المخصص])

يبني نصاً جديداً من قيم مفردة (نصوص وأعداد وكسور ومنطقي ورموز) كما يدمجها ‘+’، من المخصص إن مُرّر وإلا من الافتراضي (0.7.0)

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • الوسيط رقم … لـ ‘دمج_نصوص’ من النوع ‘…’ ولا يُدمج في نص
مثال
ن = دمج_نصوص("س = ", 3, "، ص = ", 4.5)
اطبع(ن)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
س = 3، ص = 4.5

الصيغة: رتب(القائمة)

يرتّب قائمة أعداد أو كسور أو نصوص تصاعدياً في مكانها. الكسر ليس_عدداً في الآخر؛ النصوص بترتيب نقاط الترميز (لا ترتيب معجمي عربي)

أخطاؤها:

  • ‘رتب’ على قائمة عناصرها ‘…’ غير مدعومة
مثال
ق = [3, 1, 2]
رتب(ق)
ن = ["ب", "ا"]
رتب(ن)
اطبع(ق, " ", ن)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[1, 2, 3] [ا, ب]

الصيغة: رتب_ب(القائمة, قبل)

يرتّب القائمة في مكانها بمقارن: قبل(ا, ب) صواب إن كان ا قبل ب. ترتيب مستقر (المتساويان يبقيان بترتيبهما)، ولأي نوع عناصر (منذ 0.8.0)

أخطاؤها:

  • مقارن ‘رتب_ب’ من النوع ‘…’ لكن وُجد ‘…’
مثال
هيكل شخص:
اسم نص
عمر عدد
داله اصغر(ا شخص, ب شخص) منطقي:
ارجع ا.عمر < ب.عمر
ن = [شخص("علي", 30), شخص("منى", 25), شخص("سارة", 30)]
رتب_ب(ن, اصغر)
لكل ش في ن:
اطبع(ش.اسم, " ", ش.عمر)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
منى 25علي 30سارة 30

الصيغة: ساحة(الاصل)

مخصص يأخذ كتلاً من أصله ويحجز منها بالتتابع؛ اعد(س) يعيدها كلها دفعة واحدة (حرر وحده لا يعيد شيئاً)

مثال
ساحه = ساحة(الافتراضي)
خاتمه اعد(ساحه)
ق = تقسيم("ا ب ج", " ", ساحه)
اطبع(ق)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[ا, ب, ج]

الصيغة: شريحة(مؤشر, الطول)

شريحة فوق كتلة: مؤشر وطول، لا تملك الكتلة؛ فهرستها بفحص حدود (تُنشأ داخل خطر)

أخطاؤها:

  • ‘شريحة’ تأخذ مؤشراً إلى كتلة لكن وُجد ‘…’
  • الشريحة أطول من كتلتها: طولها %lld عنصراً والكتلة %lld بايتاً
  • طول الشريحة %lld سالب
  • طول الشريحة عدد صحيح لا ‘…’
مثال
خطر:
م = احجز_خام(عدد, 3)
ش = شريحة(م, 3)
ش[2] = 9
اطبع(ش)
حرر(م)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[0, 0, 9]

الصيغة: شريحة_خام(مؤشر_خام, نوع, الطول)

شريحة فوق ذاكرة جاءت من مكتبة C (داخل خطر؛ الطول على مسؤولية كاتبها)

أخطاؤها:

  • ‘شريحة_خام’ تأخذ مؤشر_خام لكن وُجد ‘…’
  • شريحة_خام: طول سالب، أو مؤشر لاشيء بطول %lld
مثال
خارجي داله نسخة(ن نص) مؤشر_خام باسم "strdup"
خارجي داله احرر_c(م مؤشر_خام) فراغ باسم "free"
خام = نسخة("abc")
خطر:
ش = شريحة_خام(خام, بايت, 3)
اطبع(ش)
احرر_c(خام)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[97, 98, 99]

الصيغة: طبيعي16(قيمة)

القيمة كما يخزّنها ‘طبيعي16’، ناتجها عدد؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
اطبع(طبيعي16(65535))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
65535

الصيغة: طبيعي32(قيمة)

القيمة كما يخزّنها ‘طبيعي32’، ناتجها عدد؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
اطبع(طبيعي32(4000000000))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
4000000000

الصيغة: طبيعي64(قيمة)

القيمة كما يخزّنها ‘طبيعي64’، ناتجها عدد؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
اطبع(طبيعي64(9223372036854775807))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
9223372036854775807

الصيغة: طبيعي8(قيمة)

صيغ أخرى للاسم: بايت

القيمة كما يخزّنها ‘طبيعي8’، ناتجها عدد؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
خطر:
اطبع(بلا_فحص طبيعي8(256 + 7))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
7

الصيغة: طول(المجموعة)

عدد عناصر قائمة أو مصفوفة أو قاموس، أو عدد أحرف نص

أخطاؤها:

  • دالة ‘طول’ تعمل فقط مع القوائم والمصفوفات والقواميس والنصوص لكن وُجد النوع ‘…’
  • دالة ‘طول’ لا تعمل مع النوع ‘…’
مثال
اطبع(طول("مرحبا"), " ", طول([1, 2, 3]), " ", طول({"ا": 1}))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
5 3 1

الصيغة: عدد(القيمة)

يحوّل كسراً أو قيمة منطقية إلى عدد صحيح، ونصاً إلى !عدد (خطأ.صيغة_خاطئة لنص ليس عدداً، وخطأ.خارج_المدى لعدد لا يتسع في 64 بتاً)

أخطاؤها:

  • لا يمكن تحويل الكسر %s إلى عدد: خارج مدى الأعداد الصحيحة أو ليس عدداً
  • لا يمكن تحويل النوع ‘…’ إلى عدد
مثال
اطبع((عدد("42") والا 0) + 1, " ", عدد("س") والا -1, " ", عدد(3.9), " ", عدد(-3.9))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
43 -1 3 -3

الصيغة: عدد16(قيمة)

القيمة كما يخزّنها ‘عدد16’، ناتجها عدد؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
اطبع(عدد16(-30000))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
-30000

الصيغة: عدد32(قيمة)

القيمة كما يخزّنها ‘عدد32’، ناتجها عدد؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
اطبع(عدد32(2000000000))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
2000000000

الصيغة: عدد8(قيمة)

القيمة كما يخزّنها ‘عدد8’، ناتجها عدد؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
اطبع(عدد8(100), " ", طبيعي8(255))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
100 255

الصيغة: قائمة_من(القائمة, المخصص)

قائمة جديدة من المخصص بعناصر القائمة نفسها (نسخة مستوى واحد: الحاويات والنصوص فيها مشتركة)؛ تكبر من مخصصها وتُحرَّر بـ حرر (0.7.0)

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • ‘قائمة_من’ تأخذ قائمة لا ‘…’
مثال
ساحه = ساحة(الافتراضي)
ق = قائمة_من([1, 2, 3], ساحه)
اطبع(ق)
اعد(ساحه)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[1, 2, 3]

الصيغة: قص(النص, البداية, النهاية[, المخصص]) أو قص(النص, البداية)

جزء من النص من البداية إلى ما قبل النهاية (بعدد الأحرف)

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

مثال
اطبع(قص("مرحبا بالعالم", 0, 5), "|", قص("مرحبا", 2))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
مرحبا|حبا

الصيغة: قص_الفراغات(النص)

النص بلا فراغات في أوله وآخره (المسافة و\t و\n و\r و\v و\f)، عرضاً على بايتاته نفسها بلا حجز (كـ جزء)

مثال
اطبع("[", قص_الفراغات(" نص \n"), "]")
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[نص]

الصيغة: قطعة(شريحة, من, الى)

جزء من شريحة: من الفهرس «من» إلى ما قبل «الى»، على الذاكرة نفسها (بفحص الحدود)

أخطاؤها:

  • ‘قطعة’ تأخذ شريحة لكن وُجد ‘…’
  • القطعة من %lld إلى %lld خارج الشريحة (طولها %lld)
  • حدّا القطعة عددان صحيحان لا ‘…’
مثال
ش = احجز(عدد, 5)
ش[3] = 3
اطبع(قطعة(ش, 2, 4))
حرر(ش)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[0, 3]

الصيغة: قيم(القاموس[, المخصص])

قائمة جديدة بقيم القاموس بترتيب الإدراج، من المخصص (المتروك الافتراضي)؛ القيم نفسها لا نُسخ (قائمة في القاموس هي القائمة نفسها)

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

مثال
ق = {"ا": 1, "ب": 2}
اطبع(قيم(ق))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[1, 2]

الصيغة: كاشف(الاصل)

مخصص يلفّ أصله ويسجّل كل كتلة: يكشف التحرير المزدوج والتحرير بمخصص آخر، ويبلّغ عمّا لم يُحرَّر عند اعد أو عند نهاية البرنامج

مثال
ك = كاشف(الافتراضي)
م = جديد(1, ك)
حرر(م, ك)
اعد(ك)
اطبع("لا تسريب")
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
لا تسريب

الصيغة: كسر(القيمة)

يحوّل عدداً إلى كسر، ونصاً إلى !كسر (خطأ.صيغة_خاطئة لنص ليس كسراً، وخطأ.خارج_المدى لكسر لا يتسع مثل 1e400)

أخطاؤها:

  • لا يمكن تحويل النوع ‘…’ إلى كسر
مثال
اطبع((كسر("2.5") والا 0.0) * 2, " ", كسر(3))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
5.0 3.0

الصيغة: كسر32(قيمة)

القيمة كما يخزّنها ‘كسر32’، ناتجها كسر؛ خارج مداه خطأ تشغيل، وداخل بلا_فحص تلتف

مثال
اطبع(كسر32(0.1))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
0.10000000149011612

الصيغة: محتوى(المؤشر)

الخانة التي يشير إليها المؤشر: تُقرأ ويُسند إليها (محتوى(م) = قيمة)

مثال
م = جديد("نص")
اطبع(محتوى(م))
حرر(م)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
نص

الصيغة: مخزن_ثابت(شريحة_بايتات)

مخصص يحجز بالتتابع من بايتات شريحة معطاة، بلا نظام؛ الحجز منه بعد امتلائه خطأ تشغيل (أو لاشيء مع حاول_احجز). حرر به لا يعيد شيئاً

أخطاؤها:

  • ‘مخزن_ثابت’ يأخذ شريحة[بايت] لا ‘…’
مثال
خطر:
خام = احجز(بايت, 256)
م = مخزن_ثابت(خام)
خ = جديد(7, م)
اطبع(محتوى(خ))
اعد(م)
حرر(خام)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
7

الصيغة: لكل ع في مدى(النهاية): أو مدى(البداية, النهاية) أو مدى(البداية, النهاية, الخطوة)

أعداد متتالية لحلقة لكل، من البداية إلى ما قبل النهاية

أخطاؤها:

  • ‘مدى’ تُستخدم فقط في رأس حلقة ‘لكل’
  • حدود ‘مدى’ يجب أن تكون أعداداً صحيحة لكن وُجد النوع ‘…’
  • خطوة ‘مدى’ لا يمكن أن تكون صفراً
مثال
لكل ع في مدى(0, 3):
اطبع(ع)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
012

الصيغة: مفاتيح(القاموس[, المخصص])

قائمة جديدة بمفاتيح القاموس بترتيب الإدراج، من المخصص (المتروك الافتراضي)؛ المفاتيح النصية نُسخ

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

مثال
ق = {"ا": 1, "ب": 2}
اطبع(مفاتيح(ق))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[ا, ب]

الصيغة: من_نص_سي(خ)

نص يعرض بايتات نص_سي بلا نسخ، طوله حتى أول صفر (داخل خطر)؛ يبقى صالحاً ما بقيت الذاكرة. نص_سي قيمته لاشيء يعطي لاشيء

أخطاؤها:

  • ‘من_نص_سي’ تأخذ نص_سي (مؤشر[طبيعي8]) لكن وُجد ‘…’
مثال
خ = نص_سي("سي")
خطر:
اطبع(طول(من_نص_سي(خ)))
حرر(خ)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
2

الصيغة: نسخ(القيمة[, المخصص])

نسخة عميقة مستقلة من قائمة أو قاموس أو هيكل أو مصفوفة (بكل ما بداخلها من حاويات)، من المخصص إن مُرّر وإلا من الافتراضي؛ النصوص فيها مشتركة لا تُنسخ

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • ‘نسخ’ تعمل مع القوائم والقواميس والهياكل والمصفوفات لكن وُجد النوع ‘…’
  • ‘نسخ’ لا تعمل مع النوع ‘…’
مثال
ا = [[1], [2]]
ب = نسخ(ا)
اضف(ب[0], 9)
اطبع(ا, " ", ب)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[[1], [2]] [[1, 9], [2]]

الصيغة: نص(القيمة[, المخصص])

يحوّل قيمة مفردة (عدد، كسر، منطقي، رمز، لاشيء) إلى نص؛ النص يبقى كما هو

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • لا يمكن تحويل … إلى نص
مثال
اطبع(نص(12) + نص(0.5) + نص(صواب))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
120.5صواب

الصيغة: نص_سي(النص[, المخصص])

نسخة من النص منتهية بصفر لدوال C (char *، النوع نص_سي)، تُحجز من المخصص إن مُرّر وإلا من الافتراضي؛ تُحرَّر بـ حرر(خ[, المخصص])

المخصص الأخير اختياري (يُعرف بنوعه): ما تبنيه يُحجز منه، وإلا من الافتراضي.

أخطاؤها:

  • ‘نص_سي’ تأخذ نصاً لكن وُجد ‘…’
  • ‘نص_سي’ على نص قيمته لاشيء (تحقق منه أولاً: س != لاشيء)
مثال
خ = نص_سي("ميم")
خطر:
اطبع(من_نص_سي(خ), " ", خ[0])
حرر(خ)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
ميم 217

الصيغة: يبدأ_بـ(النص, البادئة)

هل يبدأ النص بالبادئة؟ (البادئة الفارغة: صواب)

مثال
اطبع(يبدأ_بـ("مرحبا", "مر"), " ", يبدأ_بـ("مرحبا", "حبا"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب خطاء

الصيغة: يحوي(النص, الجزء) أو يحوي(القائمة, القيمة) أو يحوي(القاموس, المفتاح)

هل يظهر الجزء في النص، أو القيمة في القائمة، أو المفتاح في القاموس (كـ يوجد)؟

مثال
اطبع(يحوي("ميم", "ي"), " ", يحوي([1, 2], 3), " ", يحوي({"ا": 1}, "ا"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب خطاء صواب

الصيغة: ينتهي_بـ(النص, اللاحقة)

هل ينتهي النص باللاحقة؟ (اللاحقة الفارغة: صواب)

مثال
اطبع(ينتهي_بـ("ملف.txt", ".txt"), " ", ينتهي_بـ("ملف.txt", ".م"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب خطاء

الصيغة: يوجد(القاموس, المفتاح)

هل المفتاح موجود في القاموس؟

مثال
ق = {"ا": 1}
اطبع(يوجد(ق, "ا"), " ", يوجد(ق, "ب"))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
صواب خطاء