@uents blog

Code wins arguments.

2015-01-01から1年間の記事一覧

SICP 読書ノート#42 - RubyでSchemeインタプリタをつくろう(1)

いよいよ4章。 metacircular (超循環評価器) というものがいきなり登場しました。 被実装言語と実装言語が同じインタプリタのことをそう呼ぶらしく、冒頭からSchemeで実装したSchemeインタプリタが例として登場します。 ただ id:higepon さんが指摘されてい…

SICP 読書ノート#41 - 第3章 まとめ

ところどころ飛ばしましたが、3章をひと通り読み終えました。この章で学んだことを上手くまとめるのは相当難しいですが、自分なりに整理したいと思います。 1章〜2章では手続きやデータによる抽象化について学びましたが、3章はそれらのモジュールをいかに組…

SICP 読書ノート#40 - 3.5.5 関数プログラムの部品度とオブジェクトの部品化 (pp.209-210)

「§3.5.5 関数プログラムの部品度とオブジェクトの部品化」から。 §3.1で乱数を生成する手続きrandが出たが、それを応用して乱数の無限ストリームrandom-numberを定義する。random-initは定数なので何度やっても結果は同じになる。 ;; §3.1から転用 (define …

SICP 読書ノート#39 - 3.5.4 ストリームと遅延評価 (pp.205-209)

(2015/09/15追記) SICPテキストのストリームでは問題3.77のテスト実行で返ってこないため、ここではracket/stream版を使っています。ソースコードはGitHubに置いています。 https://github.com/uents/sicp/blob/master/ch3/ch3.5.4.scm https://github.com/u…

SICP 読書ノート#38 - 3.5.3 ストリームパラダイムの開発 (pp.198-205)

前半はある一定の値に収束していく無限ストリーム(数列)の収束を加速させる手法や、対のストリームについて。数学的なトピックが中心だと思うので、バッサリ飛ばします。早く4章に行きたいのも大きいけど… 後半の「信号としてのストリーム」の節はストリーム…

SICP 読書ノート#37 - 3.5.2 無限ストリーム(2) (pp.196-197)

問題 3.59 べき級数、聞き覚えはあるから習ったことはあるんだろうけど、さっぱり思い出せない。こんな時はWikipedia。先生いつもありがとう。 冪級数 - Wikipedia (a) べき級数の項のストリームを引数に取り、それを積分した結果の項のストリームを返すinte…

SICP 読書ノート#36 - 3.5.2 無限ストリーム(1) (pp.193-196)

“To inifity and beyond” トイ・ストーリーでのBuzz Lightyearの決め台詞です。 無限ストリーム(infinite streams)を極めると、さらにその先の世界が見えるかもしれない :) トイ・ストーリー MovieNEX [ブルーレイ+DVD+デジタルコピー(クラウド対応)+MovieNE…

SICP 読書ノート#35 - 3.5.1 ストリームは遅延リスト (pp.187-192)

いよいよストリームへ。 生まれて初めてその概念に触れたけど驚きの連続。特にdelayとforceによる実装が何とも直截的で素敵すぎる。やはりSICPはもっと早くに読むべきだった… ストリームを使うには (2015/08/20追記) 実行環境がRacketの場合、ストリームを使…

SICP 読書ノート#34 - 3.4 並列性:時が本質的 (pp.175-187)

前節までに局所状態を持つオブジェクトを取り入れたけれど、局所状態とは即ち「時」を意識することになる。ここでは異なるタイミングで複数のプロセスから共有オブジェクトの状態を参照したり変更したりする場合に、どういった課題があるかといったことを検…

SICP 読書ノート#33 - 3.3.5 制約の拡散 (pp.168-175)

「§3.3.5 制約の拡散」から。 全体のソースコードはGitHubに置いています。 https://github.com/uents/sicp/blob/master/ch3/ch3.3.5.scm 原本のタイトルは "Propagation of Constraints" なので「拡散」というよりかは「伝播」の方が適切かもしれない。 前…

Mac OS X YosemiteにGNU Emacsをインストール

前回の記事でHomebrewを導入 しましたが、その続きでGNU Emacsをインストールします。 Emacsのインストール 検索するとhomebrew版とhomebrew-cask版の両方がヒットしますが、 % brew search emacs emacs #=> homebrew版 Caskroom/cask/emacs #=> homebrew-ca…

Mac OS X YosemiteにHomebrewをインストール

Mac

前回の作業から Yosemiteにアップグレードまで済ませたので、さらにHomebrewをインストールし直した際の作業メモ。 環境 Mac OS X Yosemite 10.10.1 Xcode Command Line Toolsはすでにインストール済み インストールしていなくて、Homebrewをインストールす…

Homebrew/RubyGems/npmのアンインストール

Mac

重い腰を上げてLionからYosemiteに一気にアップグレードしようと思ったけど、 Homebrewあたりも使い始めて3〜4年経過し使っていないパッケージも溜まってきて、 Yosemiteにした途端にHomebrewがまともに動かないとか嫌だし、 brew upgradeに無駄に時間がかか…

SICP 読書ノート#32 - 3.3.4 ディジタル回路のシミュレータ (pp.160-168)

「§3.3.4 ディジタル回路のシミュレータ」から。 全体のソースコードはGitHubに置いています。 https://github.com/uents/sicp/blob/master/ch3/ch3.3.4.scm 回路の実装 論理回路の実装 テキストのこの章のコードを写経しないとシミュレーションを走らせるこ…

2015年の抱負

手短に。 SICP読了 アンダースタンディング・コンピューテーション読了 新しいプログラミング言語を1つ以上習得する (たぶんRubyかPython) 英語のプログラミング本を1つ以上読破する 機械学習をかじる 娘のおもちゃをハンドメイドする SICPは3月までに。他…