Применение функции с несколькими входами с помощью карты? (Haskell)
Вопрос
G'day ребята,
Попытка в настоящее время, чтобы закончить немного домашней работы, над которым я работаю, и имея проблему, в которой я пытаюсь настроить карту через функцию, которая принимает несколько входов.
так что в случае, если я использую PlaceList F (X: XS) = карта AccelerateList F XS X XS
ProcessList предоставляется плавающее значение (F) и список, который он сортирует в другой список
Ускоренный список принимает плавающее значение (F) список и объект списка, через который он возвращает другой объект списка
Я знаю, что мой ускорительный код списка правильный, но я не могу за жизнью меня получить синтаксис для этого кода:
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
Но с другой стороны, это не подходит с вашими функциональными подписями. Проблема, вероятно, в том, что вы не структурировали ваше решение достаточно хорошего способа. Может быть отдельным вопросом, но объяснение того, что вы пытаетесь выполнить с ускорением-функцией (или которые когда-либо - это «верхний» один), безусловно, поможет.