私がやりたいことは次のようなものです:
任意のポリモーフィック タプルを取得します。
x = (((1, ""), Nothing), ('', 6))
そして、このタイプのようなもので再編成します (必ずしも同じ順序ではありませんが、同じ構造です。:
(Int, (Char, (Maybe Int, (String, (Int, ()))))
このパターンの名前が本当にわからないので、Google を最大限に活用することができません。
私がやりたいことは次のようなものです:
任意のポリモーフィック タプルを取得します。
x = (((1, ""), Nothing), ('', 6))
そして、このタイプのようなもので再編成します (必ずしも同じ順序ではありませんが、同じ構造です。:
(Int, (Char, (Maybe Int, (String, (Int, ()))))
このパターンの名前が本当にわからないので、Google を最大限に活用することができません。
私はまだ Haskell に慣れていませんが、パターン マッチング関数を使用してこれを行います。
converter :: (((Int, String), Maybe a), (Char, Int)) -> (Int, (Char, Maybe Int, (String, (Int, ()))))
converter (((i1, s), m), (c, i2)) = (i1, (c, (m, (s, (i2, ())))))
もちろん、すべての具象型を型変数に置き換えることもでき、それも機能します。
converter :: (((a, b), c), (d, e)) -> (a, (d, c, (b, (e, ()))))
converter (((i1, s), m), (c, i2)) = (i1, (c, (m, (s, (i2, ())))))
(明らかに、型を正しい順序で取得し、これがすべてコンパイルされることを確認する必要があります。)