私はPLTスキームを使用していますが、いくつかの問題があります。SICPを介して作業するためのより良い実装を知っている人はいますか?
8 に答える
Racket (以前の PLT スキーム)を使用します。
DrRacket IDE は、SICP を含むすべての Scheme の出発点として最適です。
ドキュメントでキーワードを検索するには、キーワードにカーソルを合わせて を押しF1ます。DrRacket では、REPL (read-eval-print-loop) で画像を直接見ることができます。
Neil van Dyke によるDrRacket の SICP サポート。
更新 (2016): 新しい SICP パッケージはhttp://pkgs.racket-lang.org/#[sicp]にあります。
パッケージ マネージャー (DrRacket 内) でダウンロードするか、raco
.
マニュアル
Update2 (2016): また、SICP 画像言語の新しい実装を試してみたい場合は、sicp-pict2.rktをダウンロードしてください。
Update3 (2020): sicp-lang パッケージには、sicp 言語と sicp 画像言語の実装が含まれています。
ドキュメンテーション: DrRacket
ソースコードの SICP サポート: GitHub
Racket の sicp-lang パッケージ: sicp-lang パッケージ情報
注: ピクチャー ランゲージには、本で説明されているピクチャー ランゲージよりも多くの機能 (色や大きいサイズなど) があります。ソースには例が含まれています: https://github.com/sicp-lang/sicp/blob/master/sicp-pict/main.rkt
MITスキームを使用します。
これはSICPの作成者によって推奨されており、MITの6.001:コンピュータプログラムの構造と解釈コースで使用されています。
MIT/GNU スキーム、SICP互換パッケージをロードすることを確認してください(はい、SICP演習の動作を保証する特定のライブラリを提供します)。
これを macOS で行うのは驚くほど面倒でした。Homebrew を使用していると仮定した場合の、現在の動作は次のとおりです。(たまに実行したいかもしれませんbrew update
)。
brew cask install racket
raco setup # might be optional
raco pkg install sicp
(require sicp)
これで、実行するか、単に実行できます
racket -l sicp --repl
と省略したい場合がありますscheme
。それはbashで
alias scheme='racket -l sicp --repl'
あなたがあなたに追加できる~/.bashrc
今週、SICPを始めたばかりです。
現在、MITスキームはUbuntu Linux(9.04 "jaunty")に組み込まれています。将来的には機能する可能性があります。
DrSchemeは機能しており、正常に機能しています。上記のsoegardのパッケージ、またはsoegardのパッケージに基づいてhttp://www.neilvandyke.org/sicp-plt/から入手できるNeilVanDykeのパッケージを使用できます。このパッケージの良いところは、インストール時に、Language | ChooseLanguage....メニュー項目を使用してSICPを選択できることです。
CHICKEN スキームには、SICP をサポートするsicp ライブラリがあります。chicken-install sicp
ソースコードの最初にこれを実行して書き込むことでインストールできます: (use sicp)
.
私は現在、Chez Schemeを使用して SICP に取り組んでいます。それはSchemeのかなり古い方言なので、おそらくSICPが書かれたものからそれほど遠くないでしょう.
Chez Scheme プロジェクト ページは、Unix ライクなプラットフォームでビルドできる Windows バイナリとソースにリンクしていることに注意してください。しかし、Mac を使用している場合は、おそらくやりたいと思うでしょう。
brew chezscheme
man chez
homebrewがあると仮定すると、これは本当に必要です。
なぜMITスキームではないのですか? インタラクティブなフロント エンドは、EMACS 規則を使用するエディターである Edwin であるためです。(現在、これは実際の EMACS モードであり、Scheme で実装されていました。) 私は基本的な EMACS を知っていましたが、私のスキルは使用されなくなったため衰退しました。
なぜDrRacketではないのですか?@frederick-squid の醸造手順を見ていたら、試してみたかもしれません。代わりに、scheme と sicp の公式の指示に従おうとしましたが、これらは非常に時代遅れです。次に、IDE をスキーム モードにしようとしましたが、これは直感的であるように見えますが、そうではありません。
面倒すぎる。そして、特に、Scheme の貧弱なサポートが最初の疑問を引き起こしたような、派手な言語設計 IDE に取り掛かりたいかどうかはわかりません。