2 part forth (907レス)
1-

48
(1): 04/02/15 21:17 AAS
外部リンク[htm]:www.zetetics.com

OO な Forth っていっぱいあるねぇ。Prolog と Lisp と Forth で処理系の多さを
競ったら、どれがトップになるだろうか。
49
(2): 04/02/16 06:25 AAS
Forthまんせー
2chスレ:tech
50
(1): 04/02/17 23:29 AAS
>>48
LispとForthはToyプログラム的な処理系も含めると星の数ほど
あるからねぇ。Prologは知らないけれど。
ForthのOO拡張もいっぱいあるけど、forth好きな人には、
わずかなメモリの無駄や、実行速度のオーバーヘッドも
許せないってタイプが多い気がする。
(そして、やりすぎるとColorForthになる。。。)

>>49
速度もマンセーだが、マクロと同等以上の、
抽象化能力を持つForthマンセー。
メタプログラミングマンセー。
51
(1): 04/02/18 00:21 AAS
>>50
基本的には同意なんだが。マクロと同等以上というほどメタプログラミング
的には勝ってないような…。昔 LISPer と競った経験から言うと、効率では
勝てると思うけど、記号処理(構文解析とか)入ってくると分が悪いと思われ。
FORTH ライク構文なら無敵だと思うけど。
52: 04/02/18 01:21 AAS
>>51
そうかな?「マクロ以上」は言い過ぎかもしれないけど、
>>49の多重ループの展開なんかは、マクロ並みの
抽象化だと思うけどな。
53: 04/02/18 03:39 AAS
いっちょ処理系でも作るか
54
(1): 04/02/18 12:24 AAS
話題少ないし、おまいら、クイズで楽しみませんか?

第1問

dup ( a -- a a )
swap ( a b -- b a )
drop ( a -- )
>r ( a -- return stack: a )
r> ( return stack: a -- a )

以上5つのワードだけで、

2dup ( a b -- a b a b )

を定義すれ。
55: 04/02/18 12:25 AAS
第2問
同じく

3dup ( a b c -- a b c a b c )

を定義しる。
56
(6): 04/02/18 12:27 AAS
第3問

: foo twice ." Hello" ;

でfooを実行すると

HelloHello

を出力するようなtwiceを定義してみれ。
57
(1): 04/02/18 17:59 AAS
: 2dup >r dup r> dup >r swap r> ;
: 3dup >r 2dup r> dup >r swap >r swap r> r> ;

>>56
immediateを使う? よく思い出せん。
58: 54-56 04/02/18 19:06 AAS
>>57
2dup、3dup、お見事っす。

>>56はimmediateを使うという解答もアリですが、
immediateを使わないちょっとトリッキーだけど
もっとシンプルな方法があります。
59
(3): 04/02/19 17:08 AAS
人少ないなぁ。

第4問

: AA reverse ." AA" ;

: BB AA ." BB" ;

: CC BB ." CC" ;

でCCを実行すると

CCBBAA

を出力するようなreverseを定義すれ。

‥‥‥実はコレ第3問のヒントだったりする。
60: 04/02/19 21:25 AAS
Forth のお勧め本ってどんなのありますか?

最近RPNに萌えてます。
HPの電卓欲しくなっちゃった。
61: 04/02/19 23:02 AAS
自分は「標準Forth」
外部リンク:www.amazon.co.jp
でForthを学んだんだけど絶版だろうね。
古本屋か図書館で探すしかないと思われ。

英語でも良ければ、
外部リンク[html]:home.iae.nl
ここのChapter 1から順に読んでいくのがオススメ。
62
(4): 04/02/20 12:42 AAS
懲りずに第5問。

: foo
  ." 1 "
  resume
  ." 2 "
  resume
;

: bar
  ['] foo call/cc
  ." 3 "
  resume
  ." 4 "
  drop
;

で、barを実行すると、

1 3 2 4

と表示するような、resumeとcall/ccをがんがって定義してみれ。
ちなみに、この2つのワードは以下のスタックコメントに示すような
引数と返り値を持つものとする。

resume ( continuation -- continuation' )
call/cc ( xt -- continuation )

# ワード名とスタックコメントの名前がアレですが、
# 字面に惑わされなければ、仕様を満たすのは簡単なはず。
# 第3問〜第5問は基本的に同じカラクリ、というのがヒント。
63: 04/02/21 08:41 AAS
Mindって分家?単に日本語で書けるForth?
64: 04/02/21 10:29 AAS
MindはいろいろForthにない仕様があったので、
MindはForthから派生した別言語と考えても良いと思う。
65
(2): _| ̄|○ 04/02/23 20:44 AAS
ホント、人が居ないyo....._| ̄|○

誰も見てないかもしれないけど解答編。

>>56
: twice r> dup >r >r ;

>>59
: reverse r> r> swap r> swap >r swap >r >r ;

>>62
: resume r> swap >r ;
: call/cc r> swap execute ;

‥‥リターンスタックをいじるとヘンなことができて面白いよね。
‥‥‥‥‥。
_| ̄|○
66
(1): 04/02/24 14:02 AAS
>>65
スマン、しばらく見てなかった。
>>56はwordの最後までを二回ってことだったか。
次のwordだけを、かと勘違いしてた。
って>>62はそう書いてるな。
67: 04/02/25 12:33 AAS
>>66
>wordの最後までを二回ってことだったか。
わざと曖昧に書きますた。引っかけ問題のようなもので‥‥。
68: 04/03/24 03:33 AAS
 浪なみ
69: 04/04/07 03:14 AAS
age
70: 04/04/08 03:12 AAS
mops for win 希望
71: 04/04/10 01:00 AAS
やっぱ判りにくいよこれ。
LISPはわかったんだが。。。
72: 04/04/10 01:09 AAS
慣れです。
73: 04/04/10 15:58 AAS
よくわからないけど、
スタック2本あるんだよね?
あとWordとExcelが入っているとか、いないとか。
正直よくわからない。
74: 04/04/10 16:00 AAS
それと、気になった事だけど、
>>65
人居ない、なんて連呼してると
ほんとに人いなくなるよ
もっと前向きに行こうよ
75: 04/04/10 20:12 AAS
了解。
76: 04/04/13 10:13 AAS
Chuck Mooreってチューリング賞もらってないよね?
threaded code発明したのってChuckでしょ?
77: 04/04/13 14:34 AAS
チューリング賞のことは知らないが、
threaded code発明したはChuck Mooreです。
1-
あと 830 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.014s