SICPのambの実装を読む前にambの実装を想像するとambは継続を使わなければ実現出来ないような気がします。 そこで継続の動作を復習したのですが、やっぱり全然理解出来ていませんでした。 復習した結果として「継続は計算処理終了後の将来像を表現したもの」…
SICP 4.3の非決定計算に入りました。 ここからambという新しい特殊形式が導入されます。 ambの引数に取った値のどれか一つ返すようです。 実装については4.3.3 amb評価器に入るまでお預けです。 requireとか継続使わないと実装できない気がしますが、どうや…
scheme SICP"SICP 4.2 schemeの変形"を読んで遅延評価するインタプリタを書きました。 実装したインタプリタは前回の構文解析分離タイプのインタプリタを一部修正したものなので本文中の実装とはちょっと違います。 このインタプリタは以下の不具合がありま…
SICP再開しました。 "4.1.7 構文解析を実行から分離する"を読んで実装したプログラムを載せておきます。 問題4.22の解答はプログラム中のanalyze-letの実装のとおり。問題4.23の解答はこんな感じ。 本文版は以下のようになっている。 (define (analyze-seque…
SICPの4章読んでscheme処理系書いてみました。 ほとんど教科書の丸写しですけどね。 でも処理系の基本的な動きは理解出来たと思います。 いやー楽しいですね。SICPおもしろい。 (driver-loop)を評価すると実行できます。 MIT-schemeで動作確認したのでgauch…
OSの勉強のためにOSを実装していく事にしました。 電源投入してから何の処理もしないカーネルの処理を呼び出すところまで書いたのでまとめます。今回作成したファイル: boot.nasm FDDから起動した際に最初に呼び出されるコード。loader.nasmとカーネルをメモ…
練習問題6 上限は2.5倍 Mの性能向上率は(- (/ 5 3) (* (/ 7 3) (/ 1 n))) Mの割合は(- 1 (/ (* 5 n) (- 3 n)))きっと間違ってるんだろうなぁ。自信ありません。練習問題7 アムダールの法則に n = 2を代入してS2の式を作り、変形すると P = (- 2 (/ 2 S2)) に…
1章の問題です。練習問題3 ○----------------------------------- Alice Bob ------------------------------------○こんな感じに Alice の窓辺に缶を置いてBobの家まで紐を伸ばす。 同様に Bob の窓にも缶を置いて Alice の家まで紐を伸ばす。 Alice は窓…
The Art of Multiprocessor Programming 1章の練習問題1をやってみました。有名な哲学者とデッドロックの話をデッドロックを回避して実装せよって問題です。 セマフォを使って常に一人だけ処理を行わないようにして、デッドロックを回避します。 コードは以…
Mercurial はリポジトリ設定に関する膨大な柔軟性を与えてくれる。結果としてマージは非常にうまく動き、あなたはそれに依存出来るようになるため、 特別な目的のリポジトリを手元に置きながらあなたの開発プロセスに適応させるといったことも可能になる。 R…
時にはマージが衝突することもある。普段ならこれを修正するのは簡単だが、それを解決する必要があったり、複数の head を持っていたりすることもあるだろう。 一体誰が複数の head を望むのだろうか? Merging バージョン管理で重要な事の一つは、同じコード…
このチュートリアルは Joel Spolsky さんの書いた http://hginit.com の和訳です。 わかりやすくて楽しいチュートリアルを書いてくださった Joel Spolsky さんに感謝します。 Mercurial はモダンなオープンソースの分散バージョン管理システムで、Subversion…
Mercurial によって得られる最も大きな恩恵の一つは、プライベートなクローンを使って実験を試してみたり、 新しい機能を開発する事が出来ることだ。もしそれらが失敗したとしても、あなたはすぐにそれを元に戻すことが出来る。 Fixing Goofs Mercurial は自…
Mercurial を使うことで得られる恩恵の一つはチームで同じコードを担当できることだ。 Mercurial はそれぞれ別々に作業させてくれるし、変更があればそれを一つにマージさせてくれる。 Setting up for a Team Mercurial を使った共同作業で最も一般的な方法…
あなたが一人で働いていたとしても、あなたはバージョン管理の恩恵を得るために Mercurial を使うべきである。 このチュートリアルではあなたが古いバージョンを簡単に追跡できるように、どれだけ簡単に Mercurial でディレクトリをチェックインできるかを説…
GW中に hginit の訳を全てアップするつもりです。 hginit は Joel on Software で有名な Joel Spolsky さんの書いた Mercurial のチュートリアルです。 Joel on Software の和訳は こちらで青木靖さんがやっておられます。今回の一連の和訳はJoel Spolsky さ…
もしあなたが Subversion を使ったことがあるなら、Mercurial で混乱することになるだろう。 このチュートリアルでは、Mercurial の動作における最大の違いについてカバーする。 あなたが Subversion を使ったことが無いのであれば、ここは飛ばして次に行こ…
問題 3.18 です。「ループしてるか調べましょう」って問題ですね。 基本戦略は 3.17 と同じです。 リスト構造を下っていき、調べたことのある pair を見つけたら「ループあり」です。問題なのは 3.19 の方です。 問題 3.19 一定量のスペースしか使わないアル…
sicp lite#13 に参加させていただきました。 いろいろなお話を聞くことが出来てとても楽しかったです。ありがとうございました。さて、 sicp lite #13 は前回の宿題だった問題 3.17〜3.20 をやりました。 問題 3.17 は「リストを引数に取り、リストの中に含…
とりあえずテスト #include <iostream> int main() { std::cout << "hello" << std::endl; return 0; }</iostream>