我最近做了一个小算法,从一段代码中去掉函数参数,只保留最外层的函数。
我发现这个算法很容易以命令式的方式设计。
但是,我对函数式编程真的很感兴趣,我想知道你将如何以函数式的方式完成同样的事情。
如果你能告诉我这样的算法是如何工作的,那对我很有帮助,所以我可能会更好地了解函数式编程的工作原理。另外我想知道你在设计算法时的思考过程是什么。
我在 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"
这是我的命令式代码:
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 result + text[end:]