Lisp Scheme Part41 (808レス)
Lisp Scheme Part41 http://mevius.5ch.net/test/read.cgi/tech/1531587928/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
752: デフォルトの名無しさん [sage] 2025/07/09(水) 15:02:22.57 ID:QwaFNVYh >>740 ifだって普通の関数だろw インタープリターとしての実装は単なる関数呼び出しだ スペシャルフォームなので引数は評価せず渡す(通常の関数の場合は評価した結果を渡す) で、(バイト)コンパイラーはifは関数呼び出しにはせず条件ジャンプ命令列に置き換える そんな事は古代からやってる 自分で処理系を実装した事あれば誰でも知ってる http://mevius.5ch.net/test/read.cgi/tech/1531587928/752
754: デフォルトの名無しさん [sage] 2025/07/09(水) 15:34:56.94 ID:QwaFNVYh ミニマルコアって何だ? スペシャルフォームとマクロは引数を評価しないで渡す関数として実装される そんなのは初期の頃からだと言っている 何で今さら発見した面してんのか?と言うことだ http://mevius.5ch.net/test/read.cgi/tech/1531587928/754
755: デフォルトの名無しさん [sage] 2025/07/09(水) 15:40:52.83 ID:QwaFNVYh 引数を評価しないで渡す関数という点で、マクロとスペシャルフォームは同一の実装と言える しかしマクロは環境を受け取らないといけないし、戻り値を再度評価する必要があるから、スペシャルフォームとマクロは区別する必要がある http://mevius.5ch.net/test/read.cgi/tech/1531587928/755
756: デフォルトの名無しさん [sage] 2025/07/09(水) 15:42:40.68 ID:QwaFNVYh 更に、スペシャルフォームはifの様にコンパイラーが特殊なコンパイルをする必要があるので、普通の関数と区別する必要がある点も重要だ http://mevius.5ch.net/test/read.cgi/tech/1531587928/756
758: デフォルトの名無しさん [sage] 2025/07/09(水) 15:46:21.90 ID:QwaFNVYh しかしながら、普通の関数でもスペシャルフォームの様な特殊なコンパイルをしたい場合があるので、その為にコンパイラーマクロが存在する ただほとんど使われない http://mevius.5ch.net/test/read.cgi/tech/1531587928/758
759: デフォルトの名無しさん [sage] 2025/07/09(水) 15:48:37.80 ID:QwaFNVYh >>757 インライン関数はマクロで実装できる 環境もちゃんとハンドリング出来るので、インラインクロージャーもマクロで実装可能だ 何がしたいのか良く分からない… http://mevius.5ch.net/test/read.cgi/tech/1531587928/759
760: デフォルトの名無しさん [sage] 2025/07/09(水) 15:50:14.77 ID:QwaFNVYh mapcarに渡したlambdaをインライン展開したいと言うなら、mapcarを(コンパイラー)マクロにすれば可能だ http://mevius.5ch.net/test/read.cgi/tech/1531587928/760
771: デフォルトの名無しさん [sage] 2025/07/09(水) 19:46:08.96 ID:QwaFNVYh map系の関数にラムダ式を渡したら、それがインライン展開されてコンパイルされるのは、最近の言語では当然の様にやってる http://mevius.5ch.net/test/read.cgi/tech/1531587928/771
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.376s*