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

理解できない。進まない。

The Little Schemerの第9章、151ページあたりから、がぜん理解できない。 partialとtotalは対義語として使われているような気がする。 partial functionは「再帰呼び出しが永遠に続く可能性がある関数」という意味だから、total functionの意味がその反対な…

Basic認証

https://mail.google.com/mail/feed/atom/ のような認証方法をBasic認証というらしく、認証のためのクラスが.Net Frameworkに用意されているそうな。 【参考ページ】 http://0x3a.net/2007/06/cbasicxml.html http://www.microsoft.com/japan/msdn/thisweek/…

TinyGmailChecker

Atomフィードを読むのは問題なさそう。 <feed version="0.3" xmlns="http://purl.org/atom/ns#"> <title>Gmail - Inbox for アカウント名@gmail.com</title> <tagline>New messages in your Gmail Inbox</tagline> <fullcount>新着メール数</fullcount> </feed>

partial function

以下のような関数、looking関数が9章にて出てくる。 (define pick (lambda (n lat) (cond ((= n 1) (car lat)) (else (pick (- n 1) (cdr lat)))))) (define keep-looking (lambda (a sorn lat) (cond ((number? sorn) (keep-looking a (pick sorn lat) lat)…

PC復活!

やっと修理から返ってきた。 マザボが昇天なさって、修理費25000円なり。 まだ買って1年強なのに。 3年保証にしておけばよかった...。さっそくemacsとgaucheをインスコ。でも、趣味プログラミングになかなか時間を割けない。 まだ9章で止まっとるし。

Gmailのチェッカー、再び

あれから少し勉強して、フィードって何なのか分かってきた。 GMailの場合は、Atomという規格(なのかな?)のフィードになってて、こいつを読んでやるようなプログラムを作ってやれば良さそう。 RSSやらAtomやらいくつか形式があるらしいけど、フィードはXML…

Gmailのチェッカー

Google Talkを使ってたけど、友達がいないのでIMなんて使いません。 だもんで、GMailのメールチェッカーとしてしか利用してませんでした。 最近、IM機能はいらないのでメールチェックだけしてくれる手軽なクライアントを作ってみたいと思った。 だけど、何か…

The Littile Schemer 8章"Lambda the Ultimate"読了

最後の関数、evens-only*&coも難しいです。 何がムズいって、(car l)がリストだった時の書き方かなぁ...。 要素が数字のみのネストしたリストlを受け取って、奇数だけ除去して返す関数evens-only*を継続渡しスタイルに書きなおす問題です。 参考までに、継続…

継続渡しスタイルの練習

アトムatomと、アトムからなるリストlatを受け取り、latの中にatomが含まれるかどうかを調べる以下のような関数 (define contains (lambda (atom lat) (cond ((null? lat) #f) ((eq? (car lat) atom) #t) (else (contains atom (cdr lat)))))) を、multiremb…

キーボード

ここ数ヶ月くらいFILCOのキーボードを使っています。 とてもいいです。 HHKと迷いましたが、仕事ではVisualStudioにて開発しているので、ビルドするときなんかのショートカットキーをそのまま使いたくて、ファンクションキーがあるコイツにしました。 ...で…

Meadowやめた

半年に1回くらいの割合でWindowsを再インストールしてる気がする。 入れ替えた時のサクサク動く感じが好き。 再インストールしなくても、デフラグちゃんとやってやればいいのかな...? まぁ、さておき。 再インストールをきっかけに、MeadowやめてEmacsw32に…

multiinsertLR&coを書いてみた

これだよ、これ! 継続渡しスタイルの関数を1から自分で書けるようになるには、書く練習しなきゃね! ということで、以下のようなmultiinsertLR関数を、継続渡しスタイルで書き直す練習です。 (define multiinsertLR (lambda (new oldL oldR lat) (cond ((nu…

継続に無理やり名前をつけてみた

どうやらletという関数を使うと、ローカルな名前付の関数を作れるらしい。 ということで、簡単なfact/cpsでやってみる。 (define fact/cps (lambda (n cont) (if (= n 0) (cont 1) (fact/cps (- n 1) (lambda (m) (cont (* m n))))))) で、else以下で作って…

multirember&coをトレースしてみる

fact/cpsでやった要領で、multirember&coもトレースしてみる。 っていうか、今からやるようなことはちゃんと本でやってますね。 継続渡しがわかんねワカンネ言ってましたが、継続渡しが分からないんじゃなくて英語が読めてないだけでした。 僕くらい脳みそが…

継続渡しによる階乗計算をトレースしてみる

僕のカニみそ級の脳みそでは、無名関数が混じっていると混乱してしまうっぽいので、適当に名前を付けながらトレースしてみました。 (define fact/cps (lambda (n cont) (cond ((= n 0) (cont 1)) (else (fact/cps (- n 1) (lambda (m) (cont (* m n)))))))) …

フィボナッチ数を求める関数をC++で継続渡しで書いてみる足掻き

C++

再帰の練習長6+をみて、C++で書いてみたいと思い、やってみた。 これも翻訳しているに過ぎないのだけど。 #include <iostream> #include <functional> #include <boost/function.hpp> #include <boost/bind.hpp> #include <boost/lambda/lambda.hpp> namespace { // 継続渡しでフィボナッチ数を求める int FibonacciCps(int n, boost::function<int(int)> </int(int)></boost/lambda/lambda.hpp></boost/bind.hpp></boost/function.hpp></functional></iostream>…

階乗を求める関数をC++で継続渡しで書いてみる足掻き

C++

今まで何度か書いた継続渡しによる階乗計算。 C++でやってみようと思い立ち、やってみました。 っていうか、慣れてきたとは言え、継続渡し自体まだ理解できてない。 単なる翻訳です。 #include <iostream> #include <functional> #include <boost/function.hpp> #include <boost/bind.hpp> #include <boost/lambda/lambda.hpp> namespace { // 継</boost/lambda/lambda.hpp></boost/bind.hpp></boost/function.hpp></functional></iostream>…

DrSchemeからMeadow+Gaucheへ

今までDrSchemeを使ってSchemeのコーディングをやってたんだけど、開発者のはしくれとしてemacsに憧れがあって、「emacs使わんで何が漢ぞ!!」とばかりにやってみました。 ってかemacsじゃなくてMeadowなんだけども。 あ、あとDrSchemeってファイルを開くダイ…

継続渡しスタイル

C#でも無名関数作れるし、ここを参考にやってみた。 # トラックバックの使い方がわかりません orz class Program { // 継続(っていうの?)への参照 delegate int Method(int a); static void Main(string[] args) { /////////////////////////////////////…

継続

能無しな僕ですが、かの有名なSICPを読んでみたいと思い、Schemeを勉強してます。 んで、その準備にと"The Little Schemer"を読んでます。これも名著。 終わったら"The Seasoned Schemer"に進むつもり。 8章のmultirember&co関数あたりで難易度が上がってる…

タグのテスト

タグをつけてみました。 [雑記]タグのテスト 小々見出しにはタグは無理っぽいですね。 脚注のテスト 脚注*1をつけてみました。 *1:脚注です。ほげほげ

こんにちは、世界。

Hello, world. はてなをはじめた。 プログラミングの話題中心にやっていきます。 いつまでつづくかなー。 HelloWorld.cpp #include <iostream> int main() { std::cout << "Hello, world." << std::endl; return 0; } 正規分布 こんにちは。な画像</iostream>