問題タブ [repl-printed-representation]
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 - スキームとラケットでのネストされた引用符の動作
Racketで関数を記述しているときに、記号の前に1つではなく2つの一重引用符を誤って入れてしまいました。つまり、誤って'' aを記述し、ネストされた引用符の動作が奇妙に見えることを発見しました。私はDrRacketを使用しており、これをRacketlangとR5RSlangの両方でテストしました。
プリント:#t。
プリント:引用
だが
と
両方の印刷:'a
誰かがScheme(およびRacket)で関数ペアを使用する理由を教えてもらえますか?(quote(quote a)))を2つの要素quoteとaのペアとして解釈しますが、関数writeは(quote a)の代わりに'aを出力します。
scheme - ラケットでの引用の動作
(quote x)
に評価しx
、 に(quote (x y z))
評価し(x y z)
、に(car (quote (x y z))
評価することに慣れていx
ます。理由は単純です。quote は引数を評価せず、そのまま返す特別な形式です。
Racket を使い始めたばかりですが、 がに評価され、 に評価され、 に評価(quote x)
されると考えられます。 (quote x)
(quote (x y z))
(quote (x y z))
(car (quote (x y z))
(quote x)
実際には、これらをそれぞれ 、 、 と出力しますが、それ'x
は'(x y z)
同じ'x
ことです。
誰かがここで理由を説明できますか? 何らかの理由で が と(quote (x y z))
評価された場合、(quote (x y z))
その車は であるべきではありませんquote
か? どこ(quote x)
から来たの?
私が知る限り、Racket は、計算全体を通して、私が慣れ親しんでいるのと同じように内部的に動作しますが、最終結果を出力するときになると、それを引用形式でラップします。これはすべての場合に正しいですか?もしそうなら、なぜそれをしたいのですか?
functional-programming - ラケットの'(アポストロフィ)とは?
'
ラケットのサインの意味がちょっとわかりません。私には、同じ記号が異なる意味を持っているように見えます。以下の 2 つの簡単な例を見てください。
vs を要素として含む、新しく割り当てられたリストを返します。
字句情報、ソースの場所などを除いて、データ(つまり、プログラム フラグメントの表現) に対応する定数値を生成します。引用符で囲まれたペア、ベクトル、およびボックスは不変です。
だから私の質問は次のとおりです:'
記号には2つの意味(記号とリスト)がありますか、それとも同じデータ型でlist
実際に引用符で囲まれた定数値を返しますか? 2番目の場合、なぜこれが機能するのですか:
(また(eval '(+ (- 2 13) 11))
、動作し、正しく評価され0
ます)
しかし、これはしません:
おそらく関連: Lisp/Scheme の ' (アポストロフィ) とは?
racket - 関数によって返されるリストの結果がおかしく見えるのはなぜですか?
このコードを使用していますが、希望どおりにリストが作成されません。(evenList (list 1 2 3 4))
は REPL で に評価され(cons 2 (cons 4 '()))
ますが、 のようになりたいです(list 2 4)
。
lisp - Lispで出現回数を数える
Lisp のリスト内のアトムの出現回数をカウントするコードを Lisp で作成しようとしています。問題は、コードが atom 以外のすべてのアトムに対して機能()
することNIL
です。コードの例:
()
ではなく表示する方法について何か考えはありNIL
ますか?
scheme - コンスを使用して ((a . b) . (c . d)) を実行できますか?
;;; そして、他の手段やドットペアがこのような2番目の要素を持つことができない場合は?