問題タブ [homoiconicity]
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.
lisp - Lisp の柔軟性の実際の例は?
誰かが Lisp を私に売り込もうとしている。Lisp は、これまでにないすべてのことを実行できる超強力な言語であり、さらにいくつかのこともできる。
Lisp の力を示す実用的なコード例はありますか?
(できれば、通常の言語でコード化された同等のロジックと一緒に。)
macros - Lisp マクロが特別な理由は何ですか?
プログラミング言語に関する Paul Graham のエッセイを読むと、 Lisp マクロが唯一の方法だと思うでしょう。多忙な開発者として、他のプラットフォームで作業しているため、Lisp マクロを使用する特権はありませんでした。バズを理解したい人として、この機能が非常に強力な理由を説明してください.
また、これを Python、Java、C#、または C 開発の世界から理解できるものに関連付けてください。
functional-programming - 同像性に関する詳細情報はどこで入手できますか?
私は関数型プログラミングを実験してきましたが、まだその概念を理解していません。この概念について説明している優れた本やチュートリアル、例を知っていますか?または、その使用法に関する小さなスニペットを表示できれば、それは素晴らしいことです。
compiler-construction - コンパイルされた言語は同像性であることができますか?
定義上、同像性という言葉は次のことを意味します。
コードとデータの同じ表現
LISPでは、これは引用符で囲まれたリストを作成して評価できることを意味します。(car list)
関数と(cdr list)
引数も同様です。これは、コンパイル時または実行時に発生する可能性がありますが、インタープリターが必要です。
コンパイル時インタプリタなしでコンパイルされた言語も同像性である可能性はありますか?それとも、同像性の概念は通訳者に限定されていますか?
reflection - リストとしてのScheme関数のトラバース
Scheme の関数を他のリストと同じように扱うことはできませんか?
基本的に、私がやりたいことは次のようなものです:
これに関する同様の議論を見つけました。Scheme でこれができないとしたら、少しがっかりします。もしそうなら、なぜこれが不可能なのですか?他のLispでは可能ですか?
編集: (cdr 'foo) を (cdr foo) に変更 -- 誤解を招くものでした。関数にリストとしてアクセスできない のはなぜですか?
xml - XML メタスキーマ
XMLスキーマ(XSD)自体がXMLファイルなので、スキーマのスキーマ(メタスキーマ)を構築できるはずですよね?
私はその偉業を達成するのに苦労しています。
complexType
のシーケンスを含む1 つのルートを持つスキーマを記述するスキーマを作成したいと考えていますsimpleTypes
。
sql - ホモイコニシティとSQL
現在、SQLシェルとしてemacs sql-modeを使用しています。(簡略化された)クエリ応答は以下のとおりです。
そのデータに基づいて別のクエリを作成したい場合、たとえば
visit_key
との間にコンマを追加しcreated
、有効期限の値を引用符で囲む必要があることがわかります。
この種の編集を最小限に抑えることができるように、コンテンツをよりホモイコニックに表示する SQL DB シェルはありますか? 例えば
また
私はpostgresqlところで使用しています。
functional-programming - 関数を操作可能なデータ構造と見なすプログラミング言語はありますか?
開発中のjQueryプラグインの一部として次の関数を作成しました。
に大きく依存する非常に再帰的な関数をテストした後.append2
、次のように最適化.append2
しました。
このコードは速度の点ではより効率的ですが、それでも私は満足できませんでした。基本的に、同じ関数を2回定義しました。
そして、関数を次のように一度だけ定義できる言語があるかどうか疑問に思いました。
$this.append
次に、引数をfromからvalue
に置き換えて操作しcallback(key, value)
ます。(そして、いいえ、文字列を操作することによってではありません。関数自体を操作することによって。)
そのようなプログラミング言語はありますか?
programming-languages - 同性愛とは正確にはどういう意味ですか?
同性愛に関するウィキペディアの記事を理解しようとしましたが、冗長すぎて、単語の背後にある主な理論を簡潔に説明していません。私は英語を母国語としないので、学術的なホワイト ペーパーの引用よりも簡単な英語を好みます。
では、ある言語がホモイコニックであるとは、正確にはどういう意味なのでしょうか? C#、Java、または JavaScript がホモイコニックではない理由は何ですか?
types - 同像型理論
Lispには同像性であるという特性があります。つまり、言語実装(リスト)で使用されるコードの表現は、独自の目的でコードを表現したいプログラムでも利用でき、慣用的に使用されます。
関数型プログラミング言語の他の主要なファミリーであるMLは、型理論に基づいています。つまり、言語の実装にはコードのより複雑な表現が必要であり、許可されていることについてもカジュアルではないため、通常、内部表現は次のようになります。プログラムでは利用できません。たとえば、高階述語論理のプルーフチェッカーはMLファミリ言語で実装されることがよくありますが、通常は独自の型理論システムを実装し、MLコンパイラがすでに型理論システムを持っているという事実を事実上無視します。
これに例外はありますか?型理論に基づいて、プログラムで使用するためにコード表現を公開するプログラミング言語はありますか?