Haskellでネストされたリストを逆にしようとしています。私は、ネストされたリストは、そう私は1つの定義されたHaskellでのものではないことを認識しています:私はまた、平坦化機能を持っているHaskellでカスタムネストされたリストを逆にする
data NestedList a = Elem a | SubList [NestedList a]
:
flatten :: NestedList a -> [a]
flatten (Elem x) = [x]
flatten (SubList x) = concatMap flatten x
は今、私は私の逆関数を記述したいです。関数は次のように定義されます。
myreverse :: NestedList a -> NestedList a
これはリスト内の要素を並べ替えるだけなので、私は理にかなっていると思います。
私は基本的な逆関数を書く方法を理解しています。また、Haskellの標準リストでは、逆関数が既に定義されていることも知っています。
私の質問は、リストの先頭もリストであるケースをどうすれば処理できますか?私が知っていることは、リストの先頭を逆にして尾の逆に戻すことです。しかし、これを達成する方法は?
ありがとうございました。私はこのように試して、それは働いた。 – Coliwack