我必须以两种方式在Haskell中实现sum函数.一个函数具有尾递归,另一个函数没有尾递归.
这是没有尾递归的那个,它完美地工作
sum1 x = if x==0 then 0 else x + sum1(x-1)
Run Code Online (Sandbox Code Playgroud)
这是我的尾递归尝试,它不起作用:
sum2 x = help 0 y
help x y = if y==0 then x else help(x+y,y-1)
Run Code Online (Sandbox Code Playgroud)
有人可以指出错误吗?
我想写一个函数,它接受一个字符串并用7替换字符串中的任何数字.例如,"foo123"将被替换为"foo777"
这是我的功能.
replace [] = []
replace (x:xs) =
if x == ['0'..'9']
then '7' : replace xs
else x : replace xs
Run Code Online (Sandbox Code Playgroud) 我来自Python,我很难学习Haskell.例如,我得到了这个合并列表的功能.所以第一件事是合并列表然后我想返回合并列表的总和.正确的语法怎么样?
merge:: [[a]] -> [a]
merge xss = foldr (++) [] xss
return sum []
Run Code Online (Sandbox Code Playgroud)
只有删除最后一行,这段代码才有效.但我想返回合并列表的总和.