- 18 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:08:26.89 ]
- >>16
リンク先では、hsc2hs で作った Enum 型を 次のように使って C 言語側の関数に渡しています(途中省略しました) status <- c_qag gsl_f (realToFrac a) ・・・ (rule gauss) ・・・ errorPtr この c_qag gsl_f 関数は名前や使われ方から見て きっとどこかで foreign import されていると思いますが、 リンク先のページにはその定義は書かれていませんね しかし、おそらく c_qag gsl_f :: CFloat -> ・・・ -> CInt -> ・・・ のような定義だと思います(そうでなければ型エラー) これ、c_qag gsl_f (realToFrac a) ・・・ 100 ・・・ errorPtr のように使用しても型エラーにならずにコンパイルが通ってしまいますよね import された実際の C 言語側の関数で、不正な値の引数を検知して、 戻り値でエラーコードを返すような定義になっていればまだ良いのですが、 そうでなければ何が起こるか分からず、危険です Haskell 側でこの 100 というリテラルをコンパイル時にエラーとして検知できないか、 という趣旨の質問でした
|

|