я в настоящее время этот бит кода:Применить карту, используя другую функцию к каждому элементу списка
function string keys = map (xor 1) (map ord string)
Который берет каждый элемент из строки и XOR вот именно с 1. я хотел бы сделать map более продвинутый, заменив 1 на любой элемент из ключей.
Так, например, если string == "Test"
и keys = [1,3,6,9]
я хотел бы получить:
'T' xor 1
'e' xor 3
's' xor 6
't' xor 9
Есть ли способ для перебора всех элементов ключей, так что я могу добиться этого? Я довольно новичок в Haskell, и у меня нет хорошего понимания его концепций.
Моя попытка решить это:
function string keys = map (iterate xor keys) (map ord string)
, но я получил несколько ошибок, и я предполагаю, что это из-за функции итерации.
Любая помощь была бы принята с благодарностью!
Так же, как я писал, я заметил, что итерация делает совершенно другую вещь, поэтому на данный момент я знаю, почему это не работает, но я не знаю, как заменить его.
Большое вам спасибо, именно то, что я искал! Есть ли хорошее место, где я могу найти аналогичные функции, которые я мог бы изучить? Не обязательно функции, которые делают то же самое, но полезны для новичков. – Xzenon
@ Xzenon Вы можете использовать [hoogle] (https://www.haskell.org/hoogle/) для поиска функций по имени или типу. Например, в вашем случае вам нужно что-то с типом '(a -> a -> a) -> [a] -> [a] -> [a]', поиск объекта производит [эти результаты] (https: // www.haskell.org/hoogle/?hoogle=%28a+-%3E+a+-%3E+a%29+-%3E+[a]+-%3E+[a]+-%3E+[a]), и вы можете см. 'zipWith' тоже среди них. Также вы должны проверить модуль 'Prelude', чтобы увидеть наиболее полезные функции. – Bakuriu
'Data.List' - еще одно хорошее место для поиска. – dfeuer