問題タブ [chez-scheme]
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 - Chezスキーム用にSublime3を設定するには?
Chezスキームをコンパイルし、sublime3 SublimeREPLとスキームをOSXシステムにインストールしました。
および config as mit-scheme 用に SublimeREPL を構成する方法は? トピック。
SublimeText3 を編集 >> InstalledPackages >> Scheme.sublime-package (Zip ソフトで開く) >> Scheme.sublime-build (以下のように修正)
sublimeREPL で Chez スキーム インタープリターを開くことができますが、「ビルド システム: スキーム」でファイルをビルドしようとすると、「[Errno 2] そのようなファイルまたはディレクトリはありません: 'スキーム'」というエラーが発生しました。ビルド システム コードをどのように変更すればよいですか? ?
scheme - Chez スキーム - プラットフォームに基づく共有オブジェクトのロード
Chez Scheme 用のOpenGL ライブラリ(現在は Linux のみのセットアップ) は、次のように GLUT ライブラリをロードします。
これがそのコードへのリンクです。
libglut.so.3
もちろん、ライブラリをLinux ではなくGLUT.framework/GLUT
macOS でロードしたいと考えています。
Ypsilon スキームがプラットフォームに基づいてライブラリをロードする方法の例を次に示します。
Chez Scheme でプラットフォームをチェックして、外国のライブラリのバインディングで同様のことを行うにはどうすればよいでしょうか?
import - 現在のディレクトリではなく、メインファイルに関連するファイルをインポートする方法は? ((シェ)スキーム)
たとえば、私のmain.scm
ファイルには(load "util.scm")
. util.scm
と同じフォルダにあるファイルですmain.scm
。両方のファイルは にあります~/documents/myproject/
。
今、このディレクトリにいて、実行すると$ chez-scheme main.scm
すべて正常に動作します。ただし、ホームディレクトリにいて実行$chez-scheme documents/myproject/main.scm
すると、ファイルが見つからないと不平を言いますutil.scm
。これは、現在のディレクトリが関連するホーム ディレクトリでありutil.scm
、実際にはそこにないため、実際には にあるためだと思いますdocuments/myproject/
。そうは言っても、私は(他の言語では)インポートする命令を含むファイルに関連するこれらのパスを検索する機能に慣れており、ここにもそれを持ちたいと思っています。私はそれにプレフィックスを付け./
たり、ファイルをライブラリとして定義して実行しようとしまし(import (util))
たが、それ以外では機能しませんdocuments/myproject/
。これを意図したとおりに機能させる方法はありますか?
これは Chez-Scheme 固有のものだと思います。そうでない場合は、実装に依存しない回答を希望します。
emacs - トランスクリプトを使用した Emacs、Geiser、および Chez スキーム
私は、Dybvig の「The Scheme Programming Language」という本を読み進めています。REPL としてChez Scheme 9.4.1を使用しています。Geiserを使用して Emacs 内で前述の REPL を実行しています。Chez Scheme にはtranscript-on
、REPL の入力と出力をテキスト ファイルに記録する機能があり、これは便利だと思います。ただし、これを Emacs と Geiser 内で実行すると、非常に詳細な Geiser 出力が含まれているため、テキスト ファイル出力が不必要に冗長で煩雑になる Geiser から実行中の「コメント」も取得されます。例えば
テキスト ファイルへの出力を、不要な Geiser の「解説」なしで、REPL の「読み取り」と「印刷」の入力と出力だけに制限し、Emacs と Geiser 内で実行する利点を得るにはどうすればよいですか?
scheme - スキーム- 指定されたリストの最初の 3 つの項目で機能する foldl /fold-left のような関数を作成する
式を取得して挿入し、それをプレフィックスに変更する関数を書きたいと思います。まず、+ 演算子のみを扱うと仮定して、式 1+1+1 を (+ (+ 1 1) 1) に変更します。
私は foldl または foldl のような問題を使用してそれを行いたい: リストの 2 番目の項目 (常にオペランド) を取得し、最初と 3 番目の項目を (この順序で) 追加してから、先ほどの式を使用したいと思いますリストの最初の項目になるように追加されるので、リストの残りの部分で同じことを再帰的に行います。
私は次のことを試しました:
しかし、左折に与えられたラムダには2つの引数が必要であることに気付きましたが、リストの最初の3つの項目を処理したいと思います。
少しトリッキーになったので、私が自分自身を明確にしたことを願っています..
debugging - スキーム - 再帰関数で表示が画面に印刷されない
関数boundsInLambdaを使用する関数getBoundedVarsがあります。最後に、すべてのボックスbBoxには、式exp内のすべての境界付き変数が含まれている必要があります。この関数をデバッグしようとしています。そのためには、関数がアクティブになるたびにboundsInLambdaのパラメータを出力したいのですが、何らかの理由で値が画面に表示されません。表示操作をgetBoundedVarsに入れると出力されますが、それらは最初の繰り返しの値にすぎません。
次を実行すると:
(getBoundedVars (ラムダ-シンプル (x) (ラムダ-シンプル (y) (const x))) bx)
bx が空箱のとき、
'1 は出力されますが、boundsInLambda の出力コマンドは出力されません
コードは次のとおりです。
どんな助けでも大歓迎です。
chez-scheme - Chez スキームで void** を外部関数に渡す方法
外部関数が次のように宣言されている場合
内部で Db のインスタンスを作成し、ポインターを に割り当てます*db
。これを Chez スキームから処理する最も効率的な方法は何ですか?
私が思いついた唯一のことは、foreign-alloc を使用して C ポインターにメモリを割り当て、それにアドレスを渡し、アドレスをコピーしてからすぐにこのメモリを解放することでした。
このポインタへのメモリの一時的な割り当てを回避する方法はありますか?
scheme - Chez スキーム: Macroexpand の実装
Chez Scheme は標準的なmacroexpand
実装を提供していますか? そうでない場合、適切な代替品はありますか?