Применение функции с несколькими входами, используя карту?(Haskell) - PullRequest
2 голосов
/ 16 мая 2010

Добрый день, ребята,

В настоящее время пытаюсь закончить небольшую домашнюю работу, над которой я работаю, и у меня возникла проблема, связанная с попыткой применить карту к функции, которая принимает несколько входных данных.

поэтому в случае, если я использую processList f (x: xs) = map accelerateList f xs x xs

processList присваивается плавающее значение (f) и список, который он сортирует в другой список

Ускорение List принимает плавающее значение (f) List и List Object, через которые он возвращает другой объект List

Я знаю, что мой код списка ускорения верен, но я не могу на всю жизнь получить синтаксис этого кода:

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

Есть идеи? Я почесал голову около 3 часов. Я знаю, что это действительно просто.

1 Ответ

5 голосов
/ 16 мая 2010

Сначала вы, возможно, захотите использовать здесь круглые скобки:

map accelerateList f xs x xs

Функция map принимает ровно два аргумента (не пять), поэтому вы должны сделать что-то вроде этого, например:

map (accelerateList f xs x) xs

Но, с другой стороны, это не соответствует вашим сигнатурам функций. Проблема, вероятно, в том, что вы не достаточно хорошо структурировали свое решение. Это может быть отдельный вопрос, но объяснение того, что вы пытаетесь выполнить с помощью ускоряющей функции (или какой из них когда-либо является «верхней»), безусловно, поможет.

...