fold-right

 fold-rightはスタックとか自前で用意せずに末尾再帰に書き換えられるんだろうか…。reverseとfoldを使えば末尾再帰で書けるけど、リストを2回たぐってるのがなんかアレな感じ。評価順序も気になる。(実際、revertとfoldの組み合わせで書いたfold-rightを使ってmapを書くと、Gauche付属のfold-rightを使った場合と評価が逆順になる。出てくる結果は変わらないけど。)SRFI-1にはfold-rightは(kons e1 (kons e2 ... (kons en knil)))の結果を返す、とは書いてあるけど、このやり方でやる、とは書いてない。まぁ、foldの説明で(tail) recursionと書いてある部分に、fold-rightではrecursionとしかかかれてない事から推測すると、末尾再帰でなくていいからこの順で実行しろ、という事なのかなぁ。