Robię mały pakunek, który definiuje owijarki za krotki i dodaje je tworzyć instancje, jakJak utworzyć pakiet non-TH z kodu wygenerowanego przy użyciu szablonu Haskell?
newtype Tuple2 a = Tuple2 { untuple2 :: (a, a) }
deriving (...)
tuple2 :: a -> a -> Tuple2 a
tuple2 = ...
instance Traversable Tuple2 where ...
instance Foldable Tuple2 where ...
instance Functor Tuple2 where ...
instance Applicative Tuple2 where ...
ten powtarza się od 2 do 15, więc wygląda na to zadanie dla szablonu Haskell.
Wygenerowany kod jest zawsze zgodny z Haskell 98, więc chciałbym, aby ostateczny wynik był również kompatybilny z Haskell 98. Czy można wygenerować fragment kodu za pomocą szablonu Haskell i utworzyć z niego pakiet, który nie korzysta z samego TH? (wolałbym zautomatyzowany sposób, jeśli to możliwe).
Próbowałem zeroth, ale nie kompiluje. Postaram się skontaktować z oryginalnym autorem. –