問題タブ [racket]
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 - あなたがSchemeマクロを使ったことのあることは何ですか?
マクロの多くの例は、CL の with-open-file など、ラムダを非表示にすることに関するものです。特に PLT スキームで、マクロのより風変わりな使い方を探しています。マクロの使用と関数の使用のどちらを検討するかについて、感触をつかみたいと思います。
time - PLT 方式のタイム コード
関数の実行にかかる時間を知りたい。PLT-Scheme でこれを行う最も簡単な方法は何ですか? 理想的には、次のようなことができるようになりたいと思います。
(timed loopy 5000000)
or のような他の構文を使用する必要があるかどうか(timed '(loopy 5000000))
、またはコンスなどにかかった時間を返すかどうかは問題ではありません。
lisp - DrScheme で使用する言語を選択するにはどうすればよいですか?
最近、PLT Scheme と DrScheme をダウンロードしました。DrScheme を開くと、言語を選択するように求められます。しかし、私はどのオプションにも精通していません。また、ヘルプ ガイドでは、どのオプションを簡単に選択できるかを詳しく説明していません。
まず、DrScheme と PLT Scheme は本当に Lisp や Scheme を学ぶのに必要なツールなのでしょうか? もしそうなら、異なる言語は何ですか、またどの言語を使用する必要がありますか?
programming-languages - Schemeでのカレー関数の実装
次のことをするとどうなりますか?
私はこれができることを理解しています:
そして今、私はカレーを使うことができます。私が興味を持っているのは、関数の定義です。ラインはありますか
xを引数として新しいラムダを作成し、それを1で呼び出しますか?それとも、それよりも賢く、既存のものを再利用するだけですか。(たとえば、私がそうする場合(curried 0)
、その((func x) 1)
行は次のようになります(curried 1)
-PLAIスキームはこれを行いますか?)
scheme - DrScheme と mzscheme: 定義の扱い
私が持っている 1 つの長期プロジェクトは、SICP のすべての演習に取り組んでいます。最近の演習で少し奇妙なことに気付きました。ハフマン エンコーディング ツリーをテストしています。DrScheme で次のコードを実行すると、期待どおりの結果が得られます。
ただし、(load "2.67.scm") を呼び出すか、mzscheme -f 2.67.scm を実行して、mzscheme でこの同じコードを実行すると、次のように報告されます。
私の質問は:なぜですか?mzscheme と drscheme がプログラム定義をロードするための異なる規則を使用しているからでしょうか? プログラムコードは以下です。
macos - OS X に最適なスキームまたは LISP の実装は何ですか?
失われた Lisp 開発スキルを回復するために使用できるバージョンの Scheme または LISP を探しています。一部の Web 機能は便利ですが、必須ではありません。
私は Plt と MIT スキームを見てきましたが、どちらもかなり良さそうに見えますが、Plt の方が機能が豊富なようです。Lisp の実装も調べましたが、どれも非常に高価に思えます。
私は、無料/安価な実装を好みます。これは、時折の趣味のプログラミングに過ぎない可能性が非常に高いからです。どのような推奨事項がありますか?
ruby - DrSchemeに似たRuby用のテキストエディタ/IDE
DrScheme を使用したことがない方のために説明すると、ウィンドウは 2 つの部分に分割されています。1 つの部分は編集中のファイルで、もう 1 つは対話型のシェルです。ファイルを実行すると、インタラクティブ環境にロードされるため、定義した関数などを呼び出すことができます。インタラクティブ環境には、テキスト エディターのすべての機能 (構文の強調表示、オートコンプリートなど) があります。
では、私が作成しているスクリプトを実行するだけでなく、代わりにすべてのテキスト エディター機能を備えた irb にロードする Ruby 用の IDE はありますか?
scheme - なぜSchemeは一流の環境をサポートしないのですか?
私は SICP (Structure and Interpration of Computer Programs) を読んでいて、モジュラー コードを記述する方法として eval と組み合わせて使用することを示している "make-environment" という素晴らしい特別な形式を発見して本当に興奮しました (抜粋)。 「パッケージ」のセクション 4.3 から):
次に、それがどのように機能するかを示します
彼らの例では、私が望む使用法を正確に示しています-スキームで「OO」スタイルを実行するエレガントで最小限の方法です...それらは「タイプ」を「コンス」します。 「make-environment」特殊フォーム (つまり、vtable) と arg (「状態」) によって返されます...
明示的なコードやマクロを大量に書かなくても、Scheme で「シンボルによって」ポリモーフィックなディスパッチを行う方法としてまさに探していたものなので、とても興奮しました。
つまり、たとえば、異なるコンテキストで呼び出す2 つの関数を持つ「オブジェクト」を作成したいのですが、「car」と「cdr」でそれらを参照したくありません。両方とも宣言したいのです。それらを記号名で評価します。
とにかく、これを読んだとき、家に帰って試してみるのが待ちきれませんでした。
PLT スキームと Chez スキームの両方で次のことを経験したときの私の失望を想像してみてください。
SICP で参照されている「make-environment」はどうなりましたか? それはすべて非常にエレガントで、まさに私が望んでいるように見えましたが、最新のSchemeインタープリターではサポートされていないようです?
根拠は何ですか?「make-environment」の名前が違うだけですか?
後で見つけた詳細情報
私はオンライン版を見てみました:
http://mitpress.mit.edu/sicp/full-text/book/book-ZH-28.html#%_sec_4.3
私が読んでいたのはSICPの初版でした。第 2 版では、パッケージに関する議論が、非決定論的プログラミングと「amp」演算子に関するセクションに置き換えられたようです。
scheme - DrScheme で定数識別子を再定義するにはどうすればよいですか?
DrScheme を使用して、Scheme インタープリターを作成しています。Read Eval Print Loop を定義し、eval プロシージャを再定義しています。これは Chez Scheme のような他のスキームの実装では問題なく動作しますが、私は Chez Scheme でのコード編集が好きではないので、これには DrScheme を使用したいと考えています。
次のような定義を行うと: (define (eval exp env) (cond ...)) それは言う: define-values: cannot change constant identifier: eval
それをオーバーライドして、定数識別子を変更できるようにする方法はありますか? これを回避するために、すべての変数の名前を変更する必要はありません。