ページ「Xamarin.Mac/CGImageをファイルに保存する」と「真正末尾再帰」の間の差分
< Xamarin.Mac(ページ間の差分)
ナビゲーションに移動
検索に移動
imported>Administrator |
|||
1行目: | 1行目: | ||
− | + | '''真正末尾再帰'''とは、[[末尾再帰]]を利用することで確実に[[末尾再帰最適化]]が行われることが保証される[[プログラミング言語]]のことである。単に「真正」「真正的」などと呼ばれることもある。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | == 概要 == | |
− | + | [[末尾再帰]]を利用することで確実に[[末尾再帰最適化]]が行われるため、末尾再帰をいくら使用しても[[コールスタック]]などの[[リソース]]を食いつぶすなどの挙動がなく、結果として[[再帰]]の呼び出し回数に制限がない状態をいう。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | また、このような[[末尾再帰最適化]]が必ず行われることが保証されている[[処理系]]([[プログラミング言語]])を指す。 | |
− | + | [[正格評価]]の[[関数型プログラミング言語]]を名乗る[[言語]]であれば、ほぼ真正末尾再帰であると思ってよい。ただし[[正格評価]]の代表格である[[LISP]]だけは何故か真正末尾再帰ではない。その派生品である[[Scheme]]などでは真正になっている。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | *[[ | + | * [[再帰]] |
− | *[[ | + | * [[末尾再帰]] |
− | *[[ | + | * [[末尾再帰最適化]] |
− | |||
− | |||
− | |||
− | |||
− | |||
== 参考文献 == | == 参考文献 == | ||
51行目: | 17行目: | ||
{{stub}} | {{stub}} | ||
− | |||
− | |||
− |
2016年3月2日 (水) 05:13時点における版
真正末尾再帰とは、末尾再帰を利用することで確実に末尾再帰最適化が行われることが保証されるプログラミング言語のことである。単に「真正」「真正的」などと呼ばれることもある。
概要
末尾再帰を利用することで確実に末尾再帰最適化が行われるため、末尾再帰をいくら使用してもコールスタックなどのリソースを食いつぶすなどの挙動がなく、結果として再帰の呼び出し回数に制限がない状態をいう。
また、このような末尾再帰最適化が必ず行われることが保証されている処理系(プログラミング言語)を指す。
正格評価の関数型プログラミング言語を名乗る言語であれば、ほぼ真正末尾再帰であると思ってよい。ただし正格評価の代表格であるLISPだけは何故か真正末尾再帰ではない。その派生品であるSchemeなどでは真正になっている。