問題タブ [r6rs]
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 - r6rs と define-record-type
みなさん、
クラスの場合、いくつかのライブラリをインポートする必要がありました。
エラーが発生しました。ライブラリをチェックアウトした後、問題は基本的に次のようになります
このエラーを与える r6rs : define-record-type: unbound identifier in module in: define-record-type
このライブラリで:
scheme - 字句スコープと構文ケース
パターン マッチング マクロを作成しようとしています。あまり進んでいませんが、すでに混乱しています。私のテストコードは次のとおりです
これを実行すると、出力が生成されます(1 2 3)
。
正直なところ、私はこのコードが失敗することを期待して書きました。parse-clauses
から返された構文が未定義のシンボルを参照していると思いましたx
。しかし、#'x
返された fromはラムダ式parse-clauses
のパラメーターを参照しているようです。x
理由がわかりません。
このわずかな違いは、私をさらに混乱させます。
これにより、エラーが発生しますx: identifier used out of context in: x
。私が理解しているこのエラーx
は でローカルにバインドされてparse-clauses
いますが、そのスコープ外で参照を使用しているため、エラーが発生します。
私が言いたいのは、2 番目の例では字句コンテキストが重要であることを示しているが、最初の例では字句バインディングがないx
ため、無関係のバインディングを参照することになるのはなぜでしょうか?
あまり混乱していないことを願っています。説明は大歓迎です。
Racket 5.3.6 を使用しています。
scheme - R6RSのletrec、letrec*とRacketのletrecの違いは?
と の両方が R6RS にありますがletrec
、Racket にしかありません。これらの違いは何ですか?letrec*
letrec
letrec*
exception - 値がSchemeで「エラー」タイプかどうかを確認するにはどうすればよいですか?
Scheme r6rs の標準ライブラリに関するマニュアルでは、ライブラリをインポートすると、特定の値が型であるかどうかを確認する(rnrs exceptions (6))
ために呼び出すことができるはずであることが示唆されています。単体テストのためにこれを行いたい。ライブラリをインポート ヘッダーに追加すると、コードがコンパイルされるので、インポートが正常に機能していることがわかります。しかし、DrRacket はまだ未定義として認識します。ここで何が起こっているか知っている人はいますか?(error? val)
&error
error?
私のコード:
scheme - 平方根や整数根などの正確/不正確な結果
R6RS 3.4 実装要件の読み取り
... などの潜在的に不正確な演算は
sqrt
、正確な引数に適用された場合、可能な限り正確な答えを生成する必要があります (たとえば、正確な 4 の平方根は正確な 2 であるべきです)。
(1) これは、(* 0 2.2)
生産しなければならない0.0
が、決して0
結果としては生じないという意味ですか?
ただし、これは必須ではありません。...
(2) これは(/ 4 2)
、結果として 2.0 も生成される可能性があることを意味しますか?
(3) そして、この方法で整数根を提供する実装はありますか? 一般に、整数の平方根の機能を取得するにはどうすればよいですか? (ここにインデックスがあります)(再帰的/反復的な実装はしないでください)
list - r6rsと互換性のないラケットリスト?
私は教授の一人からコードを再利用しなければならないプログラムを書いています。私のプログラムは Racket で書かれており、再利用したいコードは r6rs で書かれています。
プログラムをテストしようとすると、常に失敗します。これは、リスト(ラケット リスト)を引数としてプロシージャを呼び出すためですが、そのプロシージャは R6RS ファイルにあります。R6RS ファイルには があり(assert (list? argument))
、これは常にfalse です...
ここに簡単な例があります: ラケットコード:
R6RS コード :
R6RS ファイルのlist?
テストは常に false です...上記の例のように、新しく作成されたリストを引数として渡しても。
list?
テストの結果が真になるように、上記の例と同じことを行うにはどうすればよいでしょうか。
ご協力いただきありがとうございます!
編集: 不変リストで true になる r6rs テストが見つかりませんでしたが、問題を解決する別の方法を見つけました (可変リストをプロシージャに渡すことにより)。
file - IronScheme の既存のテキストファイルに文字列を追加します
IronScheme を使用してログ ファイルを作成しようとしており、racket を使用してそのコードを作成しました。ラケットでは問題なく動作しますが、IronScheme ではエラーがスローされます。これは私たちがこれまでに持っているものです:
with-output-to-file を使用する際に「exists」オプション パラメータを使用する方法を参照してください。このオプションのパラメーターを IronScheme で機能させる方法がわかりません。これを機能させる方法、または代替方法はありますか?
既存の .txt ファイルに文字列を追加したいことに注意してください。オプションの引数を使用しない場合、ファイルが既に存在するというエラーがスローされます。