Xze*_*non 0 haskell functional-programming list
我目前有这段代码:
function string keys = map (xor 1) (map ord string)
Run Code Online (Sandbox Code Playgroud)
它从字符串中获取每个元素,并将xor与1一起使用.我想通过用键中的任何元素替换1来使地图函数更高级.
因此,举例来说,如果string == "Test"和keys = [1,3,6,9]我会得到:
'T' xor 1
'e' xor 3
's' xor 6
't' xor 9
Run Code Online (Sandbox Code Playgroud)
有没有办法迭代所有键的元素,以便我可以实现这一点?我对Haskell很新,我对它的概念没有很好的把握.
我解决这个问题的尝试是:
function string keys = map (iterate xor keys) (map ord string)
Run Code Online (Sandbox Code Playgroud)
但我得到了一些错误,我猜这是因为迭代功能.
任何帮助将不胜感激!
正如我发布的那样,我注意到iterate做了一个完全不同的事情,所以在这一点上我知道为什么它不起作用,但我不知道如何替换它.
您希望将列表中的一个元素与另一个列表中的一个元素相关联.这通常被称为拉链.在zipWith似乎做你想要什么:
Prelude Data.Bits> zipWith xor [1, 3, 5] [10, 23, 44]
[11,20,41]
Run Code Online (Sandbox Code Playgroud)
它需要一个a -> b -> c函数,一个[a]列表和一个[b]列表,并将函数元素与两个列表中的相应元素一起应用.
它是zip产生element(zip = zipWith (,))对的函数的推广.