2008/03/30

Hatera::Diary

いろいろ思うところがあり Hatena::Diary をもう一度使うことにする。

2008/03/29

体操教室

娘が春休みに短期の体操教室に通っている。
今日はじめて一人で鉄棒の前まわりおりと、マット体操の後転ができた。
お父さんが見にきたから頑張ってくれたのかな。
よく頑張った。

花見 : 桜

今年も恒例の花見に行った。
場所はいつもまさかりがふち。
桜は毎年咲くね。
ヤーンは今年も頑張った。
Mちゃんは初参加。

うちのネコの他にイヌ、ウサギ、ニワトリも花見にきていた。
立派なニワトリだった。

水色で GJ

今日は送別会だった。
会社を辞めて、勉強し、他の道に進むとのこと。
彼の作品を見かけたら、水色の文字で GJ とコメントしよう。

2008/03/24

jonesforth

茶国 Rev3 さんのところで紹介されていた jonesforth が実に素晴しい。
アセンブラでの Forth の実装だが、ソース中にとても丁寧なコメントが付いており、ソース自体がチュートリアルのようになっている。
あまりにすばらしいので Common Lisp の移植してみる。

Forth と Factor の : の違い

Factor の : は ; まで読み込んでワードを定義する。; は終端記号。
Forth の : は辞書にワードのエントリーを作成しコンパイルモードになる。IMMEDIATE 以外のワードは逐次コンパイル(辞書の作成されたワードのエントリーに追加)される。; でコンパイルの後始末を行い、実行モードになる。

Factor は parsing で Forth は IMMEDIATE。

2008/03/19

Gforth : セットアップとローカル変数

Gforth のマニュアルがよさそう。
Gforth を Debian のパッケージでインストール。
~/.emacs に次を追加。

;;;;Gforth
(autoload 'forth-mode "gforth.el")
(setq auto-mode-alist (cons '("\\.fs\\'" . forth-mode)
auto-mode-alist))
(autoload 'forth-block-mode "gforth.el")
(setq auto-mode-alist (cons '("\\.fb\\'" . forth-block-mode)
auto-mode-alist))
(add-hook
'forth-mode-hook
(function (lambda ()
;; customize variables here:
)))


ローカル変数ってあったのか。
: hello ." Hello" ;

: my-swap { a b -- b a } b a ;

: my-dup { a } a a ;

雪柳

今日、雪柳が咲いているのを見かけた。大好き花。
東広島の鏡山公園に咲いていたのをいまでも思い出す。

2008/03/09

Forth を勉強

図書館から『FORTHへの招待』を借りて読む。
内容は浅い。11,930円だして買わなくてよかった。
むしろ、Gforth のマニュアル http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/ の方が期待していたもの。

Forth のデータタイプは全て数値?
スタックの1番目だけで単精度と数値とするか、
1番目の2番目をあわせて倍精度とするか、
1番目を文字数、2番目の文字列データとするかは、ワード次第。
C に似てる。

気になるのは LITERAL, POSTPONE, [, ] のあたり。
Starting Forth 11. Extending the Compiler http://www.forth.com/starting-forth/sf11/sf11.html

Blog のスタイルを変更

Blog のスタイルを変更します。
です。ます。で書いていると読みてを意識してしまいます。
もともと Blog をはじめたのは自分用のメモとして活用しようという動機からでした。

ということで本来にたちかえります。
いろいろ間違いや不正確な記述が増えるかと思いますが、ご了承ください。
よろしくお願いします。

Common Lisp : Slime listen

swank-gray.lisp の stream-listen がバッファしか見ていないのが原因。
バッファが空なら
(listen (swank::current-socket-io))
とか
(mailbox.queue (mailbox mp:*current-process*))
を呼びしてやればいい。

でも
zui > read-char
1


1
CL-USER> ; No value
CL-USER> ここで Enter キーを押した。
(#\Newline)
zui >
みたになってしまう。

2008/03/05

Common Lisp : Slime listen

Slime で次のコードを実行する。何か入力しても loop をぬけない。
でも、Slime 使わずにコンソールから Lisp を起動して実行した場合、何か入力すればループをぬける。
なんでだろう?

(loop until (print (listen)) do (sleep 0.5))

2008/03/02

補助なし自転車

今日は娘の初の補助なし自転車練習でした。

予想どおり、出来なくて怒ってました。怒っちゃだめ。

また来週がんばりましょう。