問題タブ [sicp]
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 - スキーム コードの何が問題になっていますか?
私が SICP 2.20 用に書いた関数は次のとおりです。
そして、私はそれを呼び出そうとします
私が得るエラーは次のとおりです。
equal は #t と #f で機能すると思いました...
オンラインで見つけたコードの例は次のとおりです。実行したところ、動作しました。しかし、私は何を間違っていますか?
scheme - 教会数字による算術
私は SICP を使って作業していますが、問題 2.6によって私は困惑しています。チャーチ数を扱う場合、0 と 1 を特定の公理を満たす任意の関数にエンコードするという概念は理にかなっているように思われます。さらに、ゼロの定義と add-1 関数を使用して個々の数を直接定式化することは理にかなっています。プラス演算子を形成する方法がわかりません。
これまでのところ、私はこれを持っています。
lambda calculusのウィキペディアのエントリを調べたところ、 plus の定義は PLUS := λmnfx.mf (nfx) であることがわかりました。その定義を使用して、次の手順を定式化することができました。
私が理解していないのは、以前に派生したプロシージャによって提供された情報のみを使用して、そのプロシージャを直接派生させる方法です。厳密な証明のような形式でこれに答えることができる人はいますか? 直感的には何が起こっているのか理解できると思いますが、Richard Feynman がかつて言ったように、「構築できなければ、理解することはできません...」
lisp - SICP chpt 4.1 に関する質問: (expr の分析) は eval の高速化にどのように役立ちますか?
私はSICPの次のセクションを読んでいます
http://mitpress.mit.edu/sicp/full-text/book/book-ZH-26.html#%_sec_4.1.7
テキストによると、eval
何度も評価される式は 1 回しか分析されないため、次の will better の変換によりパフォーマンスが向上します。
これは本で与えられたanalyze
関数です:
analyze
本が一度だけ実行されると言っている理由がわかりません。基本的に毎回呼び出されると言うの本体はeval
パラメータとして呼び出されるのではないでしょうか?これは、が呼び出されるたびに が呼び出されることを意味します。((analyze exp) env))
eval
analyze
exp
analyze
eval
私の理解の何が問題になっていますか?フィードバックをいただければ幸いです。
compiler-construction - SICP の最後の 2 つの章の簡単な説明
SICP の最後の 2 つの章 (コンピューター プログラムの構造と解釈)、ch4 メタ言語抽象化、およびレジスタ マシンを使用した ch5 コンピューティングについて、明確かつ簡潔に説明してくれる人はいますか?
また、これら 2 つの章の内容が、学部の標準的なコンパイラ コースと異なるかどうか (およびどのように異なるか) も知りたいです。
sicp - フォームへの追加はどのように機能しますか?(論理プログラミングに関するSICPのセクション)
私は現在、論理プログラミングに関するSICPのセクションで作業していますが、論理的推論、特にフォームへの追加ルールに関する例で立ち往生しています。それらはどのように機能しますか?私がよく理解していないのは、2番目のルールが最初のリストをどのようにcdr-downするかです。たとえば、次のようになります。
(ルール(フォームに追加()?y?y))
(ルール(フォームに追加(?u。?v)?y(?u。?z))(フォームに追加?v?y?z))
a)どのように連絡しますか:
b)そしてこれはどうですか:
c)そして最後に:
ルールマッチングを実行するために必要な特定の精神的なステップに興味があります。
前もって感謝します。
lisp - DrRacket インタープリターは SICP 演習 1.5 に基づく正規順序評価を使用しますか?
次の値に基づいて決定する必要があります。
(テスト 0 (p))
ここで、test は次のように定義されます。
p は次のように定義されます。
私が評価(test 0 (p))
すると、インタプリタは無限ループに入り、評価中であることが示唆されますp
。オペランドはパラメーターに置換される前に評価されるため、これは正規順序評価を示しています。SICP によると、LISP は適用順序評価を使用します。
big-o - O(fib n)複雑さアルゴリズム?
コンピュータプログラムの構造と解釈の講義1Bを見ながら、フィボナッチ数を計算する関数があります。講師は、時間計算量はO(fib n)であると指摘しています。これは、これまで見たことがありません。定数、線形、n + m、2次、多項式、または指数関数の複雑さに丸められるのを見てきましたが、他のO(fib n)アルゴリズムまたは他の興味深い大きなO表記を調べたり、調べたりする必要がありますか?
programming-languages - 熱心な評価/適用順序と遅延評価/通常の順序
私の知る限り、先行評価/適用順序は、関数に適用する前にすべての引数を評価しますが、遅延評価/通常順序は、必要な場合にのみ引数を評価します。
では、先行評価と適用順序、および遅延評価と通常の順序の2つの用語の違いは何ですか?
ありがとう。
lambda - ラムダを使用したスキームでの cons と car のこの実装を理解するのに役立ちます
私の質問は次のコードに関連しています:
私の問題は、このコードが実際にどのように機能するかです。私が理解できる限り、短所。スコープ内に変数 x と y を含むプロシージャを返しています。車。次に、cons から返された手続きを取ります。2 つの引数 p と q を取り、p を返す別のラムダにそれを適用します。私の混乱はその 2 番目のラムダにあります。P と Q の値は正確にどこから来るのでしょうか?
lisp - SICP 演習を行う場合、DrRacket はどの言語に設定する必要がありますか?
SICP演習を行うには、DrRacket でどの言語を選択すればよいですか?