내 모듈에는 일부가 내 보낸 정의가 포함되어 있습니다 (module
절). Template Haskell에서 생성 한 선언도 내보내려고합니다. 그러나 TH로 module
절을 수정할 수있는 방법이 없기 때문에이 작업을 수행 할 수 없습니다.내보내기 템플릿 haskell 생성 된 정의
TH 생성 된 선언을 전혀 내 보내야한다고 지정할 수 있습니까? 아니면 다른 방법이 있을까요?
내 모듈에는 일부가 내 보낸 정의가 포함되어 있습니다 (module
절). Template Haskell에서 생성 한 선언도 내보내려고합니다. 그러나 TH로 module
절을 수정할 수있는 방법이 없기 때문에이 작업을 수행 할 수 없습니다.내보내기 템플릿 haskell 생성 된 정의
TH 생성 된 선언을 전혀 내 보내야한다고 지정할 수 있습니까? 아니면 다른 방법이 있을까요?
생성 된 TH 선언의 이름을 내 보내야합니다. 예를 들어, data B = C | D
선언을 생성하는 TH 함수가있는 경우 module Mymodule (B(C,D)) where ...
을 내보내는 것이 필요합니다.
내보내기 목록을 지정하지 않으면 해당 모듈의 모든 선언이 내보내집니다. 당신이 약간의 트릭이 하나 개의 모듈에서 생성 된 TH의 모든 기능을 넣어하는 것입니다으로 무엇을 할 수 있고, 그 모듈 재수출 :
{-# 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
을 이렇게하면 생성 기능을 위해 대구 문서를 넣을 수없는 단점이있다, 하지만 그건 당신이 보통하는 일이 아닙니다.
문제는 * 로트 * 이름이 있고 자체가 생성되므로 내보내기 목록에 열거 할 수없는 옵션입니다. 글쎄, 지금은 수출 명단이 없다고 생각한다. 고맙습니다. –
블라디미르 : TH 정의를 모두 내보내고 싶지만 다른 정의는 내 보내지 않으려면이 솔루션을 사용하고 '가져 오기 Bla.Generated 숨기기 (...)'를 사용할 수 없습니까? 그런 식으로 당신이 제외하지 않는 것들은 모두 내보낼 수 있습니다 ... – sclv
요점은'.Generated' 모듈에만 TH 생성 된 것들이 포함되어 있다는 것입니다. 정상적인'Bla' 모듈은 여러분이/export하고 싶지 않은 다른 것들을 포함 할 것입니다. – dflemstr