小编Ani*_*il 的帖子

这个尾递归Haskell函数的错误在哪里?

我必须以两种方式在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)

有人可以指出错误吗?

recursion haskell functional-programming tail-recursion

1
推荐指数
1
解决办法
204
查看次数

Haskell中这个替换函数的错误在哪里?

我想写一个函数,它接受一个字符串并用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)

haskell functional-programming function

0
推荐指数
1
解决办法
107
查看次数

如何在这个Haskell列表函数中执行多个操作?

我来自Python,我很难学习Haskell.例如,我得到了这个合并列表的功能.所以第一件事是合并列表然后我想返回合并列表的总和.正确的语法怎么样?

merge:: [[a]] -> [a]
merge xss = foldr (++) [] xss
            return sum []
Run Code Online (Sandbox Code Playgroud)

只有删除最后一行,这段代码才有效.但我想返回合并列表的总和.

haskell functional-programming

0
推荐指数
1
解决办法
428
查看次数