純粋関数型言語で定義できない純粋な関数
こちらから引用.なかなか興味深いですね.
ちなみに,h5
は,例外を使うことにより,
let rec h5 g = try g (fun () -> raise Exit); h5 g with Exit -> ()でも定義できますね. ただ,
h5 g1
の計算の際に再帰の度に try
が例外処理をスタックに積む所為で落ちてしまうのが気になる人は,let rec h5 g = try g (fun () -> raise Exit); h5 g3 with Exit -> ()とか
let h5 g = try g (fun () -> raise Exit); h4 g with Exit -> ()とかなら満足できるかも?