yashiganiの英傑になるまで死ねない日記

週末はマスターバイクでハイラルを走り回ります

すごいH本読書会 in 大阪#16で発表した

すごいH本読書会 in 大阪#16で15章Zipperについて発表してきました. スライドはこちら.

記念すべき最終回は,最終回にふさわしくもくもくと練習問題を解く会となりました. 練習問題はスライドの最後にもありますが,こちら.

Zipperを使ってBrainfuckインタプリタを実装する

メモリをいったりきたりするBrainfuckの挙動はZipperを試すにはもってこいでした. けっこうヘビーそうな問題ですが,Brainfuckの挙動をつかむとわりと簡単に実装できます. ぼくの解答はこちら

簡単に解説しておくと,CodePointerの2つのZipperを使って実装しています. Codeは読んだ通りプログラムで,]命令で戻るためにZipperにしてます. Pointerはメモリで,なんで3要素あるかというと,.命令の書き出しでIOアクションうまいことやるのがめんどくさかったので,書き出し要のbufferくっつけて最後にbufferの内容をまとめて出力してます. 手抜きです. あと,命令は実装してないし[, ]命令もどうにかHello, worldは動く,というレベルでしか実装してません. けれども1時間程度で実装したことを思えば,まあまあなものができたかな... キチンと動くもの作ろうと思うとあともうちょっとサンプルプログラムが欲しいですね.

感想

すごいH本読書会 in 大阪は,2012/11の開始から足かけ2年,ついに最後までやりきることができました. 最初は多かったメンバも徐々に減り,一時はどうなるかと思いましたが,なんとか無事完走することができて本当によかったです.

すごいH本はかなりとっつきやすく書かれていますが,ひとりだと飛ばしたであろうところや,実際に書かないと理解できなかったところも多くありますので,読書会という形で勉強したのはよかったと思います. 2周目ということで,また最初から開催されていますので,「Haskellはじめたい!」という方は是非参加するといいのではないでしょうか.

関連