Meadowの設定リロード

WEB+DB PRESS Vol.40を読んでいたら、長年の疑問が解決した。

ProductName WEB+DB PRESS Vol.40

技術評論社 / ¥ 1,554 (2007-08-24)
通常24時間以内に発送

M-x eval-buffer

で.emacsのリロードができる。 いままでやり方がわからなかったので不本意ながら再起動してたという、、、

メタモはlisp

ちょうどSICP3章読み終えたところで、これからメタモだ。すぐそこなので夕方出て行って朝帰りするわけだが。

タイムテーブルをストリームと捉えつつ、solar,lunar,planetのストリームを混ぜ合わせることで、新たな僕の狂喜乱舞なストリームが構成されるわけですな(無限ストリームだと嬉しい)。

というわけで、メタモはlisp、僕のSICPの3章と4章の間にはメタモルフォーゼの章がある。

SICP 3章終了

サケダメ宣言が出されたので、夜な夜なお茶を飲みながらSICP。あと、最近また電車通勤しているので毎朝SICP。

そんなわけで、3章も順調に消化。というか最後のほうはわかんない問題が多くて端折ったけど(3.60くらいから華麗にスルーした)。

特に無限ストリームと遅延評価のところを読み終えてクロージャってものに対する認識がちょっと変わったかも。

いままでは、オブジェクトは関数を保持したデータ、クロージャはデータを保持した関数なんて理解してたんだけど、今はクロージャは環境を隔離して時を止めたものみたいな感覚で接している。

そんな今ではλ萌え - たらいを後回しが面白く読めた。

無限ストリーム

yesコマンドみたいにひたすらyが出力される無限ストリーム

(define yes (cons-stream 'y yes))

SICPの3.5面白いけど、本の写経だとcons-streamが実装できないので手を動かす時に魅力が半減するよな。というか、ここまでくるとどうしても動かしてみたいでしょう。

ググって、真の写経(マクロ分からんが)、実行してみる。

gosh> (define yes (cons-stream 'y yes))
yes
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y
gosh> (car yes)
y

perlでパスカル三角形

位置を指定するとその位置のパスカル三角形の値を返す。再帰で。

sub pascal{
 my ($n,$r) = @_;
 $n<2?1:$r==0?1:$n==$r?1:pascal($n-1,$r-1)+pascal($n-1,$r);
}

print pascal(0,0);
print "\n";
print pascal(1,0);
print pascal(1,1);
print "\n";
print pascal(2,0);
... 
print pascal(4,3);
print pascal(4,4);
print "\n";

三角形

$ perl pascal.pl 
1
11
121
1331
14641

この関数を利用して、最小完全ハッシュ関数を。

sub cn {
 my @table = @_;
 my ($hash,$n,$r) = (0,5,2);
 for (my $i=0;$n>$r && $r>0;$i++){
   $n--;
   $hash += pascal($n,$r--) if ($table[$i]);
 }
 return $hash;
}

が、「組合せ型の最小完全ハッシュ関数」の逆関数に持っていけなかった。再帰でパスカル三角形を右斜め下から左斜め方向に足していく組み合わせをつくっていって問い合わせの数値になったところのリストを返せばよいと思うんだけど、うまい書き方がみつからなかった。

SICP 3.13

リストの問題

(define (make-cycle x)
  (set-cdr! (last-pair x) x)
  x)

という定義に対し

gosh> (define z (make-cycle (list 'a 'b 'c)))
z
gosh> z
#0=(a b c . #0#)

これに(last-pair z)は無限ループ

Coma Out Of Body Electronica

Somaのなかでもダウンビート目の曲のコンピ

Coma Out Of Body Electronica

綺麗目でチルっぽいのが多いので、聴きやすい。

で、Envoy / Prologue 2 (Alignment Of The Planets)が収録されとる。

envoyのprologueはたぶん僕が院にあがるかあがらないかくらいの時に出たやつで、京阪三条のソレイユで買ったのを覚えている。っていうかこのヴァイナルはいまだに持ってる。ってもう10年以上も前の話なのか、、、、

化合物の3次元構造発生

smi23dっていう3D Coordinate Generatorが出てた。

おー素晴らしいよーマジで

後で触ってみよう。これが使えると色々できるようになりますな。

塩を取り除くコマンド

職場でいつものようにGUIをチマチマいじってたら、隣で塩を取り除くコマンドがないっちゅよと困っていた。openbabelにあるんじゃねーの?どれどれと探してみたけどなかった。さらに、いやあるだろふつーはとかいってググってもcgiみたいなもんしかみつからなかった。

smilesだったら.でsplitしてゴニョればOKなんだけど、座標情報落っこちるから、perlmolとかopenbabelで実装して任意のフォーマットにできるようなコマンドが欲しい。

それを仮にwashmolとすれば

washmol -i input.sdf [-o out.smi]

みたいに。デフォルトではインプットと同じフォーマットで返すような、調子いいコマンドが欲しくなった。

僕は塩を取り除くのはwashと言ってるんだけど、desaltとか色々と呼び方があんのね。

毎度!の冷やし

毎度!で冷やし。

毎度の冷やし

割とあっさり目だけど奥深い。なんつうか精進料理っぽい冷たいスープが、山葵かなんか入ってるような気がすんだけど。

美味いんだけど言葉であらわすのが難しい。

あと、毎度の麺もそうなんだけど細い麺ってつけ麺とか冷製にするとちょっと絡まりが強くて、箸でとりにくい気がするなぁとか食べてて思った。