تطبيق وظيفة مع مدخلات متعددة باستخدام الخريطة؟ (هاسكل)

StackOverflow https://stackoverflow.com/questions/2843150

  •  27-09-2019
  •  | 
  •  

سؤال

شباب يوم ،

في محاولة حاليًا الانتهاء من بعض الواجبات المنزلية التي أعمل عليها ، ووجود مشكلة حيث أحاول تطبيق الخريطة عبر وظيفة تقبل مدخلات متعددة.

لذلك في الحالة ، أستخدم قائمة المعالجة F (x: xs) = Acceleratelist f xs x xs

يتم إعطاء قائمة المعالجة قيمة عائمة (و) وقائمة تصفها في قائمة أخرى

تأخذ قائمة التسريع قيمة عائمة (و) قائمة وكائن قائمة يرجع من خلاله إرجاع كائن قائمة آخر

أعلم أن رمز قائمة التسريع الخاص بي صحيح ، لكن لا يمكنني الحصول على بناء الجملة لهذا الرمز العاملة:

processList :: Float -> [Object] -> [Object]
accelerate f [] = []
accelerate f [x] = [(accelerateForce f x x)]
accelerate f (x:xs) = map accelerateList f xs x xs

أيه أفكار؟ لقد كنت أخدش رأسي لمدة 3 ساعات الآن. أعلم أنه شيء هل حقا بسيط.

هل كانت مفيدة؟

المحلول

من المحتمل أن ترغب أولاً في استخدام بعض الأقواس هنا:

map accelerateList f xs x xs

الوظيفة map تأخذ وسيطتين بالضبط (وليس خمسة) ، لذلك يجب عليك فعل شيء كهذا على سبيل المثال:

map (accelerateList f xs x) xs

ولكن من ناحية أخرى ، لا يتناسب هذا مع توقيعات وظيفتك. ربما تكون المشكلة أنك لم تنظم الحل الخاص بك بطريقة جيدة بما فيه الكفاية. قد يكون سؤالًا منفصلاً ، لكن شرح ما تحاول تحقيقه من خلال الوظيفة المتسارعة (أو أي واحد هو "أعلى") سيساعد بالتأكيد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top