SchemeではなくClojureでSICPにアプローチする


11

私はソフトウェアエンジニアリングプログラムの3年生で、SICPを読むというアイデアをアドバイザーに伝えて、このすべてのソフトウェアの背後にある原理をより深く、より根本的に理解するようにしました。

彼は、本を完成するためにSchemeを学ぶのではなく(Lispの現代の方言ほど一般的ではないため)、代わりにClojureで演習を行うことを提案しました。

それはすでに難しい本です。より現代的なClojureで本の練習を試みた場合、それはどのように機能しますか?たとえば、実際のソリューションは見つかりません。Schemeで教えている構文は異なります。

回答:


14

大学での私の最初の年に私が取った最初のプログラミングコースはSICPを使用していました(それは1988年でした)。しかし、私はあなたのような同様の問題を抱えていました:私自身のコンピューター(実際にはコモドールアミガ)には、その時点で利用可能なScheme実装はなく、異なるLisp方言だけでした(その名前を覚えていません)。

しかし、Lispの柔軟性を考えると、不足しているlispマクロと関数をいくつかのスクリプトに追加するだけで、Scheme構文を「エミュレート」するのは非常に簡単でした。これは、コース中に必要な第1章から第3章までのすべての演習を実装するのに実際には十分でした(SICPは実際には完全なSchemeスタックを必要とせず、小さなサブセットで十分です)。

だからClojureは現代のLisp方言であるため、似たようなことができると思います。これにより、SchemeまたはClojure、あるいはその両方の混合物を自由に選択できるようになります。

もちろん、Clojureで演習を直接解決することも可能です。どちらの言語も非常に似ています。さらに重要なのは、SICPは、言語の構文のプログラミングに関するものではありません、それは抽象化の右の使用についてプログラミングに(例えば、機能、データ、およびオブジェクトを含みます)。したがって、考えられる構文の問題をあまり考えないでください。これらはこの本の焦点では​​なく、おそらく軽度の関心事です。


6
私が予見する唯一の問題は、clojureには1. TCO(一般的な呼び出しではなく、recur末尾再帰のみを処理する)と2.の欠如がcall-with-current-continuation4章に必要であるということです。
Daniel Gratzer 14

2
@jozefg:OPが第1章から第3章まで成功すれば、おそらくClojureとSchemeの構文の違いについて文句を言わなくなる時点で彼はおそらくそうなると思う;-)
Doc Brown 14

考える@DocBrown 編集の答えに上記のコメントの章1-3(そしておそらくあなたが同意する場合は、第4章の問題を説明について明確化するこれらを議論するコメントを
ブヨ

@gnat:コメントは確かに正しいですが、私見は少し重要です。私の答えの重要な部分は最後の段落です。
Doc Brown 14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.