問題タブ [guile]
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.
operators - スキーム:事前定義された演算子を再定義すると、なぜこの結果になるのですか?
+を使用してスキームプログラムで演算子を再定義すると、予期しない結果が発生しましたguile。これは、言語を理解しようとする実験中に発生したことを指摘しておく必要があります。ここでは、便利なプログラムを作成する試みはありません。
コードは次のとおりです。
guile関数では、の新しい定義を使用していますが、再定義した後showでもの定義済みの定義を使用しています。の新しい定義を認識させるには、再定義する必要があります。どちらの新しい定義でもすぐに認識されます。これは私が期待していたことです。また、のそれ以上の定義は、再定義することなく、両方のインタプリタによって即座に認識されます。+fshow+mit-scheme+show
guileこれらの再定義された演算子への参照を異なる方法でバインドするために、舞台裏で何が起こっていますか?
そして、なぜ2人の通訳者の違いは?
scheme - Guileでカイロサーフェスを作成する方法
私はこのコードを持っています
文字列を幅と高さとして使用する場合
ドキュメントには次のように記載されています。
cairo-pdf-surface-create (filename <char>) [Function]
(width-in-points <double>) (height-in-points <double>)
⇒ (ret <cairo-surface-t>)
scheme - プログラム画像をguileに保存する
ほとんどのLispは、実行中のプログラムのイメージをファイルに保存することをサポートしていると聞きました。guileはこれをサポートしていますか?
scheme - LilyPond:音楽からピッチ名を抽出する
私はLilyPondを使用して練習スコアとエチュードを作成します。Moveable Doソルフェージュ表記で音符を入力できるようにする方法を理解し、音符の下にソルフェージュ記号を歌詞として表示することをサポートするテンプレート(以下を参照)を用意しました。現在、音楽を生成する表記とマークアップから歌詞を手動で抽出する必要があります。私はこれをいくつかのpythonとvimコード(ここには示されていません)で部分的に自動化することができましたが、それでもやや不十分です。
最善の解決策は、ファイルの処理中にLilyPondの組み込みSchemeインタープリターを使用してピッチ名を抽出することだと思います。ly:note-pitchnameでmapを使用しようとしましたが、これまでのところ成功していません。おそらく、特にLilyPondスクリプトで使用されているように、Schemeについてスクワットを知っているからです。
android - iOS または Android の C++ アプリに Guile を埋め込むことは可能ですか?
Guile を C/C++ プロジェクトに組み込むのは簡単そうに見えますが、iOS や Android ではどうなるのでしょうか? それらのプラットフォームでは利用できないサードパーティのライブラリが必要ですか?
JavaScript や Lua とは対照的に、組み込み可能なスクリプト言語としてはどうですか?
python - 字句解析および構文解析ユーティリティ
FlexやBisonではない字句解析とパーサー生成ユーティリティを探しています。要件:
- パーサーは、文脈自由LL(*)またはGLR文法を使用して指定されます。PEGも検討します。
- スクリプトとアプリケーション開発の両方に使用できるプログラミング言語と緊密に統合します。言語には、Cと簡単にインターフェースできる機能も必要です。良い例は、Python、Ruby、Guileです。C、Java、Perlはご遠慮ください。言語を均質にしたい。パーサジェネレータに同じ言語でコードを出力させたい。
- 十分に文書化された生産品質。
- オープンソース。無料も望ましいです(必須ではありませんが)。
- LinuxディストリビューションまたはオープンソースBSDの1つと互換性があります。OpenSolarisを検討します。
- 迅速な開発は、効率よりもかなり大きな関心事です。
- 自然言語と形式言語の構文解析に適しています。自然言語の構文解析は、あいまいさがほとんどない、短くて単純な文に制限されています。
I have my eye on ANTLR, although I have never used it. Comments to that effect are appreciated. Let me know what your favorite utilities are that meet these requirements, and why you would recommend them.
c++ - C++ に Guile を埋め込む際の問題
私は Scheme プログラマーで、Guile を使用して Bison 仕様内の C++ コードから Scheme 関数を呼び出そうとしています。Guile と C に関するドキュメントはすばらしいものです。しかし、Guile と C++ に関する最新の関連情報はあまり見つかりませんでした。すべての C プログラムは技術的には C++ プログラムであるため、Guile を介して C++ から Scheme 関数を呼び出すのは簡単なはずです。悲しいかな、私は C/C++ プログラマーではないので、ここにいる C++ の専門家が助けてくれることを期待していました。これが私のコードの一部です:
私の Scheme コードのラッパー関数は symtable.c にあります。純粋な C からこれらの同じ関数を使用すると、問題なく動作します。それらを C++ から呼び出すと、次のコンパイラ エラーが生成されます。
paspar.y:33: エラー: '=' トークンの前にコンストラクタ、デストラクタ、または型変換が必要です
...そして 34 行目から 42 行目まで同様のエラーです。Ubuntu 10.10 で GCC 4.4.5 と Guile 1.6.8 を使用しています。libguile.h インクルードを extern "C" ブロックの内側と外側に移動しようとしましたが、結果は同じです。これは初心者の間違いだと思いますが、この問題の助けをいただければ幸いです。さらに情報が必要な場合はお知らせください。以下に symtable.h を含めました。
scheme - (ガイル) スキーム環境を検査/エクスポート/シリアライズする方法
別のガイル プロセスでスキーム環境をエクスポートまたは複製したいと考えています。私が想像しているアルゴリズムは、シリアル化するために次のようなことをします:
そして、反対側でそれを読んだり評価したりします。
ただし、現在の環境を返す関数はありますが、それらは私が理解できない内部形式になっていmapます。上記のように環境を「歩く」にはどうすればよいですか?あるいは、環境を別のプロセスに複製するにはどうすればよいですか?
macros - スキーム内のこの define-syntax マクロの何が問題になっていますか?
私は SICP に取り組んでおり、いくつかの例をガイルで試してみたいと思っていました。私はストリームの例を試していて、この StackOverflow questionから得た cons-stream の実装が必要でした。ただし、これをguileに入力すると、次のようになります。
これの何が問題なのかわかりません - () を '() に置き換えて [ ] を削除しようとしましたが、有効な R5RSのように見えてもまだ機能しません。私は現在 guile 1.8.7 を使用しています。GNUドキュメントで言及されている v2.0.1 のパッケージが表示されません。これが機能しない理由でしょうか?
scheme - スキームでの評価の制御 (ガイル)
これは簡単な質問のように思えます。おそらく、答えを見つけるための検索を見つけるのが難しいほど単純です。Scheme (具体的には、それが違いを生む場合は Guile の実装) では、引用されたものをどのように評価しますか?
これが私がやろうとしていることです。
基本的に、定義した関数が特定の順序で引数を評価されるようにする必要があります。これは、1 つの引数を評価することによって引き起こされる副作用が、他の引数の評価中に依存するためです。ただし、Scheme では、引数は任意の順序で評価できると述べているため、引数を引用符で囲み、必要な順序で手動で評価することにより、手動で強制的に評価したいと考えています。
「eval」は私がやりたいことをするはずですが、2つの問題があります:
- その使用はお勧めできないので、ここでやりたいことを達成するためのより良い方法があるはずだと感じています.
- Scheme では、eval は環境である 2 番目のパラメータを取るようです。これは私を混乱させます。ステートメントが表示されるのと同じ環境で評価したいのに、なぜ2番目のパラメーターが必要なのですか? これは可能ですか?私は eval で少し遊んでみましたが、実装によっては異なるパラメーターが必要なようです (たとえば、mit-scheme は (interaction-environment) が何であるかさえ知りません!!!)
ラムダを構築するなど、他のトリックを試しました:
しかし、プロシージャを生成するには、これを評価する必要があるようです。私も試しました:
しかし、これはどちらも機能しない「プリミティブ組み込みマクロ」を返します。
編集:評価の順序を制御するためにマクロが機能するように見えます: (defmacro test1 (ab) `(begin ,b ,a))