問題タブ [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.
scheme - このスキームエラーは何を教えてくれますか?
ガイルインタプリタの形でフロントエンドとして提供する、meep と呼ばれる電磁気シミュレータが存在します。シミュレーターは、一連のスキーム マクロで構成されています。
次のエラーの意味を理解しようとしています。コードはチュートリアルから取得されます。プロシージャでチュートリアルをラップすると、実行時エラーが発生し、インタプリタ (ガイル) が何を言っているのかわかりません。
動作しないコード
作業コード (手順なし)
エラー
働く
結局のところ、何かが二重に評価されているような気がします。しかし、それが何であるかはわかりません。
scheme - Guile Scheme インタプリタでの奇妙な乗算動作
OS XのインタプリタでSchemeの練習をしていGuile 1.8.8
たところ、面白いことに気がつきました。
expt
基本的に累乗を行う関数は次のexpt(b,n) = b^n
とおりです。
いくつかの入力で試してみると
ここに奇妙な部分があります:
さらに奇妙なことに、n=488
にとどまるまで0
:
このコードをrepl.itオンライン インタープリターで試すと、期待どおりに動作します。では、ガイルの何が問題なのですか?
(注: 一部の方言では、remainder
function は として呼び出されmod
ます。)
scheme - スキームの整数部分と小数部分に数字を分解する方法は?
number->second-pair
数値を受け入れ、その整数部分と小数部分を 1000000 で乗算したものを表す整数のペアを返す関数が必要です。
すなわち:
解決策を見つけるのは簡単かもしれませんが、私は多くのドキュメントを検索しましたが、残念ながら数値を整数に変換する方法が見つかりません。誰かが私を助けることができますか?
ところで:
実際には、 を使用してより正確なalarm
( this one ) がsetitimer
必要なので、正確な整数を引数として渡してください。
memory - GNU Guile SCM から char* へ
私はFFIとGNU Guileに比較的慣れていないので、char*
変数を多用するライブラリへのバインディングを書いています。C関数をラップする関数からのコードは次のとおりです。
問題は、変換関数を呼び出すとエラーが発生し、メモリ リークが発生することです。私はそれについて何ができますか?
scheme - Scheme の関数から返されたシンボルを評価するにはどうすればよいですか?
私はSchemeに慣れ親しんでいますが、おそらく私の側の根本的な誤解を反映している問題にぶつかりました。
たとえば、Scheme で次のことを行うとします (この場合は Guile を使用しますが、Chicken でも同じです)。
が効果的に引用されてstring->symbol
いるシンボル を返していることを理解しています。ただし、後でコンテキストでx
返されたシンボルを使用する方法がわかりません。string->symbol
どうすればSchemeにそのシンボルを評価させることができますか?
なぜこれをやりたいのかという背景を説明すると、Guile を組み込んだ C プログラムを書いているからです。scm_from_*_symbol
または などを使用して、C から名前で Guile で定義されたシンボルにアクセスできるようにしたいと考えていますscm_string_to_symbol
。これらの関数が思ったように機能しない理由は、上記の私の中心的な質問に関連しています。私が Guile でやりたいことを行うためのより良い方法があるかもしれませんが、それは別の問題です。今、私は上記の基本的な質問に興味があります。
terminal - mzscheme/guile REPL で矢印キーを使用するには?
guile や mzscheme の REPL を入力しているとき
次に、矢印キーを押します (define x 15)^[[D
端末の問題ですか?または何かを設定する必要がありますか?単純な編集のために一行書き直すのがめんどくさい
scheme - Lilypondで「同じ音符を1オクターブ高く、括弧で囲んだ音符」を短縮する方法は?
現在、私は次のようなlilypondコードを書いています。
ここで繰り返し言うのは、「この音と 1 オクターブ上の同じ音を括弧で囲んだもの」という意味です。
これを省略して、次のように書けるようにしたいと思います。
私の以前の質問に対する有益な回答で示唆されているように、音楽機能を使用しようとしましたが、これを機能させる方法はありません。私が得ることができる最も近いのは
しかし、これは<<
..>>
の代わりに<
..を使用します。これ>
は、私が望む方法でレンダリングされず (警告が表示されます)、\transpose c c
実際に何かを転置する理由がわかりません。
最後に、接線関係ですが、音楽関数を試してみると、模倣する音楽関数を作成するだけでは不可能であることがわかりました\repeat unfold 2
。次の例では、3 番目と 4 番目の間で 1 オクターブ下にジャンプしますc
。
macros - この Lisp 再帰マクロが機能しないのはなぜですか?
私はマクロ let-- (ラムダを使用する let* のようなもの) を Guile に持っています:
外部関数を使用してコード生成を行うと正常に動作しますが、以下のコード ( with は単なるマクロ) は動作しません:
なぜ?
scheme - Guileで「#:」とはどういう意味ですか?
私は通常 MIT/GNU スキームを使用しますが、github でいくつかの Guile コードを見つけました ( guile-2d )。
最初に MIT/GNU スキーム リファレンスを確認したところ、追加の表記法が見つかりましたが、それについては何もありませんでし#:
た。
その後、Guile のマニュアルを一瞥すると、オプションの引数を指定しているように見えるいくつかの記述 ( Profile Commands、Debugging Commands ) を見つけました。Python でこれに似たもの:
その意味を確実に知っている人はいますか?
scheme - read-line in let は次の行を読みません
上記のコードは、2 行目を l に読み込むことができません。代わりに、同じ値を2回読み取るだけです:-
line1 に続いて line2 が入力として与えられると、 line2 の代わりに line1 が出力として表示されます。ここで何が起きてるの?