問題タブ [r5rs]
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.
list - スキーム-リストのリストからサブリストを削除する
私はリストのリストを持っています、例えば。、そして私はこのリストからサブリストだけを削除する方法があるのではない((x y z) (y z) (x y))
かと思っていました。はすでに'inside'であるため、サブリストです。この例では、を残します。R5RS Scheme
(y z)
(x y z))
((x y z))
これは私が想像するよりも複雑かもしれませんが、マップまたはフィルターを利用すると思いますが、この方法でリスト全体をどのように「クリーン」にするかはわかりません。
list - R5RSコードをSchemeUnitで動作させることは可能ですか?
私が取っているクラスでは、Scheme の古い R5RS 標準を使用して SICP 割り当てを解決しています。私はテスト ファーストの開発を行うのが好きなので、単体テスト フレームワークが適していると判断し、小規模なテストを作成するために SchemeUnit を選択しました。
これはこれまでのところうまく機能しており、出力のプリミティブ (文字列、数値など) をテストするだけですが、リストをテストしようとすると障害が発生しました。これはおそらく、テストの実行に使用される Scheme ダイアレクトの違いと関係があります。
foo.scm: (define a-list (list 2))
foo-tests.scm: (check-equal? a-list (list 2))
テストを実行したときの結果:
テスト スイートを実行するには"#lang scheme/base
、foo-tests.scm とrequire
schemeunit パッケージの先頭に追加する必要があります。foo.scm には、上部に#lang r5rs
andが必要です。(#%provide (all-defined))
R5RS と "scheme/base" では、リストの実装が何らかの形で異なっていると思います。それらを連携させる方法はありますか?そして、なぜ失敗するのですか ({} vs ())?
list - SCHEME - 独自の追加を作成すると、奇妙な結果が生じる
既存の list に要素を追加するために、独自の append を書きたいと思います。
私は次のように書いています:
しかし、私がこれを行うと:
私は得る:
だから問題は、なぜ(1 2 30 . 11)
ではないの(1 2 30 11)
ですか?
ありがとう
編集:
修理済み :
scheme - このスキームコードの末尾再帰はありますか?
編集:みんなに感謝します。私はこの言語に慣れていないので(2日前に使い始めたばかりです)、そのため、condsに慣れていません。時間があれば書き直すかもしれませんが、基本的なロジックが正しいことを確認したかっただけです。再度、感謝します!
私の割り当ては、リストxと要素nの2つのパラメーターのみを使用して、リストからn番目の要素1 <= n<=listlengthを削除する末尾再帰関数を作成することです。したがって、(remove 1'(abcd))は(bcd)を返します。私は次のように書いていますが、それが実際に末尾再帰であることを確認したいと思います。私が曖昧なのは、再帰呼び出しをIFステートメント内にネストできるかどうかだけです。
time - r5rs の時間またはスレッド関数
時間の関係(速度と移動)で重力の影響を計算するために時間を使用するゲームを作成しました。ゲームは主に r5rs 関数を使用しますが、ラケットで定義されている時間を更新および記憶するためにthread
、およびその他の関数を使用しました。sleep
ここで、r5rs しか利用できないマイクロコントローラーでゲームを動作させたいと考えています。r5rsだけを使って似たようなものを作ることは可能ですか?
これは私が現在使用しているコードです(これはラケット関数を使用しています):
lambda - スキームラムダとすべてのプロシージャの実行
これらの手順を実行しようとすると、電話するまですべて問題ないようです
'memorize TO' unmemorize を変更した後、何が起こるかというと、両方を実行するということです。
「unmemoize」を呼び出すタイミングがわかりません。memoize にも入ります = S
lisp - DrRacket での単純なネストされた評価
そのため、プログラミング言語クラスの演習問題に取り組んでおり、課題の 1 つは、簡単なネストされた加算と乗算を実行できるスクリプト「MyEval」を作成することです。したがって、たとえば、プログラムはこれ(MyEval '(1 +(3 *4)))
以上の処理を実行できますが、減算や 2 つ以上の数値と演算子を実行する必要はありません。それほど複雑ではありません。しかし、私の心は揚げられており、いくつかのガイダンスが欲しい. これは私がこれまでに持っているものです
しかし、皆さんが気付くかもしれませんが、これは最後の内括弧のみを解決するので、そうすると(MyEval '(1 + (1 + 2)))
4 ではなく 3 になります。適切な私に知らせてください。
ありがとうございました!
map - スキームでマップを使用して、表示機能を使用すると奇妙なことが起こります
この手順を呼び出すときのスキーム(私はラケットR5RSを使用しています)
戻ります
何故ですか?虚空はどうした?