関数型プログラミング言語のコースを受講していますが、「引数としての関数」のコンテキスト内での再帰を理解するのに苦労しています
fun n_times(f , n , x) =
if n=0
then x
else f (n_times(f , n - 1 , x))
fun double x = x+x;
val x1 = n_times(double , 4 , 7);
the value of x1 = 112
これは 'x' 'n' 回 2 倍になるので、7 倍 4 回 = 112
リストに数値を追加するなどの単純な再帰パターンは理解できますが、関数の「べき乗」は理解できますが、この関数「n_times」が自分自身を呼び出すことによってどのように評価されるかを理解できません。この機能の仕組みを説明できますか?
scala の理解を深めるために (関数型プログラミングと共に) このコースを受講しているので、scala でタグ付けしました。