08/06/19 14:37:01
Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、
letやcondなどは導出構文という事になってます。
(但しbeginやdefine-syntax、let-syntaxはマクロでは導出できない)
Common Lispでは特殊形式とマクロという区別がありましたが
Schemeでは両方構文として扱われます。
どうもbeginはトップレベルでは「beginがない式と同等に扱われる」のは表面上であり、継続は
(lambda (x)
(begin (display x)
(display 'fuga)
(cc 'moga)))) ;; beginは冗長
として扱う処理系が多いようですね。
原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。