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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top