私は最近、コードのスニペットから関数の引数を取り除き、最も外側の関数のみを保持する小さなアルゴリズムを作成しました。
このアルゴリズムは、命令型の方法で設計するのが非常に簡単であることがわかりました。
しかし、私は関数型プログラミングに非常に興味があり、関数型の方法で同じことをどのように達成するのか疑問に思っていました.
そのようなアルゴリズムがどのように機能するかを教えていただければ、非常に役に立ちます。関数型プログラミングがどのように機能するかについて、より良いアイデアが得られるかもしれません。また、アルゴリズムを設計する際の思考プロセスについても知りたいです。
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:]