3

それで、私は GHC.Generics を少しいじってみました。これは素晴らしいものですが、主にインスタンスの生成に限定されているように見えます。

可能であれば、別のデータ型から新しいデータ型を派生させたいと考えています。

次のタイプがあるとします。

data Xpto = Xpto {
    fstt :: First Int
    lstt :: Last String }

次のデータ型を「無料で」取得したいと思います。

data Xpto' = Xpto' {
   fstt' :: Int
   lstt' :: String }

私が考えた 1 つの可能性は、型ファミリを使用することでしたが、新しいデータは Xpto と同じ種類を取得する必要があります。

class Xptos newtyped where
   type UnNewTyped un :: (same kind as newtyped)

私はこれのどれも不可能だと考え始めており、それには正当な理由があると確信しています。

注 1: これは Template Haskell でおそらく実行可能であることを知っています...他の方法があるかどうか疑問に思っています。

4

0 に答える 0