関数型プログラミング言語Haskell Part18
■ このスレッドは過去ログ倉庫に格納されています
0018デフォルトの名無しさん
2012/03/18(日) 16:08:26.89リンク先では、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 というリテラルをコンパイル時にエラーとして検知できないか、
という趣旨の質問でした
■ このスレッドは過去ログ倉庫に格納されています