LISP Scheme

このエントリーをはてなブックマークに追加
223デフォルトの名無しさん
>>222
>foldl は末尾再帰 ?
見た感じそのようですが。
末尾再帰であるかの判定は、
foldrは、bopに与える被演算子がfoldr再帰の結果なのでそれが求まるまでbopの評価を遅延する必要がある。よって普通の再帰。
foldlは、foldl再帰の結果が関数の値そのものになるので遅延させるべき演算は存在しない。よって末尾再帰。
という風に考えれば良いんじゃないかと。
ifが絡みますが、ifは分岐構文であって、分岐先が決まったら、保存する様な状態が無いことからfoldlが末尾再帰である事の証明への妨げにはなりません。