問題タブ [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 投票する
4 に答える
5240 参照

scheme - SICPはまだ推奨されていますか?

私はPythonの経験があり、新しい言語を要求し、学んだことを実装するのに苦労していると言いました。彼らは私がSICPを学ぶことを提案しました。それは素晴らしい言語を使用し、素晴らしいプログラミングの基礎を教えていると言っています。

しかし、私はそれが1984年に公開されたことに気づきました。皆さんはそれをお勧めしますか、それとも私は荒らされましたか?:p

ありがとう。

0 投票する
7 に答える
2466 参照

javascript - SICPを勉強するためのスキームインタプリタを実装したい

Structure and Interpretation of Computer Programsという本を読んでいて、スキーム インタープリターを徐々にコーディングしたいと思っています。

最も読みやすい(そして短い)スキームの実装を知っていますか?C で JavaScript を作成します。

0 投票する
2 に答える
390 参照

scheme - SICPビデオ講義2

この例に問題があります

-1+と1+の問題は何ですか、評価するとこの結果が得られます

  • DrScheme:-1+:この関数は定義されていません
  • ラケット:未定義の識別子への参照:-1+

しかし、私は代わりにこれを書き、それは機能します

0 投票する
2 に答える
1113 参照

macros - ラムダ形式を返すMITSchemeマクロをどのように記述しますか?

MITスキームでこの些細な(Common Lispの)マクロに相当するものを作成しようとすると困惑します:

これは、2回目のSICP講義で構築された関数に基づく数値方程式ソルバーである、単純な個人プロジェクト用です。このマクロが「安全」または「衛生的」でないことや、expが'x以外の記号を参照している場合に変数をキャプチャすることは気にしません。書けるようになりたい

ここで、solvは次のとおりです。

入力する代わりに

しかし、MITスキームの構文規則を使用してこれを行う方法を理解することはできません。

私はこれを試しましたが、機能しません:

私はおそらく言及する価値のない他のことを試みましevalたが、役に立たなかったのです。

また、Schemeのマクロシステムに関する優れたチュートリアル(参照ではない)への参照は、小さな簡単な例から始まり、十分な解説付きで構築され、特にバッククォート-コンマスタイルのLISPマクロ(私にとっては非常に直感的です)をに変換する方法を示していますスキームの構文マクロシステムは素晴らしいでしょう。

0 投票する
2 に答える
481 参照

clojure - SICP sqrt NullPointerException

Clojure で最初の SICP コードを実装しているときに、予期しない NullPointerException が発生しました。特に、セクション 1.1.7 の反復平方根手順を実装したいと考えています。

コードは次のとおりです。

これは、十分に小さい値に対してはうまく機能します(sqrt 16)NullPointerException clojure.lang.Numbers.lt (Numbers.java:3693)おおよそ より大きい入力に対してエラーが発生します(square 2718)

何か案は?

トレースバック全体で更新します (以前のものは、repl で取得したすべてです):

スレッド「メイン」での例外 java.lang.NullPointerException at clojure.lang.Numbers.lt(Numbers.java:3693) at sicp_in_clojure.chapter_one$sqrt$good_enough_QMARK___14.invoke(chapter_one.clj:40) at sicp_in_clojure.chapter_one$sqrt. sicp_in_clojure.chapter_one$sqrt.invoke(chapter_one.clj:37) で sicp_in_clojure.chapter_one$eval19.invoke(chapter_one.clj:48) で (chapter_one.clj:48) を呼び出します。 :6465) clojure.lang.Compiler.load(Compiler.java:6902) で clojure.lang.Compiler.loadFile(Compiler.java:6863) で clojure.main$load_script.invoke(main.clj:282) で clojure .main$script_opt.invoke(main.clj:342) で clojure.main$main.doInvoke(main.clj:426) で clojure.lang.RestFn.invoke(RestFn.java:408) で clojure.lang.Var. clojure.lang.AFnでinvoke(Var.java:401)。applyToHelper(AFn.java:161) at clojure.lang.Var.applyTo(Var.java:518) at clojure.main.main(main.java:37)

