問題タブ [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 - 2016 年の時点で、R7RS (小) を 100% サポートするスキームの実装はありますか?
私はSchemeを学びたいと思っています。R7RSは最後の規格なのでこだわりたい。しかし、Scheme の現在の実装には多くの断片化があり、それらのほとんどは R5RS または R6RS の一部にとどまっているようです。
R7RS の一部をサポートしていることがわかったのは Kawa だけですが、JVM で実行されるため、テール コールの最適化をサポートしていません。
R7RS の完全な実装がまだないほど、Scheme の世界は本当に断片化されているのでしょうか? ない場合は、追いつき次第、作成する予定です。しかし、もし存在するなら、車輪を再発明してその特定の実装に貢献しない方が良いでしょう.
情報をお持ちの場合は、名前だけでなく、適切な詳細情報 (実装の公式 Web サイトまたはメーリング グループからの抜粋でも参照として役立ちます) で回答していただければ幸いです。
ところで、Racket はもう Scheme ではないので、考慮していません。
scheme - 子レコード タイプを構築するときのアリティの不一致
point
次のように定義されたレコードタイプがあります。
ここで、レコード タイプを拡張し、point
次のように新しいレコード タイプを定義します。
スキームシェルの定義に対して上記を実行すると、すべて正常に動作します。point
型を適切に構築できます。ただし、cpoint
次のように型を構築しようとすると:
次のエラーが表示されます。
; ...rfi/9/record.rkt:100:28: アリティの不一致;; 予想される引数の数が、指定された数と一致しません。予想: 1; 与えられた: 3; [、コンテキストの bt]
cpoint
の子なので、コンストラクターで型point
への引数を受け入れる必要があると思いました。point
どうすればこれを機能させることができますか?
PS私はSchemeが初めてです。
scheme - R6RS: 空のリストに適用された構文式フォームは、ラップされた構文オブジェクトを返しますか?
R6RS スキームで次の式を検討してください。
この式を Racket に入力すると、(ラップされた) 構文オブジェクトが返されます。一方、同じ式は Chez スキームで (アンラップされた) 空のリストを生成します。
どのシステムが R6RS に準拠しているのか (または、両方の動作が標準で許可されているのか) 疑問に思っています。R6RS の関連する段落は、入力の解析と出力の生成です。そこには、次のように書かれています。
構文によって生成された出力は、次の規則に従ってラップまたはラップ解除されます... パターン変数を含まない の任意の部分のコピーは、ラップされた構文オブジェクトです。
テンプレートに(syntax ())
はパターン変数が含まれていないため、結果はラップされた構文オブジェクトになるはずであり、Racket は正しいと思われます。
一方、Chez Scheme の作成者である R. Kent Dybvig はこのsyntax-case
システムの発明者の 1 人であるため、Chez Scheme が標準に厳密に従うことが期待されます。
matrix - 行列の回転、関数としては機能しないのに、ライン コマンドでは機能するのはなぜですか?
行列を回転させる方法は、行列の転置を取得してから、すべての行を逆にすることです。map (転置を返す) と reverse (90° 回転を完了する) の 2 つの関数を使用して、コンソールで次のことを行います。
(reverse (apply map list (list (list 1 2 3 4) (list 5 6 7 8) (list 9 10 11 12) (list 13 14 15 16)) ) )
それは正しいのですが、関数を作成したときに機能しません。
次に、次のことを行います。
エラーがスローされるだけです:
mcar: 契約違反が予想されます: mpair? 与えられた: ()
(srfi :41) をインポートしようとしましたが (r6rs にも取り組んでいます)、どちらも機能しません。ただし、この関数は 3 x 3 マトリックスで機能します。
どうすればこれを修正できますか?