深さ3の任意の長さのネストされたリスト構造があります。第1レベルは、第2レベルと同様に任意の長さですが、第3レベルは、全体にわたって均一な長さであることが保証されています。上記の構造の例は'(((A B) (C D)) ((E F) (G H)) ((I J)))
です。
構造のさまざまなレベルに別の関数を適用する関数を作成しようとしています(申し訳ありませんが、それを表現する方法がわかりません)。構造例全体での関数マッピングの例は、次の順序になります。
f A C = AC, f B D = BD, f E G = EG, f F H = FH, f I = I, f J = J
、
降伏
'((AC BD) (EG FH) (I J))
しかし、リストの3番目のレベルにさらに多くの要素が含まれていると想像してください(たとえば、最終バージョンでは約32,000)。
基本的に、私がやろうとしていることは、Haskellではのようなものとして表現されますf . transpose
。最初のセクションの最初の部分を取得するようなものが必要なことはわかっています(map car (map flatten (car ...)))
が、その後、ここのロジックに本当に迷いました。これが本当に複雑で、説明が不十分な質問である場合は、申し訳ありません。私は本当に迷っています。
この方法で構造全体に関数を適用するにはどうすればよいですか?