- 1 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 00:59:13 ]
- プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 過去スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 8 pc8.2ch.net/test/read.cgi/tech/1131273918/ 9 pc8.2ch.net/test/read.cgi/tech/1135082582/ 関連リンクは多分 >>2-10 あたり
- 656 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 23:33:41 ]
- 口だけ君はこれだから困る
- 657 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 00:09:38 ]
- ○だけ君はこれだから困る
- 658 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 00:21:23 ]
- △だけ君はこれだから困る
- 659 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 03:20:08 ]
- 656 :デフォルトの名無しさん :sage :2006/08/22(火) 23:33:41
口だけ君はこれだから困る 657 :デフォルトの名無しさん :sage :2006/08/23(水) 00:09:38 ○だけ君はこれだから困る 658 :デフォルトの名無しさん :sage :2006/08/23(水) 00:21:23 △だけ君はこれだから困る 659 :デフォルトの名無しさん :sage :2006/08/23(水) 03:20:15 |だけ君はこれだから困る
- 660 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 07:48:57 ]
- >>655
yaccとか使う場合だと、 specificationの内容を全部BNF文法に直す。 うまくあわないところ少し小細工する 意味解析ルーチンつける て感じですか? ・・・・なんか気の遠くなりそうな作業だな・・・・ ・・・・Genericsとかやりたくないな・・・・
- 661 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 08:16:39 ]
- >>651
パーサだから意味解析は置いといていいのね? >>3の¬<><∪∪なら、 言語仕様書からシンタックス部分をまる写しするだけだから簡単。 というかサンプルについてるけど。 >>3ではLALR(1)になってるけどLALR(∞)。
- 662 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 23:09:21 ]
-
www.quut.com/c/ANSI-C-grammar-y-1998.html www.quut.com/c/ANSI-C-grammar-l-1998.html
- 663 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 23:50:56 ]
- ついにJavaにもクロージャ? - James Gosling氏らJDK7へ導入提案
journal.mycom.co.jp/articles/2006/08/23/java7closuer/ Javaもなんでもかんでも取り込むようになったもんだ
- 664 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 01:44:02 ]
- その記事、単に匿名ローカル関数のことをクロージャと呼んでるようだが
カリー化しなくてもそう呼んでいいものなのか?
- 665 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 02:36:45 ]
- >>664
クロージャは語の通り囲い込みしか指さないので(ry
- 666 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 04:36:54 ]
- 関数型言語の本で封入って訳を見たことあるな
- 667 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 06:06:41 ]
- ふみゅ〜ん
- 668 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 10:37:04 ]
- >>664
>>665も書いてるが カリー化とクロージャは、全く無関係な概念 関数からその関数を囲む環境にアクセスできればクロージャと言ってよい
- 669 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 21:10:06 ]
- じゃあ、単に匿名ローカル関数のことをクロージャと呼ぶのは間違いでよろしいか?
記事、ろくに読んでないが、ラムダ式のことをクロージャと呼んでるように見えたモナ
- 670 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 21:40:35 ]
- >>669
ラムダ式はクロージャを持つけど、クロージャはラムダ式じゃない
- 671 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 21:43:14 ]
- チョットワカッテキタ...
- 672 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 22:37:34 ]
- C#の匿名メソッドはクロージャとは別物ですか?
- 673 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 22:44:38 ]
- 「匿名メソッド is-a クロージャ」 あるいは 「匿名メソッド has-a クロージャ」 な関係
- 674 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 23:20:30 ]
- 記事、も一回読んでみたけど
Cの関数へのポインタ程度のものを、導入するぐらいにしか見えん そしてそのCの関数へのポインタのようなものを、クロージャといってるような カリー化とかできそうに見えない、高階クロージャ(?)すらあやしい
- 675 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 23:30:18 ]
- まぁ糞JAVA言語がそろそろ行き詰まってきたってことだろうなw
- 676 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 23:41:03 ]
- >>674
int func int(int x) { return (int y) { x + y; }; }; int result = func(2)(3); こういうのならできるんじゃね? 実際の java で動くかどうかはしらないけど、一応カリー化できてるはず。
- 677 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 23:47:51 ]
- >>674
おまえはカリー化とクロージャの意味をわかってるのかと 今回提案された仕様のローカル関数及び匿名ローカル関数は れっきとしたクロージャだし、関数型も導入されるので、 カリー化するのも容易なはず >>676 ホワイトペーパーの例からだと、たぶんこんな感じではないかと int(int) add(int x){ return (int y) : x + y; } int result = add(2)(3); // => 5
- 678 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 23:52:34 ]
- >>677
いや、その例からだと add は有名関数だから、宣言は int(int) じゃなくて int では? 4ページ目の一番上。 さすがに、OCaml ばりの厳密で容易なカリー化は期待できないっすよ。 let add fun x y -> x + y; で宣言して add 1 2 で 3、add 1 で fun y -> 2 + y みたいなのは java では無理でしょ。
- 679 名前:デフォルトの名無しさん mailto:sage [2006/08/24(木) 23:53:13 ]
- あ、間違えた。まあ良いや。
- 680 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 00:17:56 ]
- >>678
addはカリー化された加算関数で、型はint(int) (int)なので これでOKなはず。4ページ目の一番上の例は、int (int)な関数だよね > さすがに、OCaml?ばりの厳密で容易なカリー化は期待できないっすよ。 そりゃOCamlほど容易ではないけど、厳密かどうかで言えば同程度には厳密でしょ
- 681 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 00:25:58 ]
- >>680 上段
ほんとだー。すまねー orz >>下段 あ、すいません。『厳密』 ってのは 『制約』 ってのと同じような意味で使いました。 OCaml ではカリー化された関数しか扱えないみたいっスから。 int add(int x, iny y) { return x + y; } 「こんな感じに定義して add(1) ってしても 1 + y が帰ってこないじゃないかー」 って >>674 は想像しているのでは? って思いましたんで (^-^;;
- 682 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 00:27:23 ]
- オーバーロードとカリー化の共存は難しい。
- 683 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 00:39:23 ]
- すみません。某スレから誘導されてきました。
yaccやlexで生成したソースはどうやって使ったらいいのでしょうか?
- 684 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 01:00:40 ]
- >>683
きっとお前も質問だけして居なくなるんだろうな…>646みたいに。
- 685 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 01:23:18 ]
- >>684
いえ、ホント基本的な動作からわかってないので藁にもすがる思いですよ。 yyparseやyylexなんかがどういう動作をしてるのか?とかそっからわかっていません。 とりあえず、まず、大まかな流れが知りたいのですが、日本語でいいサイトないでしょうか? なんかyacc lexが独自に吐き出す関数とか変数とかわかってないです。 やりたいことはプログラムである文字列をパーサに渡して解析結果を取得することなんですが yacc lexの吐き出したソースが何をどこまでやってくれるのかってそこからいってわかってないです。
- 686 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 05:18:48 ]
- そうですか
- 687 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 05:55:38 ]
- >>683
main() { yyparse(); } yylexはyyparseのなかで勝手に呼ばれる
- 688 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 09:38:52 ]
- >>677
どうも、そういうことが出来そうに見えなかったんだよね Javaにクロージャ導入なんて記事を書くんなら 俺なら絶対カリー化の例をあげる でも、カリー化どころか高階関数の例もないので、どうもな まあ、ライターのレベルが低いだけかもしれんが
- 689 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 15:34:59 ]
- >>688
匿名関数も関数型変数も導入されるらしいのに、 なんで高階関数がないと予想したの?
- 690 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 21:09:50 ]
- 読解力のない阿呆 (>>688) のつまらん言い訳だよ
- 691 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 22:16:14 ]
- ライターのレベル以上に、リーダーのレベルが低すぎた悲劇だな。
- 692 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 01:30:04 ]
- つまりLISP最強ってことか。
- 693 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 02:07:02 ]
- なんでじゃ
- 694 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 04:25:26 ]
- Lisp触ってれば間違いようがないものな。
- 695 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 06:02:16 ]
- Lispの処理系をLispで書くのって無謀?
- 696 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 06:27:23 ]
- >>695
ものすごく簡単(数行しかない)なやつから、 きちんと機能を実装して、自分で自分を実行できるやつ、 もっと凄いやつ、と様々なので、答えようがない。
- 697 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 06:48:53 ]
- >>696
> ものすごく簡単(数行しかない)なやつから、 数行はないだろw
- 698 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 06:52:06 ]
- スーパー手抜きlisp
( loop (eval (read)) )
- 699 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 10:50:14 ]
- LISPってライブラリたくさんあるの?
- 700 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 12:31:04 ]
- >>699
君のレスは見ていて痛々しい。
- 701 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 12:48:32 ]
- しらねーなら書き込むなこの池沼が
- 702 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 13:08:21 ]
- ちょこっとLisp調べてみたけど、本当にこの言語で自己記述できるの?
字句解析とか構文解析のコード大体どんな感じになるのか情報orソースきぼんぬ
- 703 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 14:14:21 ]
- >>702
大昔の論文や書籍くらい読め #とか思ったら良書は絶版かYo!
- 704 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 14:57:32 ]
- >>701
聞けば答えてもらえると思うな、厨房。
- 705 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 16:47:29 ]
- けちくせーやつだな。だったらスレみてんじゃないよ。
Take,TakeでGiveはなしか。
- 706 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 16:53:24 ]
- 言いたがりが勝手に口を滑らせるだけだよ。
そんなものでも、最新の情報なら役に立つ。
- 707 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 17:12:04 ]
- >>689
出来ると書いてないから それにつきますな
- 708 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 20:46:44 ]
- >>702
っSICP 後ろのほうに自己記述に1章裂いてるお
- 709 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 01:19:54 ]
- Schemeを最初からCで書くより、一通りSchemeで書いてから必要な部分だけ
Cにする方が楽だよね。
- 710 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 07:43:17 ]
- 今、M$のVisualStudio2005いじってるんだが、GC付きで64bitポインタ、メモリ管理サポートの
ランタイム上で、C#、C++、VisualBasicが走るなんて、Lisp系言語を載せてくださいと言ってる ようなもんだな、と思った。Javaは過去にやろうとして16MBでギブアップしやがったので、 M$のCLIには少し期待している。
- 711 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 13:02:07 ]
- >>710
HotSpot以降のJVMならパラメータでメモリ量の調整きくよ。 web上のappletが廃れかけた頃にはいろんな言語のコンパイラがjvm用のクラス吐くようになったけど 今ははやらないのかねぇ。
- 712 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 14:01:08 ]
- >>711
むしろ最近になって流行ってきてると思うのだが JDK6でJava VM用のスクリプト言語をJavaから呼び出すための APIが標準化されるのも、Java VM用のスクリプト言語が流行ってきたからだろうし ちなみに先に言っておくと、GroovyもJava VM用のJavaScript処理系であるRhinoも Pnutsも単なるインタプリタではなく、JVM用のクラスファイルを内部で生成して、実行してる
- 713 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 16:15:07 ]
- >>712
スクリプト処理系が実行時にclassファイル吐いてるのはしらなかったな。 外部ファイルコンパイル実行する時にclassローダ的にはどういう扱いするんだろう?
- 714 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 18:10:57 ]
- 今のJVMならメモリの調整効くとかいってるが
そんなことねーよただ確保してるだけでなんも有効には使ってない。 そのへんM$のは賢い。
- 715 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 20:13:16 ]
- >>713
いくつかのスクリプト処理系のソース読んだ限りでは、基本的に、 java.lang.ClassLoaderをサブクラス化して、スクリプトをコンパイルしたクラスは それに読み込ませるようにしてる ちなみに、自作のJVM上で動作するJavaライクなスクリプト言語でも、同じような手法で 実装してる
- 716 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 20:15:58 ]
- >>713
あと、わかっているかもしれないけど、念のため追記しておくと、クラスファイルを 生成するといっても、スクリプトを直接実行するときは、別に実際にファイルが 生成されるわけではなく、オンメモリにbyte配列としてクラスファイルを生成して、 それをClassLoaderで読み込むようになってる
- 717 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 08:56:44 ]
- >j ava.lang.ClassLoaderをサブクラス化して
これが必要ってことはclassfileの仕様を拡張してるってこと?
- 718 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 12:32:30 ]
- >>717
いや、そういうわけじゃない java.lang.ClassLoaderのAPI見ればわかるんだが、 byte配列からClassオブジェクトを構築するためのメソッドなどはprotected になってるので、プログラムからこのメソッドを呼び出したいなら、サブクラス化 しなければいけないということ
- 719 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 03:43:18 ]
- >>714
>そんなことねーよただ確保してるだけでなんも有効には使ってない。 そんなわけねーだろw
- 720 名前:デフォルトの名無しさん [2006/09/07(木) 15:26:38 ]
- ちょっと質問。
スタックを使って実装する言語についてです。 JavaのようにGCを持っていて、オブジェクトへの参照とプリミティブの 両方をスタックに積むことが出来る場合に、 スタック上のプリミティブはGCの邪魔になりました。 オブジェクトはクラス情報を持っていますが、プリミティブには持たせていません。 なぜなら高速性を期待してプリミティブはオブジェクトと区別したからです。 そこでどうしたらいいかと考え、オブジェクト用とプリミティブ用の 個別のスタックを用意したらどうだろうと考えたのですが、 何か考えられる問題点はありますか? また、ほかにいい方法はありますか? よろしく。
- 721 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 19:57:05 ]
- >>720
ここはお前専用の相談室だ。 よろしく。
- 722 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 20:25:02 ]
- >>720
GCの実装は?
- 723 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 20:53:31 ]
- つーか>>720の言ってることよくわからんな。
スタックって何に使うスタックのこと言ってるのかわからないし、なんでそのスタックに積んであるものがGCされるのかもさっぱり。 プリミティブ値が邪魔になるってのも意味がわからん。
- 724 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:09:47 ]
- >>723
……(;´Д`)アチャー
- 725 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 21:16:00 ]
- >>723
( ゚д゚ )
- 726 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 22:52:51 ]
- >>723
(笑)
- 727 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:06:54 ]
- >>720
型システムが堅いなら系列分けたスタック持っても良いかもしれないが もし引数がバリアントみたいに使える言語処理なら徒労におわると思う
- 728 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:20:08 ]
- >>727
スタック上のプリミティブとオブジェクトを区別できないことから考えて、 構文として静的に区別できるような言語なんじゃないだろうか。 だったら分けても良いかも知れない。
- 729 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:27:16 ]
- >>728
ボクシングとかほしくなったら困るんじゃなかろうか(関数呼び出しフレーム作る時ね)
- 730 名前:デフォルトの名無しさん mailto:sage [2006/09/07(木) 23:29:51 ]
- ボクシングしたものは全てオブジェクト扱いでイイような気がする。
箱に入れてさ。
- 731 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 06:09:40 ]
- 素直にプリミティブにタグ付けした方が良い希ガス。
- 732 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 07:46:50 ]
- オブジェクトのメンバの、ポインタと即値はどうやって区別してんだ?
- 733 名前:デフォルトの名無しさん mailto:sage [2006/09/08(金) 12:00:11 ]
- >>732
型のある言語ならコンパイル時にGC対象を列挙できるので問題はないでしょ?
- 734 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 02:18:41 ]
- >>720がもどってこなくてショボーン(´・ω・`)
どんな言語なのか聞きたかったのに
- 735 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 02:31:01 ]
- >>734
ねー
- 736 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 09:46:37 ]
- 質問のレベルから察するとだな
- 737 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 19:25:02 ]
- チン子もえもえどぴゅーってレベルだな
- 738 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 20:27:29 ]
- スタックに積む量次第だけど、スタックに積むときだけプリミティブにタグ付けるのが
実装的には一番楽な気がする。
- 739 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 20:34:15 ]
- で、もうちょい話が進むと、プリミティブは常にタグつきがいいという話になる
ちなみに、L(ry も R(ry も、そうなってたような
- 740 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 20:47:24 ]
- もう手抜きして保守的GCにしちまおうぜ
- 741 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 21:20:50 ]
- 可算無限個のメモリを用意するのが最近のトレンド。
- 742 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 23:20:12 ]
- >>739
LispとRuby? Rubyのprimitiveは最下位ビットが1になっているので 保守的GCに引っかからない、というものだったと思う。 Lispの実装は山ほどあるんでわからん。
- 743 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 23:42:47 ]
- >>741
黙れニート
- 744 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 20:20:23 ]
- LISPは今風の書き方ができない。
やっぱa.b.c.d().e.f.gとかしたいわけよ。 LISPで同じことしようとするとオペレータ毎いちいち括弧でくくらないとな。 (dot(dot(dot(call(dot(dot a b)c)d)e)f)g) もうなんだかわからん。 おっと、マクロにすりゃいいとか言い出すなよ。 俺はLISPを長年研究してきたから嘘は通じんぞ。
- 745 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 20:39:58 ]
- CLOSみたいにaccessorで触る仕組みにすると
(g (f (e (d (c (b a)))))) のような感じになるかな。
- 746 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:07:10 ]
- (chain
(a obj) (b it) (c it) (d it) (e it arg1 arg2)) みたいに書けるようにするのはマクロでできるよ。 Rubyでselectやらmapやらを繋げて配列を引き回していたりなんかすると、 ブロック+ドットよりもこっちの方がむしろ見易い気がする。
- 747 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:14:01 ]
- >>744
そういう風に華麗にかけるのはいいんだけど、デバッグするときにめんどくさくなんね? gの呼び出しで値がおかしくなってるんだけどどこで値がおかしくなってるのかわかんないみたいな。
- 748 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:28:46 ]
- >>746
で、誰がそんなアホなマクロ使うの? プロジェクト全体でそのマクロ使うように、 ルール決めしたりできる?www
- 749 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:55:53 ]
- >>744
引数を沢山とれるようにして (dot (call (dot a 'b 'c 'd)) 'e 'f 'g) でいいじゃん。
- 750 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 22:01:13 ]
- だから、んな誰も使うはずのないゴミを書いてみても
自己満足以外の意味ないだろ
- 751 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 23:26:44 ]
- vimのマクロはなにに影響されてできたもんなの?
- 752 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 00:00:43 ]
- >>744
| LISPは今風の書き方ができない。 | やっぱa.b.c.d().e.f.gとかしたいわけよ。 いや。そんな書き方したいと思ったことは一度もないんだが。
- 753 名前:744 mailto:sage [2006/09/14(木) 00:03:24 ]
- ふむ、ふむ。
予想通りのレスだな。 おれは結局フロントエンドを書いた。 しかし、それはもはやLISPではなく、 >>750の言う通りでもあった。 LISPはリスト処理が得意なはずなのに、 こういった階層表現のオペレートが苦手なのは意外だった。 素直にLISPとして表現するならば、 (defvar a '(b (c (d (e (f (g value))))))) というタグ付きリスト階層を作り、 (cdadadadadadadar a) => value という操作を行う事だろうか。
- 754 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 00:34:25 ]
- >>744-753
マクロにする必要すらないんじゃ? ドットで繋ぐんだから実装はハッシュか何かだよね? Schemeで申し訳ないが (define (pp obj r) (if (null? r) obj (pp (ref obj (car r)) (cdr r)))) (define (p obj . r) (pp obj r)) で (p a 'b 'c 'd) と書けるよ。 あとはgauche限定?になるけど (define-method object-apply ((b <hash-table>) . c) (pp b c)) で (a 'b 'c 'd) と書ける。
- 755 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 01:45:33 ]
- だから、ゴミの実装の詳細なんぞ、
興味ねえから、チラシの裏にでも書いてろ
- 756 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 01:57:39 ]
- 744=750=755 ?
|

|