0 投票する
2 に答える
574 参照

emacs - 情報バッファーからスキーム インタープリターにコードを送信する

Emacs で SICP を勉強したいです。MIT スキーム、Emacs 24 をインストールし、sicp 情報をダウンロードしました (このガイドhttp://www.pchristensen.com/blog/articles/setting-up-and-using-emacs-infomode/を使用)。これで、専用バッファー (Mx run-scheme) でスキーム インタープリターを実行できるようになりましたが、情報バッファー (Cx Ce)から定義式の 1 つを送信しようとすると、次のエラーが発生します。

Emacs が Lisp インタプリタでこのコードを実行しようとしているようです。この問題の回避策として、スキーム バッファ (*.scm ファイル) を開き、info からコードをコピーし、Cx Ce で実行します。しかし、情報バッファから直接実行したいです。どうすればこれをセットアップできますか?

0 投票する
0 に答える
363 参照

functional-programming - 割り当てステートメント - 有害と見なされますか?

ボブおじさんがSICPの本と課題ステートメントについて話しているこのビデオに出会い、考えさせられました (そしてSICP の対応する章を読みました)。

リストされている引数 (ローカル状態、副作用など) は、初版が1984 年に発行されたことを考えると、 Java や C# などの現代の言語では依然として問題であるかどうか疑問に思っています。その時は問題だったのかもしれません。それは今でもありますか?それとも何か変わった?

たとえば、Java には不変 Stringの s があります。割り当てが有害であると私が考えることができる特定の領域は同時実行性です(間違っている場合は修正してください)。割り当てがないということは、同期もリソースのデッドロックもないということですよね?

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

scheme - r5rsファイルをラケット内の別のファイルに含める

私のコースの1つは、SICPの一部のセクションでDrRacketを使用しています。私たちはメタサーキュラーエバリュエーターに取り組んでおり、作業で使用する必要のあるR5RSコードファイル(set-car!およびset-cdr!)があります。R5RSファイルは約500行なので、別のバッファーに保存することをお勧めします。どうすればそれを回答バッファの定義に含めることができますか?がracket/include必要なよう#lang racketですが、その言語ではありませんset-car!set-cdr!

0 投票する
2 に答える
764 参照

lisp - SICP演習3.8-手順が機能する理由 (私はそれが環境についてだと思います)

SICPの演習3.8は、次のように説明されています。

セクション1.1.3で評価モデルを定義したとき、式を評価する最初のステップはその部分式を評価することであると述べました。ただし、部分式を評価する順序(たとえば、左から右または右から左)を指定したことはありません。割り当てを導入するとき、プロシージャへの引数が評価される順序は、結果に違いをもたらす可能性があります。+への引数が左から右に評価される場合は評価(+(f 0)(f 1))が0を返し、引数が右から左に評価される場合は1を返すように、単純なプロシージャfを定義します。

fそして、最初に電話をかけた場合、もう一度電話をかける(f x)と必ず戻るように手順を書きました。しかし、なぜそれが機能するのか正確にはわかりません。私が書いた手順は次のとおりです。xf

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

lisp - 私は SICP を読んで従おうとしていますが、オンラインで見つけた Lisp インタープリターが DEFINE キーワードで失敗するのはなぜですか?

これは本です...

http://mitpress.mit.edu/sicp/full-text/book/book.html

ここに示されているコードを操作するためにどのインタープリターを使用する必要があるか考えていますか?

これまでのところ、オンラインでいくつかの Lisp インタープリターをダウンロードして試してみましたが、DEFINE を使用しようとするとエラーが発生するだけです。

例:

このセクションから: http://mitpress.mit.edu/sicp/full-text/book/book-ZH-10.html#%_sec_1.1

ここに入力してください: http://www.ugcs.caltech.edu/~rona/tlisp/

「lispbox」でも同様の結果が得られました。

Ah HA: http://sisc-scheme.org/sisc-online.php動作します。チップ blabla999 をありがとうございます。すぐに回答を受け付けます。

さらに調査すると: Scheme != Common Lisp