問題タブ [template-haskell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3430 参照

haskell - GHC -ddump-splices オプション — テンプレート Haskell

私はYesodの本に従っています:

しかし、-ddump-splices GHC オプションを使用すると、生成されたコードをすぐに見ることができます。それの大幅にクリーンアップされたバージョンは次のとおりです。

どうすればいいですか?ファイルを でコンパイルしようとしましghc -XTemplateHaskell -ddump-splices Page.hsたが、ディレクトリは次のようになります。

Page Page.hi Page.hs Page.hs~ Page.o

ただし、これらのファイルには、テンプレート Haskell によって生成された中間コードは含まれていません。

http://www.yesodweb.com/book/basics

0 投票する
1 に答える
297 参照

haskell - コンパイル中のファイルに関連するファイルで TemplateHaskell の addDependentFile を使用するにはどうすればよいですか?

IO を使用し、ファイルに依存する TemplateHaskell 式が、MyDependency.txtそのファイルが変更されたときに再計算されるようにします。

したがってaddDependentFile "MyDependency.txt"、コードをコンパイルするときにそのファイルの変更をチェックするように ghc に指示するために使用しています。

addDependentFile残念ながら、 ghc が呼び出されたディレクトリに対してのみ動作するため、これは動作しません。

コンパイルしているファイルのすぐ隣(同じディレクトリ内) にあるファイルに依存するためにどのように使用できますか?

0 投票する
1 に答える
1674 参照

haskell - テンプレート Haskell: GHC ステージの制限とその克服方法

モジュールに次のコードがあります。

そして、メインファイルに次のものがあります。

$(findx three)に作成してもらいたいのですがfindThree = findName "Three"。しかし、代わりに、次のエラーが発生します。

どうすればこれを克服できますか?onetwoなどを別のファイルで定義する必要はありません。

2番目の質問は、なぜ$(findx (Alpha "Four" 4))問題なく動作するのですか?

0 投票する
2 に答える
187 参照

haskell - Template Haskell を使用して生成されたコードから非 TH パッケージを作成するには?

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

これが 2 から15まで繰り返されるので、Template Haskell の仕事のように見えます。

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