2 part forth (908レス)
上下前次1-新
抽出解除 レス栞
501(1): デフォルトの名無しさん [sage] 2008/10/10(金) 06:35:09 AAS
>>491491(1): デフォルトの名無しさん [sage] 2008/10/09(木) 21:16:04 AAS
ついでに >>56 のリターンスタックを使ったパズルの説明でも書いておこう。
問題は、
: foo twice ." Hello" ;
で、
HelloHello
を出力する twice を定義しろというパズル。
>そして、Helloを出力する。
. "Hello"
がなんでHelloを出力することになるの?
"Hello" .
じゃないのはなんで?
文字列リテラルは特別扱い?
503(1): デフォルトの名無しさん [sage] 2008/10/10(金) 08:46:05 AAS
>>501
." とか、 前付きの " は、Forthではただの引用符じゃなくて、一つのワード。
だから、Helloとの間に空白が要る。
但し、終わりの " はセパレーターだから、空白なしで良い。
前にも出てたけど、
Forthでは文字列リテラルはポインタと長さの二つの数値で表す。
「.」は、トップアイテムを一つpopして値をプリントするワードだから、
" Hello" .
だと5がプリントされるだけ。文字列ポインタがスタックに残る。
「."」 が 「次の " までの文字列をプリントする」というワード。
文字列をスタックに積んだときは
" Hello" type
とやる。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.390s*