Lisp Scheme Part41 (808レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
746(1): 07/09(水)14:05 ID:cmuoaTCa(1/10) AAS
>>745
>処理系の実装方法の一部は言語仕様として強制すべきというのが前提になってる?
テイルコールはそうでしょ
最適化は処理系がやってくれることを保証するので
単純ループに相当するものでもどんどん再帰の形で書きましょうってことでしょ
ファーストラムダも同じ
制御構造相当のものをlambdaを使って書いても最適化されますよってこと
748(1): 07/09(水)14:35 ID:cmuoaTCa(2/10) AAS
テイルコールってのは
call func
ret
って並んでたら
jmp func
に置き換えるんだよ
省1
750(1): 07/09(水)14:49 ID:cmuoaTCa(3/10) AAS
>>749
>>743
753: 07/09(水)15:28 ID:cmuoaTCa(4/10) AAS
マクロだっていう反論が来るのかと思ったらスペシャルフォームだというので戸惑ってるw
そりゃいくつかの関数はミニマルコアとして書かなきゃいけないさ
それさえあれば関数とマクロと制御構造は統一できる、というのが言い分
757(1): 07/09(水)15:45 ID:cmuoaTCa(5/10) AAS
評価しないで渡したい引数のうち、制御に関わるものならインラインクロージャでなんとかなりますよって話だよ
レキシカルにちゃんとしたクロージャをインライン展開される前提で引数として渡すんだよ
761: 07/09(水)15:56 ID:cmuoaTCa(6/10) AAS
>>759
テイルコールみたいにファーストラムダ最適化も必須にすればインライン展開される分速くなる
765(1): 07/09(水)17:09 ID:cmuoaTCa(7/10) AAS
インライン展開を俺が発明したなんて言ってないだろ
この形をしたラムダをそうすると効くんじゃないかというのが俺の発明だ
あと、クロージャを引数として渡すのもSmalltalkやRubyはやってるだろう
俺の発明は「インライン関数を引数として渡すという逆接はものごとを見通しよくしますよ」だ
767: 07/09(水)17:29 ID:cmuoaTCa(8/10) AAS
evalはインタープリタ、lambdaはコンパイラ
772(2): 07/09(水)22:06 ID:cmuoaTCa(9/10) AAS
>>770
letでローカル変数3つ確保しましたって時に
実際には内部でlambdaが呼ばれてるわけだろ?
この時にlambdaをインライン展開したら
オペランドスタックと返り値スタックが省かれて
変数スタックだけになって制御構造と同じコストになるだろ?
これは大きな最適化なんだよ
774(1): 07/09(水)23:21 ID:cmuoaTCa(10/10) AAS
>>773
リッチでない処理系がこの最適化ひとつでリッチ同然になる
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.710s*