Lisp Scheme Part41 (809レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
421: はちみつ餃子 ◆8X2XSCHEME 2021/07/15(木)11:32 ID:d93moyXm(1/2) AAS
末尾呼出し最適化はあくまでもセマンティクスの話であって、
ループ構文を避ける強い流れがあるわけじゃないよ。
do や named let くらいしか繰り返し構文が用意されてないのは
皆が合意できる仕様をまとめられていないという非常に単純な理由だよ。
R7RS-Large に入れるループ構文の候補としては
・ SRFI-42 (外部リンク:srfi.schemers.org
・ foof-loop (外部リンク:wiki.call-cc.org
・ chibi loop (外部リンク:synthcode.com
が挙がっている。
まあまだちゃんと議論されてないので他の候補が出るかもしれないし、
結局何も入れないということもあるかもね。
426: はちみつ餃子 ◆8X2XSCHEME 2021/07/15(木)17:45 ID:d93moyXm(2/2) AAS
慣れた Scheme ユーザーなら末尾呼出し (末尾再帰) になっているかどうかは空気のように判断できるけど、
do で書けるものなら do で書いたほうがそういう判断をする必要さえないわけで、
なるべく抽象度の高い構文 (または手続き) を使うに越したことはない。
大事なのは抽象化で、繰り返しをしているところなら繰り返しに見えるように書くのが筋だろ。
(繰り返しに do という名前を当てるのがどうなんだ……とも思うけど Fortran 由来らしい。)
そういう意味では >>425 が loop をループ以外の用途に使うのは確かに良くは無いんだが、
場合によってはそういうのもイディオムとして定着していることがあるから
意味に忠実にするために冗長になるくらいならイディオムに頼るほうが「わかりやすい」場合もある。
どちらがいいというわけでもなくて全体の匙加減だから難しいよね。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.033s