2012-11-05 63 views
19

ラケットマクロはSchemeやCommon Lispよりも高度な機能を備えていますか?私はモジュール、ネームスペース、スコープなどについては特にそうだと思っていますが、他のリップスではできないラケットマクロができることを簡単に説明していただきたいと思います。Racket vs Schemeマクロ

さらに、Scheme/CLも読者層を開発者に公開していますが、これを使用すると、Scribbleのようなまったく新しい言語(s-exprマクロだけでなく)を作成することはできません。ラケットでできますか?

言い換えれば、ラケットは単に「言語指向プログラミング」の哲学/慣習であり、この目的のために便利な構文ラッパーを使用していますか、それとも、その言語で技術的に不可能なことをスキームに根本的に拡張していますか?

ありがとうございます。

答えて

14

ラケットに「言語指向プログラミング」の作業を行う2つの主な機能は次のとおりです。

  • モジュールシステムは、基本言語の仕様
  • コンテキストを可能に非表示マクロ

最初の箇条書きは基本的には#langです。与えられたモジュールで利用可能なリーダーとバインディングの設定をモジュールシステムに任せることで、異なる言語を簡単に使用することができます。これがなければ、Scribbleやat-expなどの言語で作業するのは面倒です。

第二は、ラケットは、#%app#%module-beginとしてoverrideableコンテキスト依存マクロを提供することであり、したがってその上にたとえば、カスタマイズ、モジュール内またはモジュール全体の機能アプリケーションを可能にします。これにより、モジュール全体に型チェック・パスを追加することができます。

これは、Racketで言語を構築するのに役立つ機能の網羅的なリストではありません。詳細を読むことに興味があれば、"Languages as Libraries"論文を読む価値があります。

5

@Scottがリストに投稿したのと同じ質問については、Matthew's replyも参照してください。最新の概要論文があります。

関連する問題