問題タブ [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.
clojure - Clojure - このコードが clojure で機能しないのはなぜですか?
Clojure は初めてで、SICP を使用して学習しています。
SCIP 1.3.1 からこのコードを動作させることができません。
何が欠けていますか?
エラーメッセージは次のとおりです。
lisp - SchemeにLispの「ランタイム」プリミティブに相当するものはありますか?
SICPセクション1.2.6によると、演習1.22:
ほとんどのLisp実装には、システムが実行されている時間を指定する整数を返すランタイムと呼ばれるプリミティブが含まれています(たとえば、マイクロ秒単位で測定されます)。
ランタイムが利用できないように見えるDrSchemeを使用しているので、適切な代替品を探しています。PLT-Scheme Referenceで、current-millisecondsプリミティブがあることがわかりました。より良い解像度のSchemeにタイマーがあるかどうか誰かが知っていますか?
recursion - SICP 演習 1.11 の解き方がわからない
演習 1.11 :
関数は、 ifとif
f
というルールによって定義されます。再帰的なプロセスによって計算する手続きを書きなさい。反復プロセスによって計算する手続きを書きなさい。f(n) = n
n < 3
f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3)
n > 3
f
f
再帰的に実装するのは簡単です。しかし、それを繰り返し行う方法がわかりませんでした。与えられたフィボナッチの例と比較してみましたが、類推として使用する方法がわかりませんでした. だから私はあきらめて(私に恥をかかせて)、説明を求めてグーグルで調べました。そして、私はこれを見つけました:
読んだ後、コードとその仕組みを理解しました。しかし、私が理解していないのは、関数の再帰的定義からこれに到達するために必要なプロセスです。誰かの頭の中でコードがどのように形成されたのかわかりません。
解決策にたどり着くまでに必要な思考プロセスを説明していただけますか?
common-lisp - change-classを使用して、数値から多項式オブジェクトを作成します
SICP 2.5.3で説明されている行に沿って多項式クラスを作成しました(defclassの使用を除く)。多項式とハミング数をシームレスに加算および乗算できるようにしたいのですが、change-classに数値を受け入れさせることはできません。
クラスを整数から浮動小数点に変更して、問題を単純化しようとしました。
しかし、それは私にエラーを与えました:
(fyi)から同じ形式のエラーが発生します:
先に進んで手動変換を実装しますが、組み込みのclos機能を使用したいと思います。
Xachが指摘しているように、強制またはフロートを使用して4をフロートに変更できます。これは、私がやろうとしていたことのより簡単な例として、また、update-instance-for-different-classが間違っている可能性を排除することを目的としていました。
これが私が試したものの長いバージョンで、うまくいきませんでした:
上記の例のようなエラーがまだ発生します。
scheme - スキーム手順の問題
2つのパラメーターを持つ別のプロシージャを返すようにSchemeプロシージャを定義しました。
2つの引数10と0.0001を使用してsinプロシージャを使用してこのプロシージャを実行すると、問題ありません。
この手順を再帰的に実行すると、エラーが発生します
それで、誰かが私の問題がどこにあるか教えてもらえますか?前もって感謝します !!!
PS:これはSICPの演習1.44の一部です
scheme - スキームの循環定義に関する問題
私は現在、演習の第一言語としてGuileを使用してSICPを使用しています。3.5章の演習を実装しているときに、奇妙な動作を見つけました。さまざまなプラットフォームでGuile1.4、Guile 1.8.6、Guile 1.8.7を使用してこの動作を再現しましたが、これは私の設定に固有のものではないと確信しています。
このコードは正常に機能します(そしてeを計算します):
次のコードでも同じ結果が得られます。
ただし、エラーメッセージが表示されます。
したがって、プロシージャ定義に埋め込まれている場合、(define y ...)は機能しませんが、REPLのグローバル環境のプロシージャの外部では正常に機能します。
私はここで何が間違っているのですか?必要に応じて、補助コード(つまり、積分、ストリームマップなどの定義)を投稿することもできます。cons-streamのシステム依存コードを除いて、それらはすべて本の中にあります。Guileのcons-streamの私自身の実装は次のとおりです。
lambda - let in スキームの代わりにラムダを使用する
SICP 1.2.1 には、次のような有理数を作成する関数があります。
GCD を 2 回呼び出すことなく、let の代わりにラムダを使用して同じことを実装する方法に興味があります。私はそれを自分で理解できませんでした。
scheme - DrScheme を使用した SICP 演習 2.26 で、cons がリストのペアではなくリストを返すのはなぜですか?
SICP 演習 2.26 では、このスキーム コードが与えられます。
次に、このコンス コールが与えられます。
結果としてリストのペアが生成されると予想して((1 2 3) (4 5 6))
いましたが、インタープリターは
((1 2 3) 4 5 6)
...4 つの要素を持つリストを返します。最初の要素はリストです。y の扱いが異なるのはなぜですか? 説明のために他のSICPの回答を調べてみましたが、満足のいくものを見つけることができませんでした. では、Scheme/Lisp の専門家は、短所のこの側面に光を当てることができますか? 洞察をお寄せいただきありがとうございます。
lisp - 「コンピュータプログラムの構造と解釈」の表紙は一体何を描いているのでしょうか。
コンピュータプログラムの構造と解釈は、何を描いているのでしょうか。「eval」、「apply」、「λ」のすべてが何を意味するのかはわかっていますが、残りの画像を解読するのに苦労しています。
乙女は一体誰ですか?彼女は魔法使いのために働いていますか?なぜ彼女はテーブルを指さしているのですか?彼女はあの小さなボウルタイプのものを指していますか?それとも本?または一般的なテーブル?彼女はウィザードに、ある種のLispウィザードをテーブルまたはその上のアイテムに適用する必要があることを伝えようとしていますか?それとも、彼の食べ物が冷たくなっているなど、彼女は彼に何か無作法なことを言っているだけですか?
そのテーブルの片方の足は、...足...最後に足が付いているように見えます(足が持つ傾向があるため)?テーブルは片足でどのようにバランスしますか?(または、それは影の中にある別の足ですか?)
[注:不思議に思うかもしれませんが、長いビルドが完了するのを待っています。]