問題タブ [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.

0 投票する
3 に答える
2142 参照

scheme - リストの長さが偶数かどうかをチェックするSchemeの関数

こんにちは、リストの長さが偶数かどうかをチェックするスキームの関数のコードを編集しました。

それは正しいですか?

0 投票する
1 に答える
4153 参照

scheme - リスト内の要素のすべての出現を別の要素に置き換えるSchemeの関数

リストから要素を削除することはできますが、Scheme で関数を記述して、リスト内のすべての要素を別の要素に置き換える方法がわかりません。どんな助けでも大歓迎です。

0 投票する
2 に答える
3241 参照

scheme - スキームの継続を理解するのに役立ちます

私はThe Little Schemerと協力して Scheme を学び、自分の環境で PLT-Scheme を使用しています。

The Little Schemerは再帰を大いに助けてくれました (今の私にとっては簡単です) が、「コレクター」を紹介し、関数全体を継続と呼んでいる本の一部に行き詰まっています。

これが彼らが使用したサンプルコードです。私は再帰要素を理解していますが、特にラムダ関数で行き詰まっています - 私の心はパスとそのラムダ関数の引数がどのように設定されているかをたどることができません(それらの唯一の呼び出しは再帰でそれらを再度呼び出すことであるため、関数本体内での具体的な使用はありません)。

ラムダ コレクターへの関数の再帰を介した計算のパスの内訳を誰かが多かれ少なかれ教えてくれれば、それは私を助けるかもしれません。

前もって感謝します!!

0 投票する
1 に答える
3648 参照

recursion - サブリストの最大スキーム

ネストされたリストのリストから最大値を取得する関数を作成しました。関数の一般的な形式は右下にあります。フラットリストとネストされたリストで機能しますが、兄弟のネストされたリストがあると失敗するようです。

これが私のコードです:

失敗するテストリストは次のとおりです。(multi-max '(1 9 83 9 (332 (334) (2 3 4224))))

論理的にどこが間違っているのかわからないので、助けていただければ幸いです。

0 投票する
1 に答える
168 参照

scheme - PLTスキーム:「LISPでのSPELのキャスト」のマクロの1つを変換する

これは、 http://www.lisperati.com/actions.htmlの「マクロ定義マクロ」のコードです。スキームに適切に変換できないようです。誰かがSchemeでこれと同じ種類のものを作成するプロセスを私に説明できますか?

0 投票する
1 に答える
217 参照

macros - 「残り」変数をスキームのマクロの値のリストにバインドする方法

match-extensions を記述するためのヘルパー マクロを作成したいと考えています。私はこのようなものを持っています:

したがって、この let バインディングを実行するマクロが必要でした。私はこのようなものから始めました:

ただしmatch-let、変換時間には定義されていません。

最初の質問は、これを行う他の方法はありますか (つまり、このエキスパンダーを作成する)? おそらく、私が気付いていない plt-scheme に似たようなものがすでにあるか、または何らかの方法で間違っている可能性があります。

最初の質問に対する回答に関係なく、変数のリストをマクロ内の値のリストにバインドしたい場合は、どうすればよいですか?

編集: Eli の回答マクロと組み合わせると、次のようになります。

0 投票する
3 に答える
7593 参照

functional-programming - letrecの利点は何ですか?

「TheSeasonedSchemer」を読みながら、私はについて学び始めましたletrec。私はそれが何をするのかを理解しています(Y-Combinatorで複製できます)が、本はdefine静的なままの引数で動作するすでにd関数を繰り返す代わりにそれを使用しています。

defineそれ自体で繰り返されるd関数を使用する古い関数の例(特別なことは何もありません):

同じ関数の例ですが、以下を使用しletrecます。

少し長くて読みにくいことを除けば、なぜ彼らがletrecを使用するために本の関数を書き直しているのかわかりません。あなたがそれを渡し続けないので、このように静的変数を繰り返すときの速度の向上はありますか?

これは、引数が静的なままであるが、1つの引数が削減されている関数(リストの要素を繰り返すなど)の標準的な方法ですか?

より経験豊富なSchemers/LISPersからのいくつかの入力が役立ちます!

0 投票する
3 に答える
193 参照

racket - PLT スキーム メモリ

そのため、Scheme を使用した Make-memory プログラムの実装について助けが必要です。「書き込み」と「読み取り」の 2 つのメッセージが必要です。つまり、(mymem 'write 34 -116) と (mymem 'read 99) のようになりますよね? and (define mymem (make-memory 100)).....これをどのようにスキームに実装しますか? Alist を使用する???コーディングの助けが必要です。make-memory プロシージャを作成するこのコードがあり、mymem を実行すると ((99.0)) が得られます。これを繰り返す必要があるため、((0.0)) へのドット ペアを含む連想リストを取得します。これをコーディングする方法に関する提案はありますか?? 繰り返してメッセージを書いたり読んだりするために私ができることは誰にもありますか??

はい、これは割り当てですが、このコードを書きました。助けや指示が必要なだけです。はい、可変長引数リストについては知っています。

0 投票する
1 に答える
216 参照

scheme - スキーム-メモリシステム

私はあなたがメモリのスロットに何かを入力するメモリシステムを作ろうとしています。つまり、私が行っているのはAlistを作成することであり、ペアの車はメモリの場所であり、cdrはvalです。読み取りと書き込みの2つのメッセージを理解するためのプログラムが必要です。選択したメモリ位置とその位置に割り当てられた値を表示するだけで読み取りと書き込みにより、位置またはアドレスの値が変更されます。コードを作成して、目的の場所を読み取り、目的の場所に書き込むにはどうすればよいですか?これを自分でテストしてください。どんな助けでも大歓迎です。これは私が持っているものです: