Dia*_*ana -2 haskell functional-programming
我正在尝试编写一个函数,它将接受 aString
和 aChar
并输出字符串中出现字符的索引。
stringCount str ch =
Input : "haskell is hard" `h`
Output:[0,11]
Input : "haskell is hard" `a`
Output:[1,12]
Run Code Online (Sandbox Code Playgroud)
请帮助我,我正在努力理解哈斯克尔。
有很多方法可以做到这一点,但既然你提到你是 Haskell 初学者,列表理解可能是最容易理解的(我假设这是家庭作业,所以你必须自己实现它,而不是使用elemIndices
):
stringCount str ch = [ y | (x, y) <- zip str [0..], x == ch ]
stringCount "haskell is hard" 'a'
-- [1,12]
stringCount "haskell is hard" 'h'
-- [0,11]
Run Code Online (Sandbox Code Playgroud)
在这里,我们是具有从 0 开始的无限列表的zip
字符串,生成元组等。然后,我们仅选择其中字符(绑定到)等于参数的元组,并返回每个元组的索引(绑定到)。str
('h', 0), ('a', 1), ('s', 2)
x
ch
y
如果您想保留当前的参数顺序但使用elementIndices
您可以使用以下命令:
stringCount' = flip elemIndices
stringCount' "haskell is hard" 'h'
-- [0,11]
Run Code Online (Sandbox Code Playgroud)