map

تُستخدم map في Scheme لتطبيق إجراء على كل عنصر في قائمة (أو قوائم متعددة) وإرجاع قائمة جديدة بالنتائج. هذا يجعلها مثالية لتحويل البيانات.

أبسط شكل لـ map:

(map procedure list)
  • procedure: دالة تُطبَّق على كل عنصر في القائمة.
  • list: القائمة التي تُحوَّل عناصرها.

مثال: مضاعفة كل عنصر

(define (double x)
  (* x 2))

(map double (list 1 2 3 4))
  • هنا، تُطبَّق double على كل عنصر في (1 2 3 4).
  • النتيجة قائمة جديدة بمضاعفة كل عنصر.

الإخراج: (2 4 6 8)


كيف يعمل

  1. إنشاء قائمة جديدة:

    • map يطبّق الإجراء على كل عنصر ويجمع النتائج في قائمة جديدة.
  2. تحويل البيانات:

    • يُستخدم أساسًا للتحويلات لا لتنفيذ الآثار الجانبية.

مثال: الاستخدام مع قوائم متعددة

إذا وُفّرت قوائم متعددة، يعالج map العناصر المقابلة من كل قائمة.

(define (sum x y)
  (+ x y))

(map sum (list 1 2 3) (list 4 5 6))
  • sum تجمع العناصر المقابلة من القائمتين وتُرجع النتائج كقائمة جديدة.

الإخراج: (5 7 9)


ملخص

  • map أداة قوية لتحويل القوائم بتطبيق إجراء على كل عنصر.
  • على عكس for-each، map يُنتج قائمة جديدة بنتائج تطبيق الإجراء.
  • يدعم قوائم متعددة، ما يتيح عمليات عنصر-بعنصر عبرها.

باستخدام map، يمكنك إنشاء نسخ محوّلة من بياناتك بكفاءة مع الإبقاء على القوائم الأصلية دون تغيير.