1 名前:デフォルトの名無しさん [04/01/10 03:45] 第四世代
313 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 07:48:32 ] たしかに今も昔もCPUの回路は自分で変更できないな。
314 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 23:27:06 ] メモリ書き換えればいいじゃん >312
315 名前:デフォルトの名無しさん mailto: [2007/03/31(土) 16:33:43 ] >>314 最近のCPUってもコードキャッシュに先読みしたりしているから、 下手にメモリを書き換えると、先読みしたコードと、実際のメモリのコードが一致しなくなる。 ので、正常に動作しなくなったり、パイプラインにペナルティが発生して、動作がおそくなったりするらしい。 FORTHって、新しくワードを追加すると、自分自身が大きくなっていくような言語だから、 そこらへんどうすればいいのかわからない。 だれか教えてくれんかな。
316 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 05:04:00 ] FORTH以前にコンピュータの基礎知識が混乱してるな。
317 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 12:54:31 ] >>316 FORTHの事、知らないだろ。
318 名前:デフォルトの名無しさん [2007/04/01(日) 13:11:17 ] >>313 VBばっかり使ってないで、ハーバードアーキテクチャとノイマンアーキテクチャの違いに付いて勉強しろよ(w
319 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 16:33:44 ] 最近だとこの関係でJITコンパイラとXDビットでも問題になってましたな。 JIT関係にノウハウありそうだけど、良く判らん
320 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 05:03:35 ] べつに何の困難もないと思うけどな。 パラメータスタックなんて自由度の低いポインタみたいなもんじゃん。
321 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:18:58 ] なんかよくわからんけど、問題になりそうなのは、既存ワードの書き換え時だと思うので、 ワード書き換え→キャッシュをフラッシュ でいいと思う。
322 名前:デフォルトの名無しさん [2007/04/23(月) 23:27:41 ] いかにForthでも、線路を作りながら電車を走らせるようなことはありません。 ワードをコンパイルした後、そのワードを実行するまでには 少なくとも実行ワード名を読み込むI/Oプロセスが介在するので、 人間にとっては一瞬でも、機械には一服する余裕があります。 あと、Forthのワードのオーバーライドは、 関数型言語によくあるようにプログラムの全体についてそのワードの定義を更新するのではなく、 再定義後に読み込まれる部分についてしか効果がありません。 後から遡って定義を変更できるようにするには、 初めから特別な方法で定義しておくようになっています。 こんな感じでどうでしょう。
323 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 06:20:31 ] forthの人気のなさは異常
324 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 23:36:56 ] 異常だな。〜 if 〜 then 〜 else のせいだったりするんかね? ……forthに何があったらもっと流行るかな?
325 名前:sage [2007/04/24(火) 23:53:34 ] て、むしろ正常ってこと?
326 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 23:24:51 ] Forthを使いたいと思う人より、Forthの処理系を造りたいと思う人の方が多そうな予感
327 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 07:13:54 ] 自分もForthを作っているクチ 毎日、Forthでプログラム作ってるぜ!って奴はいますか?
328 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 08:55:54 ] ど素人の趣味なので毎日はしませんが、Forth系じゃないコードはほとんど書きません。 むしろForthでForthを作れば良いのではないかと思います。
329 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:17:29 ] >328 Schemeみたいに最低限のプリミティブを用意して、それからForthを組むようにしたら面白いかもね。 Lispだとこんな感じか。 ttp://ja.wikipedia.org/wiki/LISP#.E6.9C.80.E5.B0.8F.E3.81.AELISP Forthの場合、スタック関連の操作、代入、分岐、Immediate、postponeぐらいで 実装できそうな気がする
330 名前:328 mailto:sage [2007/04/30(月) 21:27:11 ] >>329 古典的なForthみたいにですね。 昔はアセンブリで書いた核の部分は、今はCでいいですからね。 ただ、何を核にすれば必要十分なのかについて、あまり資料がないですね。 四則演算と論理演算(ビット操作)もあった方がいい気もしますが、どうなんでしょう (Lispは四則演算はいらない?)。 gforthはそういうやり方らしいですけど、 実行速度のためCで書き込むプリミティブを多めに取ったと書いています。 はじめ漠然と考えていたのは、間接スレッディングのforth環境の上でネイティブ方式のforthを頭から書いてしまう というようなことでした。Executableフォーマットのファイルを作るのが結構面倒ですけど。 そこまでしなくても、Cのダイナミックライブラリとのインターフェイスがforth上で書ければ、 ほとんど何でもforthでできるんですけどね。 逆に言えば、マシンやOSの低レベルの仕様を調べないと派手なことをするのは難しいので、 そこが難点かも知れません。 もともとforthは言語仕様自体は貧弱なので、 アプリケーション毎に自前の言語を組上げていくみたいな面白さもあります。 インプットストリームも弄れるので、シンタックスまで変更できますし。 それがあまり面白がられていないということですかね。
331 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 09:02:05 ] 昔、近所の古本屋で標準FORTHを100円で保護したのだが、捨ててしまった。漏れの馬鹿。 ところで、Beginning Forthを注文した。米国からなので2週間くらいかかりそう。
332 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:37:02 ] Forthはともかく資料不足。よって今更ながら英語の入門書をもう一個: ttp://www.mpeforth.com/books.htm 『Programming Forth』 - Stephen Pelc et al.
333 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 04:42:21 ] 汎用で考えるとやっぱり今どきスタックは32ビット長ですよねえ。 そこで移植にお勧めの埋め込み用32ビットプロセッサって何がありますか? I/Oがたっぷり用意されているので遊べるかなって思いますがどうでしょう。
334 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:39:30 ] パフォーマンス優先ならSHじゃね? 最近秋葉でも手に入りやすくなったし。 FORTHコンパイラをアセンブラでガリガリに書きたい人なら アセンブラが書きやすいH8かな。
335 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 19:20:03 ] φ(。。) めもめも
336 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 20:54:14 ] HDLだけでFORTHは作れる?
337 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 13:07:14 ] >>336 作れるみたいですね やってみたことないけどw ttp://www.ultratechnology.com/chips.htm この中のMicroCoreって初めて知りました ttp://www.microcore.org/
338 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 16:12:13 ] joyの話しようぜ
339 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 23:22:38 ] 後で読む: i386 / Linux 向け Forth コンパイラの作り方。 ttp://www.annexia.org/_file/jonesforth.s.txt
340 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 15:51:44 ] CでForthの処理系を書いてみた。 GCにはBoehm GC、辞書にはJudy Arrayを使ったので ほとんど手間がかかっていないわりに速かった。 まだ単純な処理しか出来ないけどrubyとかより速いかも。
341 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 00:15:24 ] ささやかな期待
342 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 19:36:42 ] rubyより遅いforhtなんてあるのか?
343 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 19:51:26 ] >>342 rubyで書けばいいんじゃね?
344 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:21:13 ] >>343 激しく楽しくない気が
345 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 19:36:18 ] >>340 GC?
346 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 20:36:49 ] >>345 Garbage Collector でそ。
347 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:29:09 ] (forthに)GC? てことじゃないか?
348 名前:345 mailto:sage [2007/10/03(水) 23:33:04 ] >>347 フォローありがとうございます。 >>346 すみません。347さんの線でお願いします。 どう使うのかなあ?と。
349 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 15:23:24 ] concatenative
350 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 11:41:29 ] " hoge" は汚なく感じるな "hoge" か " hoge " だろと
351 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:35:58 ] www.forthfreak.net/index.cgi?ForthBestPractices Programming guidelines when you start doing forth programming: * try to keep your words to one line, two lines max * try not to pass more than 3 items on the stack to a word, preferably only 2 * try not to juggle more than 3 items on the stack within a word if you can
352 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 17:49:19 ] FreeBSD 6.2 では boot loder の動作を コントロールするために ficl という forth が使われていて るので、勉強中です。 FreeBSD のサーバーをリモートから管理しています。 以前のバージョンでは nextboot(8) で別ディスク上のカーネルを 次回のみテスト的に起動する設定ができたのですが、今のバージョン 6.2 では nextboot(8) では同一ディスク内のカーネルのテスト的起動しかできません。 二台のディスクがついているマシンのそれぞれのディスクに別々にOSを インストールして、交互にアップデートをかけたいのです。 リモートからのコントロールしかできないので、ssh のアクセスができなく なると一万円払ってOS再インストールなので そんなわけで、forth のcodeを見ているのですが、難しいです。 orz FreeBSDのloader 改造したりしている人はいませんか?
353 名前:デフォルトの名無しさん [2007/11/03(土) 19:38:03 ] いまふ
354 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 11:53:19 ] dsForthがアドエスで動くのはガイシュツ?
355 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 04:23:01 ] notガイシュツ
356 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 13:50:29 ] このスレの人たちが使う電卓はRPLだったりするの?
357 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:03:59 ] HPの電卓?
358 名前:356 mailto:sage [2008/01/27(日) 17:17:11 ] >>357 そうです。RPNの間違いでした。
359 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 18:59:27 ] HP41CV,HP28,HP48SX,HP32S,と使ってきましたよ。 ちなみに今使っているHP35は問題大あり!
360 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:12:19 ] Adobe高速JavaScript実装、バイトコードにForthを採用 journal.mycom.co.jp/news/2008/02/07/011/index.html
361 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:34:36 ] LLVM涙目
362 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:52:21 ] 単なるスタックベースのVMなだけじゃないの? JavaVMとか既存のVMと一緒でしょ
363 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 22:40:23 ] 急に某ゲーム機上で動くforthが作りたくなって>>339 が挙げてるやつ読んでるんだが(まあこれはi386用だけど)、わかりやすいなこれ 実を言うと今までforthはあまり理解してなかったけど、モヤモヤしてたことがすっきりしてきた しかしforthってシンプルで美しいなぁ Lispやsmalltalkに負けないと思うのに、このマイナーさ…
364 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:09:41 ] concatenative languageあたりをキーワードにWebをさまよってみると良いよ。 joy factorあたりが面白いかね。おいらも俺言語作成中。
365 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:24:42 ] factor は良いねぇ。秘かに期待している。
366 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:50:59 ] 基本的に 1.stackの一番上と二番目の値に対して演算 2.stackの一番上だけ取り除く 3.stackのn番目と一番目を交換 の機能だけがあると思ってていい?
367 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:10:53 ] concatenativeに? それならスタックに対する関数適用だけかな
368 名前:デフォルトの名無しさん [2008/03/20(木) 14:28:46 ] forthのコメントってもしやforthで書かれてる? ( コメント ) ←これ
369 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:22:35 ] >>368 実装にもよるけど、 ワード ( を読むと、フラグが立って、ワード ) まで無視する。 Forth で書いてある、ってこういう意味ってことでいいのかな?
370 名前:デフォルトの名無しさん [2008/03/20(木) 15:50:12 ] >>369 いやなんかマクロみたいな機能を使って書かれているのかなーと forth知らないので全然分かんないんですけど 要するに↓みたいにforth言語で書かれているのか?ってことです : ( hoge hoge ... ;
371 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:15:20 ] 『標準FORTH』だと pp.166 にある。 : ( 29 WORD DROP ; IMMEDIATE 29 は ')' のコード WORD はスタックトップと同じキャラが出てくるまで入力を読んで、 その先頭のアドレスをスタックトップに置くワード。DROP は説明の 必要ないな。IMMEDIATE は直前に定義されたワードを、 イミディエイトワードにするワード。 C マガジンのきだあきらさんの連載『千言万語』の Forth の時に 紹介してたネタだったような気もする。
372 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:16:04 ] 千言万語単行本にならねーかな
373 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 21:37:32 ] 追加。 イミディエイトワード、というのが、プログラムの実行時ではなく 読み込み時に意味を持つワードなので、マクロのような機能と 言えるかもしれません。
374 名前:デフォルトの名無しさん [2008/03/21(金) 07:42:46 ] >>371-373 サンクス www.geocities.jp/naosacra/mops/particle2/immediate.html これ見てるけどimmediateの意味がいまいちわからん… 何のためのものなんだ? : ( 29 WORD DROP ; IMMEDIATE 例えば↑にimmediateがついてなかったらどういう動作になるんだろう
375 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 08:55:03 ] 仮に ( がイミディエイトワードで無かったとすると、 : hoge ほげほげ ( ほげほげ ) ; とか書いた場合に、hoge の定義の一部として、実行される部分になって しまいます。定義中でも直ちに実行されるワードがイミディエイトワードです。
376 名前:デフォルトの名無しさん [2008/03/22(土) 10:18:31 ] >>375 なるほど 理解した。サンクス
377 名前:デフォルトの名無しさん [2008/03/27(木) 22:38:05 ] 最近、Concatenativeな言語というもの目にしたんでage
378 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 00:23:41 ] なんか酷いのみつけてきたwwwww ちょっと草植えときますね型言語 Grass www.blue.sky.or.jp/grass/doc_ja.html スタックマシン使ってるってだけみたいだが(俺には良く分からん)
379 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 10:36:35 ] forth厨はなんでもかんでもスタックマシンにするな
380 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 02:09:52 ] factorでHelloWorldのCGIやってみた httpdからのfactor起動はバッチファイルで USING: io ; "Content-type: text/html; charset=Shift_JIS\n\n" print "<HTML><head><title></title></head>\n<body>" print "はろ〜factor表\示可能\" print "<br>\n</body></HTML>" print なんか楽しいw
381 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 03:00:58 ] あれ?factorの新しいの入れたら日本語出なくなった エンコード関係?
382 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:10:30 ] factorソースから入れるのめんどくさいな・・・ gitなんて初めて知ったよ
383 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:56:33 ] 何か面白い話無い?
384 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 11:05:57 ] スタック1本で動作する処理系作れ
385 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:18:58 ] バロースのメインフレームはシングルスタックなんだぜ?
386 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:37:49 ] wikipediaより > スタックを1つしか持たないスタックマシンは、 > 計算モデルとしては非常に弱い。例えば、1-スタックマシンでは、 > 0n1n(0の並びの後に同じ個数の1が並ぶ言語)のような単純な言語も認識できない。 > 1-スタックマシンの計算能力は、有限オートマトンよりも高いが、 > 決定性プッシュダウン・オートマトンよりも低い。 > 一方、複数のスタックを持つスタックマシンはチューリング機械と等価である。 > 例えば、2-スタックマシンでは、チューリング機械をエミュレートできる > (チューリング機械のヘッド位置から左側のテープをひとつのスタックが代替し、 > 右側のテープをもうひとつのスタックが代替する)。 へぇ〜
387 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:50:58 ] factorのドキュメント消えてら
388 名前:デフォルトの名無しさん [2008/08/01(金) 21:55:57 ] V en.wikipedia.org/wiki/V_ (programming_language) Onyx www.canonware.com/onyx/ Forthもこれらも俺には使いこなせないんだけどね orz
389 名前:388 mailto:sage [2008/08/01(金) 21:57:15 ] Vはこっちのページも code.google.com/p/v-language/
390 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 03:04:06 ] Forthの実装中sage 実装法のドキュメント付きで晒すかも
391 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 04:01:08 ] forthって、引数の数ミスるだけで崩壊するよな >>390 どんな俺フォースを見せてくれるんだい? 誰もいないしここ、日記帳のつもりで使ってくれよ。
392 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 06:07:26 ] 久々にレスキタワァ*・゜゚・*:.。..。.:*・゜(n‘∀‘)η゚・*:.。. .。.:*・゜゚・* !!!!!
393 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 08:44:15 ] >>390 www.google.co.jp/search?hl=ja&q=codepad&btnG=%E6%A4%9C%E7%B4%A2&lr= どんな言語使って作るかしらん こんなの補助として使ってみるのも便利かもしらん
394 名前:390 mailto:sage [2008/08/02(土) 14:40:33 ] 過疎っぷりに見てる人もいないと思ったら、意外といたのね。 >>391 Forthの実装は初めてなので、古典的で教科書通りのIndirect Threaded Code、 Cで書いた仮想マシンの上で動かすってかんじで。 今はMac OS XとLinux(x86)とLinux Zaurus(arm)の上でぽちぽち書いてる。 ポータビリティーは良いのでメモリがあって速度も気にしなければ 簡単にマイコンにも移植可能だと思う。H8なら余裕かな。 今月のトラ技の78K0基板持ってるんだけど、こっちはきついかも。 >>392 あばばばばばば >>393 おお、こんな面白いのがあったのね。 とりあえずアカウント取ってみた。 このスレに落書きしつつ、blogにまとめてけばいいかな。 ANS-ForthのCORE準拠を目指して www.taygeta.com/forth/dpans.html 読んでるんだけど、けっこうめんどいなあ。 ある程度実装の目処がたったらコード晒してくつもり。 少々お待ちを。
395 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 22:59:11 ] Forth は実装が簡単だって聞いてたんで、 自分も作ってみようとちょっと調べたんだけど、 仕組みがよく分からなかったし(ワードの定義とか)、 規格に沿った物にしようとすると意外に仕様が大きくて、 挫折しますた><
396 名前:390 mailto:sage [2008/08/05(火) 23:09:27 ] >>395 辞書まわりは次の10個のワードがあればOK(たぶんね) CREATE COMMA(,) [ ] IMMEDIATE TICK(') COLON(:) SEMICOLON(;) FIND WORD このあたりのワードの挙動は、 www.annexia.org/forth ここのjonesforthを参考にすればいいと思う。 これをインスパイヤしたCと日本語のドキュメントを書いてるんだが・・・仕事が忙しくてね・・・ これをざーっと読んで、yforthあたりの簡単な処理系のコード眺めて 実際に動作を確かめればANS-Forthの準拠もそう難しくないかと。 たださ、ANS-Forthって処理系の内部の規定しすぎじゃね? もっと好きなようにやらしてくれよ。一回確保したWORDが二度と解放できないとか、 文字列はヌル終端しない代わりに文字数を記憶するとか、ちょっと気持ち悪い気がする。
397 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:23:59 ] >文字列はヌル終端しない代わりに文字数を記憶する これは正当だと思う。ヌル終端がどれだけのバグを生み出しているか……
398 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 21:05:50 ] 実装としては文字列をヌル終端にしても可。 但し、文字数は必要、かつ、 ヌル終端を当てにしたコードを書いても一般には動く保証なし。 が規定の内容と思われます。他の規定も同様。
399 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 19:23:22 ] ASCIIZはねーよマジで
400 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:38:27 ] でも、C言語で作られたプログラムとの連携したいときは、NUL文字終端がいいよね。 C言語で作られたプログラムの数の多さ、便利さから言うと、無視できないなと。
401 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:30:35 ] Cは捨てるのがよろしいかと。 C++をbetter Cとして使う方がまだましだと思う。 C++を使えないようなリソースのキツい環境で使うんだったらforthを直書きした方が良いんじゃね?
402 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:15:50 ] >C++をbetter Cとして使う それ最悪
403 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 00:15:21 ] 402 と同感だが、better Cとして使うのは FORTH 実装にはない(価値が少ない)だろ。 自己学習として作るならまだしも、 FORTHに期待される動作環境だったらアセンブリレベルの設計が必要だろ。 C++使うならC++的設計をしろって。
404 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:31:36 ] forthチック俺言語のプロセスが回った記念カキコ。 forthだと引数管理がけっこう面倒だと思うけど、wordの名前に 引数の数の情報を盛り込んだら楽にならんかね? 俺言語ではこんな感じでドットの数=引数の数にしているんだけど、どう思う? 1 2 ..sum 1 2 3 .:sum 名前の衝突も起こりにくくなって一石二鳥かと思うんだけど。
405 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 09:31:38 ] ドット打つのがひたすらめんどくさそう ifだと.:ifになるの?
406 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:05:33 ] こういう風にしたらどう? ・引数可変のワードは # で始まることとする ・ワード [ は現在のパラメータスタックポインタの値を リターンスタックに積む ・ワード ] は現在のパラメータスタックポインタの値と リターンスタックポインタのトップの値の差から パラメータ数を計算しパラメータスタックに積む たとえば [ 10 20 30 ] #sum と書くと、#sum実行直前にはパラメータスタックは 10 20 30 3 となっていて、#sumは3つの数の和を求めればいいことがわかる。
407 名前:404 mailto:sage [2008/08/27(水) 22:38:18 ] >405 そこは構文糖使った方がよろしいかと (a ? b ! cの三項演算子とか) >406 それも考えたけど、そうするとConcatenativeのメリットが死ぬんだよね。 できるだけ前の計算結果に依存しないように考えると、セパレータのようなものを スタックに積むのは良くないので、ワード単体で引数までを意味するようにしたい、 ということですな。
408 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:39:56 ] prologみたいにsum/3みたいにするとか。 よく判ってないが。
409 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:01:15 ] 引数管理しなきゃいけないようなコードの構成だと崩壊しそう
410 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 03:11:26 ] しばらくforthやってたら他の言語がいじれなくなってて驚いた。 のめり込むのは危険だなw
411 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 03:16:06 ] >>407 そのセパレータってリスト終端のnullに相当するから あながち間違ってないと思う。
412 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 21:54:56 ] concatenativeの論理を詰めて行くと、 スタックの機構はコード設計のための因子から外されるのかも。
413 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 22:34:55 ] >411 Wordの中でWordを呼ぼうとすると破綻するよ。 >412 結局はトップを基点とした対称性(みたいなもの)になるからな。 対称性があれば何でもOK