【发布时间】:2013-10-11 11:37:00
【问题描述】:
我最近做了一个小算法,可以从 sn-p 代码中去除函数参数,只保留最外层的函数。
我发现这个算法很容易以命令式的方式设计。
不过,我对函数式编程真的很感兴趣,我想知道您将如何以函数式的方式完成同样的事情。
如果你能告诉我这样的算法是如何工作的,那将对我非常有帮助,这样我可能会更好地了解函数式编程的工作原理。另外我想知道您在设计算法时的思考过程。
我在 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:]
【问题讨论】:
-
以下内容可能对您有所帮助。它处理一个不同但相对简单的问题。 neilmitchell.blogspot.ie/2013/09/…
-
您想为实际函数执行此操作还是只为表示该函数的文本执行此操作?
-
@DiegoNolan 就在一个代表函数的字符串上。
标签: python haskell functional-programming imperative-programming