公開したくない自作データ型を引数に持つ自作関数をhspecでテストする方法を探しています。
自作のモジュールは2つあり、ひとつはテストしたい関数 g がある ModSub、もうひとつは ModSub を使用する ModMain です。
-----[ ModMain.hs ]-----
module ModMain where
import ExtLib (calc) -- 外部ライブラリ
import ModSub
f = calc g 他のいくつかの引数 -- 他にも関数を呼び複雑な計算をする
-----[ ModSub.hs ]-----
module ModSub (g) where
import Control.Applicative
import ExtLib (SomethingClass) -- 外部ライブラリ
data D = D Bool Int
instance SomethingClass D where
someFunc = pure D <*> makeBool 適当 <*> makeInt 適当
g (D b i) = 何か
ExtLib の calc 関数は Something クラスのインスタンス型を引数に持つ関数を取り、その具体的な型は知る必要がありません。
私はアプリケーションの作成に当たって公開しなても動く設計のものは公開しないスタンスです。
なので、ModSub モジュールは D 型のコンストラクタを公開していません。
このような状況ではテストモジュールからも D 型が使えずテストできないため、私は2つの選択肢を考えました。
ひとつは、諦めてスタンスを曲げて D 型のコンストラクタを公開する。
もうひとつは、D 型を別のモジュール InnerModSub 内に定義して公開し、ModSub モジュールとテストモジュールは InnerModSub モジュールを使う。
そして、ModMain モジュールや他のモジュールは決して InnerModSub モジュールを使わないようルールを設ける。
他に何か良い方法はあるでしょうか。
探検
関数型プログラミング言語Haskell Part31©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
553デフォルトの名無しさん
2018/04/26(木) 12:38:49.74ID:X3BRJjDS■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 上野動物園の双子パンダ、1月末に中国に返還へ 国内でパンダ不在に [蚤の市★]
- 中国軍機のレーダー照射1週間 駆け引き続く 中国、米のレッドライン模索 日本、米以外の同志国とも連携探る 米は対立から距離置く★2 [ぐれ★]
- ゼレンスキー氏、NATO加盟断念に言及 ドイツで米代表団と [蚤の市★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- 橋下徹氏「総理なら岡田さんに何を聴かれても耐えてほしかった」 高市首相の台湾有事めぐる答弁に# [jinjin★]
- 【静岡】伊東市長選、前市議の杉本氏初当選 学歴詐称疑惑の田久保氏は及ばず 市長選3700万円、市議選6300万円の計1億円費やされる [ぐれ★]
- (財務)片山さつき『サナエノミクス💕』開始。「所得、経済、税収全てが上がる夢のような政策」 [153490809]
- 【米国側沈黙】中国爆撃機を出動させた“台湾発言”…高市の“アドリブ”だった! [979264442]
- 新幹線で越後湯沢に向かってるの(´・ω・`)
- 窓口で「いったん10割負担」の件数が1年で2倍近くに増加。「マイナ保険証」スマホマイナも登場で医療現場「もう無理」 [256556981]
- フィンランド人による吊り目でアジア人差別事件、日に日に炎上が大きくなっていく [279254606]
- リコリコとかいうアニメ、ヒョロガリJKがムキムキのおっさんボコってて萎えて1話切り
