この質問を形成する最良の方法は、例を使用することだと思います...だから、私がこれについて質問することにした実際の理由は、Project Euler の問題 55のためです。この問題では、10,000 未満の Lychrel 数の数を見つけるよう求めています。命令型言語では、最後の回文に至るまでの数値のリストを取得し、それらの数値を関数外のリストにプッシュします。次に、着信する各番号をチェックして、それがそのリストの一部であるかどうかを確認し、そうである場合は、単にテストを停止して、その番号が Lychrel 番号ではないと結論付けます。非ライクリル番号とその前の番号についても同じことを行います。
私はこれを以前にやったことがありますが、うまくいきました。しかし、これを Haskell で実際に実装するのは、前任者を保持するための余分な引数の束と、格納する必要があるすべての数値を保持するための絶対親関数を関数に追加することなく、非常に面倒なようです。
ここに欠けているツールがあるかどうか、またはこれを行う方法として標準があるかどうか疑問に思っていますか? Haskell のような「自然にキャッシュ」を読んだことがあります (たとえば、奇数を として定義したい場合はodds = filter odd [1..]
、必要なときにいつでもそれを参照できますが、動的に要素を追加する必要がある場合は複雑になるようですリスト。
これに取り組む方法について何か提案はありますか?
ありがとう。
PS: Project Euler の問題に対する答えを求めているわけではありません。Haskell についてもう少し詳しく知りたいだけです。