2013-05-18 2 views
7

나는Template Haskell을 사용하여 생성 된 코드로 TH 패키지가 아닌 패키지를 만드는 방법은 무엇입니까?

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 ... 

이 2에서 15에 반복 같은 튜플에 대해 래퍼를 정의하고 인스턴스를 형성 추가하는 작은 패키지를 만들고 있어요, 그래서 템플릿 하스켈의 작업처럼 보인다.

생성 된 코드는 항상 Haskell 98과 호환되므로 최종 결과가 Haskell 98 호환 패키지이기를 바랍니다. Template Haskell을 사용하여 코드를 생성하고 TH 자체를 사용하지 않는 패키지를 만들 수 있습니까? (가능하면 나는, 자동화 된 방법을 선호하는 것입니다.) 그것을위한 도구가 있습니다

답변

3

: 그는에 될 것 같지 않습니다

  • zeroth을 발견하기 전에

    면책 조항 : 본인 스스로 시도하지 않았습니다.

  • +0

    0을 시도했지만 컴파일되지 않았습니다. 나는 원래 저자에게 연락하려고 노력할 것이다. –

    2

    하스켈 소스 코드를 일반 텍스트 파일로 출력하는 하스켈 프로그램을 작성하는 것은 항상 가능합니다. 그런 다음 다른 파일처럼 컴파일 할 수 있습니다.

    이 물론 당신, 포기하지 않는 무엇 :

    • 구문 검사를. (즉, 생성하는 코드에 구문 오류가있을 수 있습니다.)
    • 이미 컴파일 된 수작업으로 작성된 코드를 검사하는 기능입니다.
    • 유형 유추와 같은 다른 GHC 기능을 사용할 수있는 기능입니다.
    +0

    TH와 syb가 오기 훨씬 전에 많은 프로그램 작성 프로그램을 작성하여 프로그램 작성 프로그램을 작성했습니다. 그것은 .rtf 파일에서 소스 코드를 읽고 텍스트 색상에 따라 각각 다른 레벨에 코드를 삽입합니다! 나는 Gofer에서 하스켈로 이식 한 적이 있는지 확실하지 않지만 어쨌든 재미 있었다. – AndrewC

    +0

    그건 옵션입니다, 네,하지만 제 질문은 특별히 TH 솔루션을 요구했습니다. –