小编Zin*_*ggi的帖子

将简单的命令式算法转换为功能式

我最近做了一个小算法,从一段代码中去掉函数参数,只保留最外面的函数.
我发现这个算法很容易以命令式方式设计.
但是,我对函数式编程非常感兴趣,我想知道如何以功能的方式完成同样的事情.

如果你能告诉我这样的算法是如何工作的,那将对我非常有帮助,所以我可能会更好地了解函数式编程的工作原理.此外,我想知道在设计算法时你的思考过程是什么.

我在Python中制作了命令式版本,但你的答案不一定是在python中; haskell或任何其他语言也会做得很好.

这是它的作用(将一个字符串作为输入并返回一个字符串):

"foo(a.d, b.e.fi()).go(sd, ds())"     -- returns -->  "foo().go()"
"foo(a, b).bar().fuu"                 -- returns -->  "foo().bar().fuu"
"foo.bar"                             -- returns -->  "foo.bar"
Run Code Online (Sandbox Code Playgroud)

这是我的命令性代码:

def get_rid_of_arguments(text):
    i, start, end = 0, 0, 0
    result = ""
    for j, c in enumerate(text):
        if c == '(':
            if i == 0:
                start = j
                result += text[end:start]
            i += 1
        elif c == ')':
            i -= 1
            if i == 0:
                end = j + 1
                result += '()'
    return …
Run Code Online (Sandbox Code Playgroud)

python haskell functional-programming imperative-programming

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