Exporter le modèle en haskell généré définitions
-
12-12-2019 - |
Question
Mon module contient des définitions, dont une partie sont exportés (en module
la clause).Je veux exporter le Modèle en Haskell générés par les déclarations de trop.Mais depuis il n'y a apparemment aucun moyen de modifier module
la clause de TH, je ne peux pas faire cela.
Est-il possible de spécifier que la TH générés par les déclarations devraient être exportées au tout?Ou peut-être il y a d'autres façons de le faire?
La solution
Vous avez besoin d'exporter les noms de la TH déclarations.Par exemple, si vous avez une TH de la fonction qui génère un data B = C | D
déclaration, vous devez tout simplement à l'exportation module Mymodule (B(C,D)) where ...
.
Si vous ne spécifiez pas une liste d'exportation, toutes les déclarations dans ce module seront exportés.Ce que vous pouvez faire comme un petit truc est de placer tous vos généré TH fonctions dans un module, puis réexporter ce module:
{-# LANGUAGE TemplateHaskell #-}
-- Put all of the generated stuff in one module
module Bla.Generated where
generateAFunctionCalled "foo"
generateAFunctionCalled "bar"
-- Re-export the generated module
module Bla (module Bla.Generated) where
import qualified Bla.Generated
Ceci a l'inconvénient que vous ne pouvez pas mettre le haddock documentation générée fonctions, mais ce n'est pas quelque chose que vous faites habituellement de toute façon.