問題タブ [r7rs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macros - Scheme のマクロと内部定義
Freenode の #scheme チャンネルで良い質問が寄せられました。スキームで次のコードを検討してください。
beta
、gamma
、およびのうち、delta
構文エラーが発生するのはどれですか? そして、どちらですか?私はこれをちびスキームでチェックしましbeta
た。これは意図した動作なのか、Chibi の単なるバグなのか疑問に思います。gamma
delta
標準によると、マクロの展開は、内部定義が に書き換えられる前に行われるべきであると思われletrec*
ます。したがってbeta
、グローバルなものではなく、内部的に定義された と一致するため、gamma
両方とも失敗するはずです。foo
alpha
ただし、内部定義が実際にどのように機能するかは標準では明示的に指定されておらず、letrec のショートカットとして考えられるだけです。Racket の R5RS で同じ動作が得られるため、そのような動作を要求する標準に何かが欠けているようです。
scheme - 2016 年の時点で、R7RS (小) を 100% サポートするスキームの実装はありますか?
私はSchemeを学びたいと思っています。R7RSは最後の規格なのでこだわりたい。しかし、Scheme の現在の実装には多くの断片化があり、それらのほとんどは R5RS または R6RS の一部にとどまっているようです。
R7RS の一部をサポートしていることがわかったのは Kawa だけですが、JVM で実行されるため、テール コールの最適化をサポートしていません。
R7RS の完全な実装がまだないほど、Scheme の世界は本当に断片化されているのでしょうか? ない場合は、追いつき次第、作成する予定です。しかし、もし存在するなら、車輪を再発明してその特定の実装に貢献しない方が良いでしょう.
情報をお持ちの場合は、名前だけでなく、適切な詳細情報 (実装の公式 Web サイトまたはメーリング グループからの抜粋でも参照として役立ちます) で回答していただければ幸いです。
ところで、Racket はもう Scheme ではないので、考慮していません。