Получите тип данных записи без шаблона haskell
Итак, я немного поигрался с GHC.Generics, которые великолепны, но кажутся ограниченными / сосредоточены в основном на генерации экземпляров.
Что я хотел бы сделать, если это возможно, это получить новый тип данных из другого.
Допустим, у вас есть следующий тип:
data Xpto = Xpto {
fstt :: First Int
lstt :: Last String }
Я хотел бы получить следующий тип данных "бесплатно":
data Xpto' = Xpto' {
fstt' :: Int
lstt' :: String }
Одна возможность, которую я рассмотрел, состояла в том, чтобы использовать семейства типов, но тогда новые данные должны были бы получить тот же вид, что и Xpto:
class Xptos newtyped where
type UnNewTyped un :: (same kind as newtyped)
Я начинаю думать, что все это невозможно, и я уверен, что для этого есть веские причины.
Примечание 1: я знаю, что это возможно с Template Haskell... просто интересно, есть ли другой способ.