関数型プログラミング言語Haskell Part27_©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0810デフォルトの名無しさん
2015/03/11(水) 20:47:37.90ID:TIci70wOdata TX = DX TY
data TY = 何か
このような型定義が同じモジュールでなされています。
型コンストラクタTXや、関数f::Int -> TXなどはエクスポートされていますが、
型コンストラクタTYはエクスポートされていません。
ここで、ある範囲内の値に関数fを適用したときに
同一のTX型の値が返ってくることをテストしたいです。
ただし、実際にアプリケーションが稼動しているときには必要ないので、
TX型もTY型もEq型クラスのインスタンスにはしていません。
よって、このままでは、テストのためにこのモジュールをインポートしているファイル内で
deriving instance Eq TX としてもエラーが出ます(型コンストラクタTYが公開されていないので)。
私は下記のどちらかを諦める必要があるのでは、と思いました。
1. 型コンストラクタTYをエクスポートしないこと
2. TX型やTY型をEq型クラスのインスタンスにしないこと
(他の方法もいくつか思いつきましたが諸事情で不採用にしました)
しかし、もしかしたら、これらのことを諦めずに解決するような、
私の知らない方法があるのかも知れません。
例えば、プラグマやコンパイルオプションなどで何かしら宣言すると、
エクスポートされていないの型や関数などが限定的に使えるとか。
cabal ファイルのTest-Suiteで何か宣言すればエクスポートの範囲が変化するとか。
何かないでしょうか。
■ このスレッドは過去ログ倉庫に格納されています