59

私はマクロに非常に興味があり、その真の力を理解し始めたところです。マクロシステムの優れた使用法を収集するのを手伝ってください。

これまでのところ、次の構成があります。

パターンマッチング:

アンドリュー・ライトとブルース・デュバ。Scheme のパターン マッチング、1995 年

Prolog の精神に基づく関係:

ドライ・シタラム。schelog でのプログラミング。 http://www.ccs.neu.edu/home/dorai/schelog/schelog.html

ダニエル・P・フリードマン、ウィリアム・E・バード、オレグ・キセリョフ。合理的な策士。MIT プレス、2005 年 7 月

マティアス・フェライセン。Prolog を Scheme に音訳します。Technical Report 182、インディアナ大学、1985 年。

拡張可能なループ構造:

セバスチャン・エグナー。スキームの熱心な理解: SRFI-42 の設計。スキームと関数型プログラミングに関するワークショップ、13 ~ 26 ページ、2005 年 9 月。

オリン震える。ループの解剖学: 範囲と制御の物語。関数型プログラミングに関する国際会議、2005 年 2 ~ 14 ページ。

クラスシステム:

PLT。PLT MzLib: ライブラリ マニュアル。テクニカル レポート PLT-TR2006-4-v352、PLT スキーム社、2006 年 http://www.plt-scheme.org/techreports/

イーライ・バルジレイ。詐欺。 http://www.barzilay.org/Swindle

コンポーネント システム:

ライアン・カルペッパー、スコット・オーエンズ、マシュー・フラット。コンポーネント インターフェイスにおける構文の抽象化。ジェネレーティブ プログラミングとコンポーネント エンジニアリングに関する国際会議、373 ~ 388 ページ、2005 年

ソフトウェア契約チェック

マシュー・フラットとマティアス・フェライセン。単位: HOT 言語用のクールなモジュール In ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 236–248, 1998

オスカー ワデルと R. ケント ディブヴィグ。構文抽象化の範囲を拡張する。プログラミング言語の原理に関するシンポジウム、ページ 203–215、199

パーサージェネレーター

スコット・オーエンズ、マシュー・フラット、オリン・シヴァーズ、ベンジャミン・マクマラン。Scheme のレクサーとパーサーのジェネレーター。スキームと関数型プログラミングに関するワークショップ、41 ~ 52 ページ、2004 年 9 月。

エンジニアリング セマンティクスのツール:

マティアス・フェライセン、ロバート・ブルース・フィンドラー、マシュー・フラット。PLT Redex によるセマンティクス エンジニアリング。MIT プレス、2009 年 8 月。

コンパイラ変換の仕様:

Dipanwita Sarkar、Oscar Waddell、R. Kent Dybvig。コンパイラ教育のための nanopass フレームワーク。Journal of Functional Programming、15(5):653–667、2005 年 9 月。教育パール。

斬新な実行形態

シリアライズ可能な継続を持つサーブレット Greg Pettyjohn、John Clements、Joe Marshall、Shriram Krishnamurthi、Matthias Felleisen。一般化されたスタック検査からの続き。関数型プログラミングに関する国際会議、216 ~ 227 ページ、2005 年。

定理証明システム

セバスチャン・エグナー。スキームの熱心な理解: SRFI-42 の設計。スキームと関数型プログラミングに関するワークショップ、13 ~ 26 ページ、2005 年 9 月。

型による基本言語の拡張

Sam Tobin-Hochstadt と Matthias Felleisen 型付きスキームの設計と実装。プログラミング言語の原理に関するシンポジウム、ページ 395–406、2008 年。

怠惰

Eli Barzilay と John Clements。すべてのハードワークのない怠惰: 教育のための怠惰な言語と厳格な言語の組み合わせ。教育における関数型および宣言型プログラミング、9 ~ 13 ページ、2005 年。

機能的反応性

グレゴリー・H・クーパーとシュリラム・クリシュナムルティ。値による呼び出し言語に動的データフローを埋め込む。ヨーロッパプログラミングシンポジウム、2006年


参照:

Ryan Culpepper の学位論文から収集

4

8 に答える 8

9

Culpepper & Felleisen、Fortifying Macros、ICFP 2010

Culpepper、Tobin-Hochstadt、Felleisen、Advanced Macrology and the Implementation of Typed Scheme、Scheme Workshop 2007

Flatt、Findler、Felleisen、クラス、Mixins、および Traits を使用したスキーム、APLAS 2006

Herman, Meunier、部分評価による組み込み言語の静的解析の改善、ICFP 2004

于 2010-12-29T23:12:48.223 に答える
6

Shivers, Carlstrom, Gasbichler & Sperber (1994 & later) The Scsh Reference manual .

マクロを使用してミニ言語をSchemeに埋め込む良い例がたくさんあります。引数を暗黙的に引用するマクロを定義するテクニックを紹介してくれました。プロセス フォーム、正規表現、および awk のようなミニ言語の使用を見てください。マクロで遊ぶための出発点として、Scsh をお勧めします。

Hilsdale & Friedman (2000)継続渡しスタイルでマクロを書く

継続渡しスタイルを使用して、弱い構文規則マクロを強力にする方法を示します。豊富な例を示します。

Flatt、Culpepper、Darais、および Findler (提出済み)一緒に機能するマクロ - コンパイル時のバインディング、部分展開、および定義コンテキスト.

Racket/PLT スキームのマクロへのアプローチの概要とセマンティクスを提供します。例はそれほど多くありませんが、この論文にはあなたが探しているものが含まれていると思います.

于 2011-02-09T07:00:54.410 に答える
4

スキームを読む!ReadScheme で広範な参考文献を確認することを忘れないでください。

http://library.readscheme.org/page3.html

あなたが見逃したと思う一例は、Scheme への SQL 構文の埋め込みです。 http://repository.readscheme.org/ftp/papers/sw2002/schemeunit-schemeql.pdf

マクロは、自動テストのサポートを作成するためにも使用されます。

于 2011-08-10T13:11:53.883 に答える
3

スキームではありませんが、マクロを非常に広範囲に使用するやや似た Lisp 方言: http://www.meta-alternative.net/mbase.html

さまざまな種類のパターン マッチングを実装するマクロ、リスト内包表記、さまざまなパーサー ジェネレーター (PEG/Packrat 実装を含む)、組み込み Prolog、ADT ビジター推論 (Haskell のボイラープレートを破棄するなど)、拡張可能な構文マクロ、Hindley-Milner 型システム、スキームのような構文マクロ、およびその他多数。その機能の一部は潜在的にSchemeに移植できますが、他の部分は明示的なコンテキストを持つ拡張マクロシステムを必要とします。

于 2011-02-09T13:07:00.713 に答える
2

リストに「Scheme 標準ライブラリ自体」を追加します。boot-9.scmguile ディストリビューションのファイルを見てください。最も一般的に使用される Scheme 形式の多くcase( and、 など) は、そこでマクロとして定義されています。

于 2012-03-21T18:13:20.073 に答える
0

これは、ほとんどが私が読んだことのない非常に古い出版物に分散している限り、特に正確ではありませんが、IIRC の Common Lisp Object System と Meta-Object Protocol* の大きな塊は、なれ; それは; または、最初はマクロで構築されていました...

*これまでに見た中で最も高度なOOシステムプログラミングを構成するIMHO

于 2011-02-09T06:40:30.480 に答える