2008/03/30
2008/03/29
花見 : 桜
今年も恒例の花見に行った。
場所はいつもまさかりがふち。
桜は毎年咲くね。
ヤーンは今年も頑張った。
Mちゃんは初参加。
うちのネコの他にイヌ、ウサギ、ニワトリも花見にきていた。
立派なニワトリだった。
場所はいつもまさかりがふち。
桜は毎年咲くね。
ヤーンは今年も頑張った。
Mちゃんは初参加。
うちのネコの他にイヌ、ウサギ、ニワトリも花見にきていた。
立派なニワトリだった。
2008/03/24
jonesforth
茶国 Rev3 さんのところで紹介されていた jonesforth が実に素晴しい。
アセンブラでの Forth の実装だが、ソース中にとても丁寧なコメントが付いており、ソース自体がチュートリアルのようになっている。
あまりにすばらしいので Common Lisp の移植してみる。
アセンブラでの Forth の実装だが、ソース中にとても丁寧なコメントが付いており、ソース自体がチュートリアルのようになっている。
あまりにすばらしいので Common Lisp の移植してみる。
Forth と Factor の : の違い
Factor の : は ; まで読み込んでワードを定義する。; は終端記号。
Forth の : は辞書にワードのエントリーを作成しコンパイルモードになる。IMMEDIATE 以外のワードは逐次コンパイル(辞書の作成されたワードのエントリーに追加)される。; でコンパイルの後始末を行い、実行モードになる。
Factor は parsing で Forth は IMMEDIATE。
Forth の : は辞書にワードのエントリーを作成しコンパイルモードになる。IMMEDIATE 以外のワードは逐次コンパイル(辞書の作成されたワードのエントリーに追加)される。; でコンパイルの後始末を行い、実行モードになる。
Factor は parsing で Forth は IMMEDIATE。
2008/03/19
Gforth : セットアップとローカル変数
Gforth のマニュアルがよさそう。
Gforth を Debian のパッケージでインストール。
~/.emacs に次を追加。
ローカル変数ってあったのか。
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
内容は浅い。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 をはじめたのは自分用のメモとして活用しようという動機からでした。
ということで本来にたちかえります。
いろいろ間違いや不正確な記述が増えるかと思いますが、ご了承ください。
よろしくお願いします。
です。ます。で書いていると読みてを意識してしまいます。
もともと 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 >
みたになってしまう。
バッファが空なら
(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 を起動して実行した場合、何か入力すればループをぬける。
なんでだろう?
でも、Slime 使わずにコンソールから Lisp を起動して実行した場合、何か入力すればループをぬける。
なんでだろう?
(loop until (print (listen)) do (sleep 0.5))