2 part forth (907レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
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問は基本的に同じカラクリ、というのがヒント。
65(2): _| ̄|○ [sage] 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): デフォルトの名無しさん [sage] 04/02/24 14:02 AAS
>>65
スマン、しばらく見てなかった。
>>56はwordの最後までを二回ってことだったか。
次のwordだけを、かと勘違いしてた。
って>>62はそう書いてるな。
514(5): デフォルトの名無しさん [sage] 2008/10/11(土) 06:54:12 AAS
>>464のやり方だと実行の度にリターンスタックに命令列のコピーが発生するわけだな。
対して普通のForthはリターンアドレス一つのコピーで済む。
Forthでは関数の戻り場所を実行時に入れ替えたりできる( >>59 >>62 ) わけだけど、
>>464のやり方だと命令列自体の入れ替えになるから相当面倒。
Forthの自由度をわざわざ減らしている気がするんだけどな。
でも作るというならがんがれ。
様々な進化があってこそ発展もある。
762: デフォルトの名無しさん [sage] 2015/08/15(土) 15:24:43.03 ID:fkPcgHEe(2/2) AAS
処理系作ってようやく何やってるのかわかったけど、>>56とか>>62面白いなあ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s