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

2008-05-07~05-18の予定

読む 達人プログラマー 1日1章 平日に読む 7日(1章), 8日(2章), 9日(3章), 12日(4章), 13日(5章) 14日(6章), 15日(7章), 16日(8章) 書く PyGameでボードゲーム まとめる C++ロベール本を自分用にまとめておく。

2月まとめ

3月になったので、2月のまとめ1月のまとめのときにかいた、2月のまとめの結果 ひきつづきHaskellを勉強しよう。モナドを理解しよう。 →モナドの理解は前より深まった。モナドとは、手続を抽象化するものだと思う。 Parsecを触ってみよう。 →すみません、触っ…

最近こころにとめた、二つの似た言葉

カチッという音がして、 将来の道が突然開けるのを待ちながら、 私は山ほど仕事をしたレイモン・サヴィニャック ほぼ日刊イトイ新聞 - ポスター描きのサヴィニャックさん。 And the only way to do great work is to love what you do. 偉大な仕事をする唯一…

hatena-modeテスト

hatena-modeからの投稿テストです。追記 無事投稿できたみたい。 インストールはcvsから。ただインストールしただけではCookieでエラーがでたので以下のサイトを参考にhatena-mode.elを修正。 作成者のページ http://d.hatena.ne.jp/hikigaeru/20040617 Cook…

1.2 手続きとその生成するプロセス その1

