タグ付けされた質問 「meta-programming」

3
段階的な機能とは(概念的に)
最近のCACMの記事[1]で、著者は段階的な機能の実装を提示しています。彼らはそれがよく知られているかのようにこの用語を使用し、どの参考文献も明らかな紹介のようには見えません。 彼らは簡単な説明をします(強調鉱山と参照番号が変更されました;オリジナルでは22です) プログラム生成のコンテキストでは、Taha and Sheard [2] によって確立されたマルチステージプログラミング(MSP、略してステージング)により、プログラマーはプログラム式の評価を後のステージに明示的に遅らせることができます(したがって、式のステージング)。現在のステージは、次のステージのプログラムを構成(および場合によっては実行)するコードジェネレーターとして効果的に機能します。 ただし、Taha and Sheardは次のように書いています(強調強調): マルチステージプログラムは、コードの生成、コンパイル、実行をすべて含むプロセスであり、すべて同じプロセス内にあります。多段階言語は多段階プログラムを表現します。ステージング、したがってマルチステージプログラミングは、実行時の解釈オーバーヘッドを払わない汎用ソリューションの必要性に対処します。 彼らはさらに、ステージングが効果的であることを示す古い作品へのいくつかの参照に進み、それは概念がさらに古いことを示唆しています。彼らは用語自体の参照を与えません。 これらの記述は、矛盾していないにしても、直交しているように見えます。RompfとOderskyが書いたものは、TahaとSheardが提案したものの応用かもしれませんが、それは同じことに関する別の視点かもしれません。彼らは重要な点は、実行時にプログラムが自分自身の一部を(再)作成することであることに同意しているようですが、それが必要な能力であるか、十分な能力であるかはわかりません。 それでは、このコンテキストでのステージングの解釈は、それぞれステージングとは何ですか?この用語はどこから来たのですか? 軽量モジュラーステージング: T. RompfおよびM. Oderskyによるランタイムコード生成およびコンパイル済みDSLへの実用的なアプローチ(2012) W. TahaおよびT. Sheardによる明示的な注釈付きのMetaMLおよびマルチステージプログラミング(2000)

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.