問題タブ [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.

0 投票する
1 に答える
1907 参照

scheme - スキーム コードの何が問題になっていますか?

私が SICP 2.20 用に書いた関数は次のとおりです。

そして、私はそれを呼び出そうとします

私が得るエラーは次のとおりです。

equal は #t と #f で機能すると思いました...

オンラインで見つけたコードの例は次のとおりです。実行したところ、動作しました。しかし、私は何を間違っていますか?

0 投票する
3 に答える
3799 参照

scheme - 教会数字による算術

私は SICP を使って作業していますが、問題 2.6によって私は困惑しています。チャーチ数を扱う場合、0 と 1 を特定の公理を満たす任意の関数にエンコードするという概念は理にかなっているように思われます。さらに、ゼロの定義と add-1 関数を使用して個々の数を直接定式化することは理にかなっています。プラス演算子を形成する方法がわかりません。

これまでのところ、私はこれを持っています。

lambda calculusのウィキペディアのエントリを調べたところ、 plus の定義は PLUS := λmnfx.mf (nfx) であることがわかりました。その定義を使用して、次の手順を定式化することができました。

私が理解していないのは、以前に派生したプロシージャによって提供された情報のみを使用して、そのプロシージャを直接派生させる方法です。厳密な証明のような形式でこれに答えることができる人はいますか? 直感的には何が起こっているのか理解できると思いますが、Richard Feynman がかつて言ったように、「構築できなければ、理解することはできません...」

0 投票する
3 に答える
441 参照

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))evalanalyzeexpanalyzeeval

私の理解の何が問題になっていますか?フィードバックをいただければ幸いです。

0 投票する
1 に答える
2598 参照

compiler-construction - SICP の最後の 2 つの章の簡単な説明

SICP の最後の 2 つの章 (コンピューター プログラムの構造と解釈)、ch4 メタ言語抽象化、およびレジスタ マシンを使用した ch5 コンピューティングについて、明確かつ簡潔に説明してくれる人はいますか?

また、これら 2 つの章の内容が、学部の標準的なコンパイラ コースと異なるかどうか (およびどのように異なるか) も知りたいです。

0 投票する
1 に答える
435 参照

sicp - フォームへの追加はどのように機能しますか?(論理プログラミングに関するSICPのセクション)

私は現在、論理プログラミングに関するSICPのセクションで作業していますが、論理的推論、特にフォームへの追加ルールに関する例で立ち往生しています。それらはどのように機能しますか?私がよく理解していないのは、2番目のルールが最初のリストをどのようにcdr-downするかです。たとえば、次のようになります。

(ルール(フォームに追加()?y?y))

(ルール(フォームに追加(?u。?v)?y(?u。?z))(フォームに追加?v?y?z))

a)どのように連絡しますか:

b)そしてこれはどうですか:

c)そして最後に:

ルールマッチングを実行するために必要な特定の精神的なステップに興味があります。

前もって感謝します。

0 投票する
1 に答える
1673 参照

lisp - DrRacket インタープリターは SICP 演習 1.5 に基づく正規順序評価を使用しますか?

次の値に基づいて決定する必要があります。

(テスト 0 (p))

ここで、test は次のように定義されます。

p は次のように定義されます。

私が評価(test 0 (p))すると、インタプリタは無限ループに入り、評価中であることが示唆されますp。オペランドはパラメーターに置換される前に評価されるため、これは正規順序評価を示しています。SICP によると、LISP は適用順序評価を使用します。

0 投票する
1 に答える
799 参照

big-o - O(fib n)複雑さアルゴリズム?

コンピュータプログラムの構造と解釈の講義1Bを見ながら、フィボナッチ数を計算する関数があります。講師は、時間計算量はO(fib n)であると指摘しています。これは、これまで見たことがありません。定数、線形、n + m、2次、多項式、または指数関数の複雑さに丸められるのを見てきましたが、他のO(fib n)アルゴリズムまたは他の興味深い大きなO表記を調べたり、調べたりする必要がありますか?

0 投票する
3 に答える
5276 参照

programming-languages - 熱心な評価/適用順序と遅延評価/通常の順序

私の知る限り、先行評価/適用順序は、関数に適用する前にすべての引数を評価しますが、遅延評価/通常順序は、必要な場合にのみ引数を評価します。

では、先行評価適用順序、および遅延評価通常の順序の2つの用語の違いは何ですか?

ありがとう。

0 投票する
1 に答える
522 参照

lambda - ラムダを使用したスキームでの cons と car のこの実装を理解するのに役立ちます

私の質問は次のコードに関連しています:

私の問題は、このコードが実際にどのように機能するかです。私が理解できる限り、短所。スコープ内に変数 x と y を含むプロシージャを返しています。車。次に、cons から返された手続きを取ります。2 つの引数 p と q を取り、p を返す別のラムダにそれを適用します。私の混乱はその 2 番目のラムダにあります。P と Q の値は正確にどこから来るのでしょうか?

0 投票する
1 に答える
1380 参照

lisp - SICP 演習を行う場合、DrRacket はどの言語に設定する必要がありますか?

SICP演習を行うには、DrRacket でどの言語を選択すればよいですか?