関数型プログラミング言語Haskell Part21
■ このスレッドは過去ログ倉庫に格納されています
0587デフォルトの名無しさん
2013/03/05(火) 21:55:20.69>Cコンパイラは次の関数ポインタを受け取る関数
>int twice(int (*f)(int), int x) {
> return f(f(x));
>}
>が副作用があるか無いかを、どうやって知れば良いの?
>渡される関数ポインタfがどんなものか分からないのに。
twiceが副作用のない関数であることは、"int twice"から自明だ。
そして*fで指されたfが本当にint->intであることをチェックしたいなら
twice呼び出し側の"int (*f)(int)"パラメータの素姓を辿っていけばよい。
それだけのことだ。
>それとも、関数ポインタが渡されるときは、常に副作用があると考えるの?
そんなことはしない。
■ このスレッドは過去ログ倉庫に格納されています