2 part forth (907レス)
上下前次1-新
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です。
78: 04/04/13 21:50 AAS
threaded codeってそんなに画期的なことなの?
Z80で言えば CD xx yy のCDを無くして、メモリ消費が約2/3になるってだけでしょ?
79: 04/04/13 23:10 AAS
外部リンク[html]:www.kt.rim.or.jp
80: 04/04/13 23:16 AAS
コードが小さくて速いので多くのVMがthreaded codeを採用している。
昔のプロセッサでは、アセンブリで書いたコードよりもForthのコードの
方が速かったことさえあるという。(伝説)
81: 04/04/14 18:53 AAS
速いのはいいんだけど、
コード読み書きがしんどいと思わない?
変数とかあまり使わないみたいだから、
フローを初めから追っていく必要あるし。
結局この言語もライブラリ次第かなと思った。
82: 04/04/15 00:05 AAS
逆ポーランドをむしろ好む人々も結構な数おりますが、
Stack Juggling がコードを読みにくくするという人も
います。
Forthコードの見通しを良くするには、他の言語よりも
かなり小さな単位でワードを定義するのがよろしいかと。
極端な話、1ワードはせいぜい5行までで記述し、
10行を超えるワードは分割すべきであるとか。
スタックコメントを活用し、小さなTestを繰り返し
ながらボトムアップにくみ上げていくと意外に、
スタックだけで問題解決できていたりします。
上下前次1-新書関写板覧索設栞歴
あと 825 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.017s