2015-04-22 3 views
3

У меня есть 2 функцииИспользование карты с функцией

accelerate :: Float -> [Particle] -> [Particle] 
accelerateParticle :: Float -> Particle -> [Particle] -> Particle 

и то, что я пытаюсь достичь для каждого элемента в [Particle] применить функцию accelerateParticle. Проблема, с которой я столкнулся, заключается в том, что функция accelerateParticle основана на использовании оригинала [particle], который задается инициалом ускорения. Я думал, используя карту, как этот

map (\particle -> accelerateParticle Float particle [Particle]) [Particle]

, но я не очень уверен, что это правильный формат.

+0

Вопрос мне не ясен: 1. Вы говорите, что у вас есть две функции: «ускорить» и «ускорить частицу». У вас уже есть реализации этих функций с вами или вы хотите реализовать эти функции? 2. Вы говорите, что хотите применить функцию 'accelerateParticle' к каждому элементу в' [Particle] '. * Где * вы хотите это сделать? Вы пытаетесь реализовать третью функцию или пытаетесь реализовать одну из этих двух функций, используя другую? 3. Что такое «оригинальная' [particle] ', которая дается initally« ускорением »? Список, который «ускоряется», возвращается? –

ответ

6

Вы могли бы искать для этого:

accelerate :: Float -> [Particle] -> [Particle] 
accelerate x ps = map (\p -> accelerateParticle x p ps) ps 

Обратите внимание, что список всех частиц ps используется как для map над ним, и в качестве параметра accelerateParticle.

Смежные вопросы