メタプログラミング
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/01/13 02:08 UTC 版)
メタプログラミング (英語: metaprogramming) [注釈 1]とはプログラミング技法の一種で、一般に「プログラムを記述するプログラム」を書くこと、またはそのプログラムを指す[1]。対象言語に埋め込まれたマクロ言語によって行われることもある。
出典
- ^ あんどうやすし 2020, p. 343.
- ^ あんどうやすし 2020, pp. 343–344.
- ^ Seibel, Peter (2005年4月11日). “Practical Common Lisp”. Internet Archive. p. 95. 2023年12月11日閲覧。
- ^ あんどうやすし 2020, p. 345-346.
註釈
- 1 メタプログラミングとは
- 2 メタプログラミングの概要
- 3 参考文献
- 4 関連項目
メタプログラミング
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)
「Nemerle」の記事における「メタプログラミング」の解説
Nemerle のマクロ機能は、コンパイル中にプログラム中のコードの生成・解析・編集を可能にする。マクロは通常のメソッド呼び出しとして使えるほか、構文を定義して用いることもできる。Nemerleの多くの構文(if、for、foreach、while、usingなど)はマクロによって定義されている。 "if" マクロの例: macro @if (cond, e1, e2)syntax ("if", "(", cond, ")", e1, Optional (";"), "else", e2){ /* <[ ]> はコードクォートであり、Nemerleコンパイラは中身を構文木に変換して提供する。 C# における式木に似ているところがある。 */ <[ match ($cond : bool) { | true=> $e1 | _ => $e2 } ]>}// コード中でマクロを使う:def max = if (a > b) a else b;// コンパイル中に上のコードは下のように展開される:def max = match (a > b){ | true => a | _ => b}
※この「メタプログラミング」の解説は、「Nemerle」の解説の一部です。
「メタプログラミング」を含む「Nemerle」の記事については、「Nemerle」の概要を参照ください。
メタプログラミングと同じ種類の言葉
- メタプログラミングのページへのリンク