4

テンプレート Haskell を使用して、スコープ内のすべての関数を一覧表示する方法はありますか? 何かのようなもの

allVarsInScope :: Q [Name]

私がこれでやろうとしているのは、test_ で始まるすべてのインポートされた関数のリストを取得し、テストを自動的に実行することです。

4

1 に答える 1

3

残念ながら、Template Haskellにはそのようなリフレクション機能はありませんが、回避策はあります。ただし、このようなものを自分で作成する前に、で始まるHUnitテストと。で始まるQuickCheckプロパティに対してすでにこれを実行しているtest-framework-thパッケージを試すことをお勧めします。case_prop_

内部的には、このパッケージは、基本的にモジュールに対して独自の解析パスを実行して定義を選択するlanguage-haskell-extractパッケージを使用します。これはややハッキーなソリューションですが、実際には十分に機能します。ただし、かなりの数の依存関係がもたらされ、追加の解析パスによってビルドの速度が低下する可能性があります。

于 2012-08-02T09:59:09.083 に答える