問題1.9 ;; (a) (define (+ a b) (if (= a 0) b (inc (+ (dec a) b)))) ;; (b) (define (+ a b) (if (= a 0) b (+ (dec a) (inc b)))) a = 3, b = 2 としたときに ;; (a) (+ 3 2) (inc (+ 2 2)) (inc (inc (+ 1 2))) (inc (inc (inc (+ 0 2)))) (inc (inc (i…

SICP 1.1

1.1は基本的な部分。 問題 1.1 評価するだけなので略 問題 1.2 略 問題 1.3 (define sum-of-max-2-square (lambda (x y z) (cond ((and (< x y)(< x z)) (sum-of-square y z)) ((and (< y x)(< y z)) (sum-of-square x z)) ((and (< z x)(< z y)) (sum-of-sq…

SICPに再挑戦だ!

Haskellを勉強してたら、「計算機プログラミングの構造と解釈(SICP)」に再挑戦したくなったので、する。 まえに読んだときは、第3章の途中ぐらいまではがんばって読んだような記憶がある。 しかし、半分も理解できてはいなかった。 今回はじっくりと根気よく…

The Little Schemer その3

読了。さいごはSchemeによるSchemeインタプリタの実装。 読了と同時にThe Seasoned SchemerをAmazonにてクリック。 だって、「Little~」の最後がintermission(幕間)で終ってんだもん。The Seasoned Schemer (The MIT Press)作者: Daniel P. Friedman,Matthia…

The Little Schemer よみすすめ

The Little Schemerを読み進め中。 みた目よりも中身は濃い。 けど、丁寧に教えてくれるので難解ではない。 内容は schemeの基本のリスト遊び ↓ 再帰 ↓(再帰の練習に同じような関数をひたすら書く) なんか同じようなのばっかり書いてるなーと思ったところに…

--fullscreen

emacsに--fullscreenオプションをつけて起動するようにしてみた。 俺のPCがemacs専用機みたいだ!

The Little Schemer

急にschemeを勉強したくなったので勉強中。 Haskellを触ってたら「そろそろSICP読み返す時では」と思ったのが主要因。 といいつつ、読んでいるのは「The Little Schemer」なのだけど。この本は世界で一番かわいい技術書ではないかと思う。 かわいい象の装画…

「楽しくなることを考えていることは楽しい」

ほぼ日刊イトイ新聞 - さんまシステム そのときに、師匠に、 「掃除はどうしたら楽しいか考えろ」 って言われたんですけど、そこでしたねぇ。 あの、掃除なんて、 楽しくなるわけがないんですよ。ところが、 「楽しくなることを考えてることは楽しい」。 っ…

構文解析結合子

今日はhttp://www.ipsj.or.jp/07editj/promenade/の構文解析結合子を写経。 字句解析器の実装でStateモナドを使ってる。 Stateモナド=状態を受け渡しながら計算していく仕組み ということを頭にいれておけば、特に引っかかるところなし。 自分だけかもしれな…

Stateモナドが(なんとなく)わかった

Stateモナドがわからない。ということで「入門Haskell」にのっていたBase64エンコードのソースコードを写経。 そしたらなんとなくわかってきた。 procChar :: Int -> State B64EncState String procChar c = get >>= transit where transit First = do put $…

1月のまとめ

2月になってもう5日になってしまったが、1月のまとめ。よかったところ Haskellを勉強しはじめた。 Haskellの基本的な構文を理解して簡単なものは書けるようになった。 CODEを読みはじめた。 OpenGLをさわった。 Haskell+OpenGLで簡単なゲームをつくった。 わ…

ゲームをつくろう その6

地形判定がめんどくさいので、シューティングをつくってみた。 import Graphics.UI.GLUT import Graphics.Rendering.OpenGL.GLU import Data.IORef import System import Data.List type Point = (GLdouble, GLdouble) -- 位置を表す type Vec2 = (GLdouble,…

ゲームをつくろう その5 ブロックくずし

ブロックを複数おけるようになった。 ボールもうごかせるようになった。 というわけで、当たり判定をたしてブロックくずしにしてみる。 当たり判定は最終的に線と線の当たりにおとしこむように実装した。 しかしかなり適当なので、速度が上がってくると枠の…

メモ foldl foldr

たたみこみ関数。 それぞれ型は foldl::(a -> b -> a) -> a -> [b] -> a foldr::(a -> b -> b) -> b -> [a] -> b foldlが左に、foldrが右に。 foldl (-) 0 [1..5] -- -> (((((0 - 1) - 2) - 3) - 4) - 5) foldr (-) 0 [1..5] -- -> (1 - (2 - (3 - (4 - (5 -…

ゲームをつくろう その4 オブジェクトの移動

IORefを使って値の保存が出来ることがわかった。なので、ゲームっぽくオブジェクトを移動させてみる。 プログラム的にはライフゲームのものとくらべて特に新しいものはないなぁ。 -- 籠の中のボール import Graphics.UI.GLUT import Graphics.Rendering.Open…

ゲームをつくろう その3 ライフゲーム

どう書く.orgのお題にライフゲームがあがっていたので実装してみよう。 まずはセルの表現。 type Grid = (GLdouble, GLdouble) -- 座標 type Cell = (Grid, Int) -- 座標と生死 Gridが座標、Cellが座標と生死をあらわすフラグをもった型。 自身の周りの座標…

ゲームつくろう その2 mapM_

昨日につづいてゲームづくり。 というか、ゲームづくりの前段階。 今日はオブジェクト描画をサブルーチン化してみよう。 display' (x, y, z) = preservingMatrix $ do translate (Vector3 x y z :: Vector3 GLdouble) renderObject Solid (Cube 0.5) display…

Haskellでゲームをつくろう

Haskellでゲームをつくろう。 それは何故か→モナドがピンとこない(とくにStateモナド)、感じをつかみたい。それならば、モナドを使いまくるしかないだろう。 →プログラム・プロムナードの記事にモナドを利用した例としてMonadiusがあがってたなぁ →目に見え…

モナド その2

モナドに関する覚書 モナドには>>=(bind)とreturnがある。 >>=は二つのモナドの値を合成する。 モナドには満たすべきモナド則というものがある。 return a >>= k = k a m >>= return = m m >>= (\x -> k x >>= h) = (m >>= k) >>= h モナド則は満たすべきも…

モナド その1

モナドとは、Haskellの既存の型を拡張するための統一的な枠組みのことで、モナドをもちいることで、純粋な関数型言語で扱いにくい入出力や状態の保存・更新などの処理を陽に意識せずに簡単にできるメリットがあるそうです。 http://www.sampou.org/haskell/a…

モナド・・・

モナドの理解でつまづいております。 とりあえず、モナドとは何かというところからまとめていこうかなぁ。

豪徳寺いってきました

招き猫の発祥の地として知られる豪徳寺にいってきました。 まえまえから一回行ってみたかったのです。 うわさに聞く、招き猫の奉納されている棚は想像以上。かなりの圧力でした。 こうして撮ると、ものすごく一点透視図法です。

型とクラス

型とは値の集合を指します。 型を明示的に宣言するには 「::」構文をつかいます。 -- 変数の型宣言 defaultLines :: Int defaultLines = 10 -- 関数の型宣言 myLength :: [a] -> Int myLength es = length es aは型変数、[a]は任意の型のリストをあらわして…

基本的な構文

今日は基本的な構文についてまとめます。 コメント Haskellのコメントは -- を使います。 {- -}でブロック形式のコメントになります。 -- 階乗をもとめる関数 {- 引数にIntをとり返り値はInt -} factorial :: Int -> Int factorial 0 = 1 factorial n = n * …

CODE

CODE コードから見たコンピュータのからくり作者: Charles Petzold,永山操出版社/メーカー: 日経BPソフトプレス発売日: 2003/04/10メディア: 単行本(ソフトカバー)購入: 8人 クリック: 123回この商品を含むブログ (41件) を見る良書との評判なので購入して…

関数その2

今回は関数のまとめその2です 2項演算子について Haskellでは、二項演算子も関数同様定義できます。 二項演算子の定義は以下のように書きます。 パターン1 演算子 パターン2 = 定義2項演算子につかえる記号は以下のようなものがあります。 ! # % & * + . < =…