コードバトン
Scheme コードバトンに参加しました
- 渡されたバトン http://gist.github.com/274246 from http://cadr.g.hatena.ne.jp/g000001/20100111/1263218782
- 渡したバトン http://gist.github.com/275132 to http://d.hatena.ne.jp/leque/20100114/p1
やったこと
このスクリプトは覚えているはずの単語との答え合わせのためのもののように見える
→ できるだけキーストロークが少ない方が嬉しいはず!
→ 何かキーを押すだけで答え表示、y/nを押した瞬間に次の問題が出てくれるようにしよう
ということで、cursesを使ってキー押下にすぐに反応するようにしました。
とりあえず動くというところまで持っていくまでで既に48時間をオーバーしていたので、
コードの整理を一切あとの人まかせにしてしまいました。
「人に優しい」が守られていなくて申し訳ないです。(lequeさんありがとうございます)
いろいろ
- unwind-protectが無いことに気付いたけど、すぐに書けませんでした。
- c-function で引数がvoidな関数をschemeに持ってくるにはどうすればいいのか?悩みました。
- libc.soだとライブラリがロードできなかったのでlibc.so.6と書きました。多分環境依存。
- LC_ALL の値も環境依存
- scheme文字列をC文字列に変換する関数を書くのが楽しかった! malloc!
- リソースの回収はOSという名のGCに任せる free free style で書かれています
自分で書いてないのに言うのもなんだけど、with-cursesみたいな制御構造を短いコードで書けるというのはlispの醍醐味の一つだと思う。
またやりたい! 楽しかった! 次回はもうちょっと時間とって、ちゃんとコードの整理までしてから次に渡したいと思います!