私は最近、FPの中に入ってきました。だからもっと多くのものがあることは分かっている...余分なスペースを使わずにスタックを逆転させる方法... fp-style
とにかく、命令型プログラミングの古典的な問題は「余分なスペースを使わないで」スタックの逆転である。このソリューションは、通常、スタックの最下位に到達し、最下位の要素を取り出し、スタックを逆順に再構築する外部再帰に戻すために、ダブル再帰でコールスタックを使用します。私はハスケルで同じ問題を解決しようとしてきましたが、その言語で表現する方法を理解できません。ヒント?
EDITはい、スタックを使用すると、余分なスペースを使用してで、質問は、多くの場合、人々はものを考える方法を確認する試験と面接で使用されるトリックです。また、はい、私はものが不変であることを知っています。したがって、与えられたものと逆の複製スタックを作成することは明らかです。
はこの考えを表現する様々な方法があり
コールスタックを使用することは、実際には「余分なスペースを使用しない」ことではないことに注意してください。 –
「余分なスペース」とは何ですか? Haskellのリストは不変です。逆の場合は、新しいものを作成する必要があります。あなたがスーパーナイーブなO(n^2)の逆を書くのでない限り、あなたはすでに良い形になっています。標準のO(n)ソリューションでは、すでに割り当てが最小限に抑えられています。 – Carl
O(1)スペースFPスタイルのスタックを反転することはできません。 FPでは事は不変です。再帰にはスペースが必要なため、命令型ソリューションではO(n)スペースも使用されます。 –