関数型プログラミング言語Haskell Part11
■ このスレッドは過去ログ倉庫に格納されています
0634デフォルトの名無しさん
2010/02/27(土) 11:44:31無理だと思う
class X a where -- 問題の型クラス
methodA :: a -> Int
methodB :: a -> String
instance X YourType where -- >>633のライブラリ内で
methodA = ...
methodB = error "X YourType: methodB is not implemented"
foo :: (X a) => a -> IO () -- 第三者(>>633のライブラリの存在を知らない)のライブラリ内で
foo x = ... -- ここでmethodBを使う
たとえばこういう状況で、>>633のライブラリのユーザが、
YourType型の値にfooを適用したとする
でも、この時点ではfooはコンパイル済みなので、fooがmethodBを使っていることがGHCには分からない
fooをコンパイルする時点では、YourTypeのことをGHCが知らないので、やはり警告できない
型クラスを定義するのも自分なら、メソッドにDEPRECATEDプラグマを付けるという選択肢があるけど、
その場合どのインスタンスについても警告が出る
一般論としては、undefinedじゃなくてerrorを使ってなるべく分かり易いメッセージで例外飛ばすのがいいんじゃないか
■ このスレッドは過去ログ倉庫に格納されています