問題タブ [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.
scheme - スキーム R5RS の ANTLR 文法
私はANTLRの初心者で、例で学んでいます。私はターゲット言語として C を使用しています。この例は、この質問から取得したScheme R5RS文法ファイルで、少し変更されています(文法名を変更し、文法仕様を変更せずにいくつかのオプションを追加します)。
antlr はレクサーとパーサーを生成し、main()
初期化を行ってパーサーを呼び出すだけのテストでコンパイルします。スキーム コードの一部を使用してテスト プログラムを実行すると、パーサーが何らかの構文エラーを検出します (これは発生してはなりません!)。
main
test.c の関数
test.scm のスキーム コード:
端末出力:
文法仕様を読みましたが、正しいです。問題がどこにあるのかわかりません...誰か助けてくれますか?ありがとう!
===================== 返信 =========================
pattern
との文法規則に従って、template
以下のコード フラグメントに進みました。解析はそれと一致し、代替手段がないtemplate
ため失敗したと思います。template
quasiquote
の文法規則template
は R5RS 仕様に正しく準拠しており、コードは他の R5R スキーム実装で受け入れられていると思います (Scheme48 と Guile でテストしました)。これはどのように起こりますか?
私の分析に何か問題があるに違いないと思います...
random - 無限のランダム ストリーム
0 から 9 までの数字の無限ランダム ストリームを作成するのに問題があります。
唯一の問題は、(random 9)
一度だけ開始されるように見えることです。ストリームは確かにランダムですが、ストリームの値は一定のままです。
私は得る7, 7, 7, 7, 7
か3, 3, 3, 3, 3
無限ループが最初からやり直すたびにランダム関数を開始する方法についてのアイデアはありますか? 私はオンラインで検索しましたが、これに取り組む方法が見つかりませんでした。
scheme - R5RSでこれをプログラムする方法は?
dr ラケットの r5rs の構文でこれをコーディングするのに助けが必要です。最初の n 個の偶数の合計を計算するように関数を適応させます。
compiler-construction - Is there a digest for different "RnRS" Scheme standards?
I need to choose a Scheme standard for an academic compiler implementation. It has to be simple enough, but should still be a powerful language. There are several (RRS–R7RS) standards of Scheme. Is there a public comparison of these reports for choosing? If no, which one would you recommend for a first compiler?
lisp - Schemeのdefineの返り値は?
define
Schemeの戻り値が気になります。だから私はラケットで次の行を書きました
そして、エラーを取得します
これについて 2 つの質問があります。
define
戻り値がないということですか?- R5RS によれば、
define
は式ではありません。プログラム構造です。式だけが戻り値を持ち、他のフォームには戻り値がないというのは本当ですか?
scheme - 入力値を 2 つではなく 1 つだけ受け取るスキーム関数
入力したリスト(iota 1 10)を印刷するこの関数の下にあるので、リストに1〜10の数字を(1 2 3 4 5 6 7 8 9 10)のように印刷します。これを変更して、1 つの数字のみを取得し、1-(選択した数字) からリストに出力するにはどうすればよいでしょうか。私はこれについてどうすればいいのか頭を悩ませることができません。ありがとう。
map - 手続きではない申請(スキームマップ手続き)
R5RS で独自の簡略化されたマップ プロシージャを作成しようとしています。つまり、プロシージャと 2 つのリストを取り、どちらかが空になるまで、2 つの引数リスト内のオブジェクトのすべてのペアに対して呼び出されたプロシージャの結果を含むリストを返します。
これは、次のような算術演算子ではうまく機能します。
ただし、#t または #f のいずれかを返す匿名ラムダ関数 (both? プロシージャの戻り値) を渡そうとすると、これは機能しません。
DrRacket で受け取った特定のエラーは次のとおりです。
このエラーを修正する方法を誰かが教えてくれたら、とてもうれしいです。このコードが失敗する理由がわかりません。