8

タプルのラッパーを定義し、それらからインスタンスを追加する小さなパッケージを作成しています。

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まで繰り返されるので、Template Haskell の仕事のように見えます。

生成されるコードは常に Haskell 98 互換なので、最終結果も Haskell 98 互換のパッケージにしたいと考えています。Template Haskell を使用してコードを生成し、それから TH 自体を使用しないパッケージを作成することは可能ですか? (可能であれば、自動化された方法が望ましいです。)

4

2 に答える 2

2

Haskell ソース コードを通常のテキスト ファイルとして出力する Haskell プログラムを作成することは常に可能です。その後、他のファイルと同様にコンパイルできます。

もちろん、これがあなたに与えないもの:

  • 構文チェック。(つまり、生成するコードに構文エラーが含まれている可能性があります。)
  • コンパイル済みの手書きコードを検査する機能。
  • 型推論のような他の GHC 機能を使用する機能。
于 2013-05-18T10:14:05.260 に答える