10
I은 자동으로이 모듈을 구체화하려는 생성 된 데이터 형식 및 해당 개체 :
import Foo (Moo, Goo, Car, Far, Can, Haz)
import qualified Foo
data FooModule = Foo
{ foo :: Moo -> Goo
, bar :: Car -> Far
, baz :: Can -> Haz
}
_Foo_ = Foo
{ foo = Foo.foo
, bar = Foo.bar
, baz = Foo.baz
}
이름은 원래 모듈과 정확하게 동일해야합니다.
저는이 작업을 직접 수행 할 수 있지만 매우 지루한 작업이므로이 작업을 수행 할 코드를 작성하고 싶습니다.
나는 그런 작업에 어떻게 접근해야하는지 잘 모르겠습니다. Template Haskell은 모듈 검사 방법을 제공합니까? 일부 GHC API에 연결해야합니까? 아니면 방목막 페이지를 긁어내는 것과 같은 임시 방편으로 접근하고 있습니까?
그런 다음, 모듈 소스를 구문 분석하는 출력 새로운 소스 파일에서 데이터 유형을 작성하는'하스켈-SRC-exts'를 사용할 수 있을까요? –
haskell-src-exts는 좋은 생각이지만 소스를 파싱한다고해서 반드시 충분하지는 않습니다. 예를 들어 [Data.Map] (http://hackage.haskell.org/packages/archive/containers/0.5.0.0/doc/html/src/Data-Map.html) 소스는 단순히 데이터를 다시 내 보냅니다. Map.Lazy 몇 가지 추가 사항이 있습니다. 주어진 모듈이 실제로 내보내는 모든 수출을 전이 폐쇄해야합니다. 또한 소스를 검사 할 필요없이 모듈 데이터를 추출 할 수 있으면 좋을 것입니다. –