【发布时间】:2017-03-28 00:30:49
【问题描述】:
我试图将一个函数递归地传递给它自己给定的次数。所以给定函数形式的输入|重复次数(计数) |争论。举个例子,如果给定输入:f 3 2 它将返回 f(f(f 2) 如果函数值“平方”它会将参数平方。
就逻辑而言,我是这样处理的:
def repeatnew func count arg
if count == 1 then (func arg)
else (func (repeatnew func (count -1) arg))
一段时间以来,我一直在尝试研究解决方案,并且遇到了使用 Iterate 和其他一些功能。最后我遇到了这个:https://wiki.haskell.org/Higher_order_function 但是我无法实现一个可行的解决方案。
编辑:我尝试实现的解决方案可以正确编译,但我对 haskell 仍然非常缺乏经验,希望能解释一下如何使用我的参数创建高阶函数。
【问题讨论】:
-
I was unable to implement a working solution阻止您的解决方案工作的具体问题是什么?您尝试了哪些实际代码? -
只是我试过的例子:
fpow f n x = iterate f x !! nrepeatFun :: Char -> Int -> Char -> String repeatFun func count arg repeatFun = (count-1)*((func)+(arg)) repeatFun = func (repeatFun func (count-1) arg)我是haskell的新手,所以我的实施技能严重缺乏 -
您的帖子目前缺少一个问题,这对于问答网站至关重要。请edit您的帖子。如果您遇到任何问题,请添加“错误”代码和您收到的任何错误消息,或者,如果行为不符合您的预期,请添加预期和实际行为。
-
感谢您修复布局,关于一个问题,使用我提到的链接如何在给定我的特定输入的情况下实现更高阶函数。我应该能够将次数传递给循环,将参数传递给也作为输入参数的函数,但我很难将其转换为实际的haskell代码。我在之前的评论中尝试过的解决方案甚至无法编译,不幸的是,我对 haskell 的有限知识并不能帮助我找到解决方案。
-
“我尝试实现的解决方案可以正确编译,但我对 haskell 仍然非常缺乏经验,希望能解释一下如何使用我的参数创建高阶函数。” 这听起来像是您希望审查您的解决方案。如需评论,请前往Code Review。