リスト構造を使わない速いschemeを作ろう
■ このスレッドは過去ログ倉庫に格納されています
0001nanashi
2006/07/21(金) 14:24:58メリット
1.ポインタをたどる回数が減って速度が向上する
2.リストではなく配列を使えるので、メモリの節約になる
3.GCがいらなくなる(?)
実装に際してまずは、どうすべきでしょうか?
0002nanashi
2006/07/21(金) 14:26:18(stack counterという考え方では、2項演算子を-1、演算子を1と考える)
例:3xy+y
これを prefix で表現すると
+ * 3 * x y y
-1 -1 1 -1 1 1 1 (stack count)
となる。S式では
( + (* 3 ( * x y))y)
-1 -1 1 -1 1 1 1 (stack count)
(部分木の stack count の総和は1になる。)
見やすくするため、1を+、-1を-で表す。
prefix表現
+ * 3 * x y y
- - + - + + +
S式
(+ (* 3 (* x y))y)
- - + - + + +
()内が1になるか計算
(- - + - + + +) = 1
- (- + - + +) + = 1
- - + (- + +) + = 1
基点は必ず - となる。
どの基点から開始しても必ず1となる終点がある。
+ が示すノードは終端ノードという。
- が示すノードは非終端ノードという。
全ての非終端ノードは2項演算子である。
右側の非終端ノードから計算する。
0003nanashi
2006/07/21(金) 14:38:27正(stack counterという考え方では、2項演算子を-1、非演算子を1と考える)
間違ったorz
0004nanashi
2006/07/21(金) 14:50:04さらに間違った…
0005nanashi
2006/07/21(金) 19:18:31反応少ないし...
既に常識?
0006デフォルトの名無しさん
2006/07/21(金) 20:28:180007デフォルトの名無しさん
2006/07/21(金) 21:15:43ついてけねーよ
萌アニメの話しようぜ
0008デフォルトの名無しさん
2006/07/21(金) 22:31:42array を使いたいだけなら以下を実装している処理系(ry
http://srfi.schemers.org/srfi-25/srfi-25.html
0009nanashi
2006/07/21(金) 23:28:04考えてみたんですけど
gosh> (quote ((quote (1 0)) (quote (0 1))) )
('(1 0) '(0 1))
は'が余分についてしまうし
gosh> (cons (cons 1 (cons 0 ())) (cons 0 (cons 1 ())))
((1 0) 0 1)
はネストがなんか違うし
もう少し考えて見ます。
0010nanashi
2006/07/21(金) 23:31:17既にありましたか。
翻訳しないと判らないですけど(汗
0011デフォルトの名無しさん
2006/07/21(金) 23:50:17srfi-25は配列関係の拡張なんだぜ?
0012nanashi
2006/07/22(土) 14:03:08http://translate.google.com/translate?hl=ja&sl=en&u=http://srfi.schemers.org/srfi-25/srfi-25.html&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq%3DMulti-dimensional%2BArray%2BPrimitives%26hl%3Dja%26lr%3D%26rls%3DGGLD,GGLD:2005-14,GGLD:ja
>>11
内部実装の話です。
srfi-25は(リスト構造を内部実装とした)schemeの拡張ですか?
0013nanashi
2006/07/22(土) 15:15:32どう実装していくか指針を立てないと。
0014デフォルトの名無しさん
2006/07/22(土) 15:47:210015nanashi
2006/07/22(土) 16:26:13リスト構造を陽にとらない配列を使って逐次処理させてもですか?
0016デフォルトの名無しさん
2006/07/22(土) 16:30:420017nanashi
2006/07/22(土) 16:49:28リストから物を取得するには、first関数とrest関数を使います。(伝統的には、これらの関数はそれぞれcarとcdrと呼ばれていますが、firstと restは覚えるのにより簡単です。Nyquistではどちらの組み合わせを使っても構いません。)
cdr = rest ですね。
例えばconsは
(cons 1 (cons 2 (cons 3 nil)))
-1 +1 -1 +1 -1 +1 +1
restは
(cdr (cons 1 (cons 2 (cons 3 nil))))
0 -1 +1 -1 +1 -1 +1 +1
という風にcar,cdrは0にしてcdrならcons 1を飛び越えさせるとか?
(nilはschemeじゃないですね。本来()にすべきですけど説明のため使いました。)
0018デフォルトの名無しさん
2006/07/22(土) 18:31:53亀レスだけども…
> (cons (cons 1 (cons 0 ())) (cons (cons 0 (cons 1 ())) ()))
((1 0) (0 1))
こうすれば全て 2 項演算にできるよ.
当たり前過ぎてわざわざ書くまでもないかも知れないけど,一応.
0019nanashi
2006/07/22(土) 18:36:34参考になりました。
(まだ、schemeそのもののレベルが低いかも(汗
0020デフォルトの名無しさん
2006/07/22(土) 19:07:06早いscheme を作ろうとしてんのか、どっちだ?
0021デフォルトの名無しさん
2006/07/22(土) 19:24:51cdrも知らないレベルなの?
何の言語でインプリメントするのかわからんけど、
その言語で書いた方が早いだろ。
0022デフォルトの名無しさん
2006/07/22(土) 19:42:37インタプリタを書いたことがあるのか?
0023デフォルトの名無しさん
2006/07/22(土) 20:01:510024デフォルトの名無しさん
2006/07/22(土) 22:59:29いあ、そーいう話でなくて内部でデータとして '((1 0) (0 1)) を格納するときには
何を基準にしてリストの先頭を見分けようとしてるのかって話
0025デフォルトの名無しさん
2006/07/23(日) 07:43:18大学に就職しろ
0026nanashi
2006/07/23(日) 09:49:42> 早いscheme を作ろうとしてんのか、どっちだ?
早いscheme を作ろうとしてます。
(結果として俺言語になってしまう場合を除いて)
>>21
> cdrも知らないレベルなの?
cdrではなくrestを知りませんでした。
car = first
cdr = rest
と呼ばれることがあることをはじめて知りました。
>何の言語でインプリメントするのかわからんけど、
>その言語で書いた方が早いだろ。
CかC++でインプリメントする予定です。
(もしschemeで書こうと思われているなら私の説明不足でした。)
>>22
>の前に1は普通のScheme
>インタプリタを書いたことがあるのか?
見よう見まねですが、SICPの4章と5章、それぞれの方式で書きました。
この場合schemeによるschemeインタプリタでCなどでは実装したことはないです。
0027nanashi
2006/07/23(日) 09:51:08>業務でScheme使うことってアル?
今のところありません。
>>24
>いあ、そーいう話でなくて内部でデータとして '((1 0) (0 1)) を格納するときには
>何を基準にしてリストの先頭を見分けようとしてるのかって話
(cons (cons 1 (cons 0 ())) (cons (cons 0 (cons 1 ())) ()))
- - + - + + - - + - + + +
(ここでは、-は-1の意味、+は+1の意味)
とすればスタックカウンタが1になった時点、つまり最後の()をリードした時点で
「どこから開始して1になったか」を基準に見分けられます。
1になったところから逆順にpopしていけば見分けられます。
0028nanashi
2006/07/23(日) 10:05:15この文献の「4.並列分散線形GP」の部分の説明がわかりやすいと思います。
0029デフォルトの名無しさん
2006/07/23(日) 10:18:070030デフォルトの名無しさん
2006/07/23(日) 10:19:350031デフォルトの名無しさん
2006/07/23(日) 10:21:350032デフォルトの名無しさん
2006/07/23(日) 11:04:130033デフォルトの名無しさん
2006/07/23(日) 11:06:530034デフォルトの名無しさん
2006/07/23(日) 11:07:410035nanashi
2006/07/23(日) 11:42:01http://home.pipeline.com/~hbaker1/LinearLisp.html
0036nanashi
2006/07/23(日) 12:21:01http://translate.google.com/translate?hl=ja&sl=en&u=http://home.pipeline.com/~hbaker1/LinearLisp.html&sa=X&oi=translate&resnum=1&ct=
result&prev=/search%3Fq%3DLively%2BLinear%2BLisp%2B--%2B%2527Look%2BMa,%2BNo%2BGarbage%26hl%3Dja%26lr%3D%26rls%3DGGLD,GGLD:2005-14,GGLD:ja
0037デフォルトの名無しさん
2006/07/23(日) 12:49:11何が何でも2項演算子付けた形で格納する気なのか・・・
本来定数オーダーで処理できる cdr やら基本的な処理ですら
配列読んで探しにいかなきゃならんってのはどうなんだろう
0038nanashi
2006/07/23(日) 13:54:18帰って遅くなりるかもしれない希ガス
何か別な方法ありますか?
0039nanashi
2006/07/23(日) 14:24:13Abstract
線形のロジックは、ガーベジ・コレクションの問題の1つの解決策として提案されており、より多くの関数型言語内の効率的な「update-in-place」能力を提供しています。
線形論理はアクセスのしやすさを持ちます。そしてその結果、コピーは明示的な分配されたメモリの並列処理に、より適切な機械的メタファーを提供します。
しかし、線形理論における分割の不足は、それ自身の著しい非能率を導入するかもしれません。
私たちは非線形の論理に関する恒常的要因の中を走るLinear Lispと呼ばれる直線的な論理の効率的な実現を示します。
このLinear LispはRPLACXに操作を許して、非線形のLispと同じくらい安全にストレージを管理しますが、ガベージコレクターを必要としません。
割り当てを提示するが、共有を提示しないので、それは関数型言語と命令的な言語の間の中間層を占めます。
連結/グラフリダクションマシンと同じ能力の多くを提供しますが、私たちのLinear Lisp Machineは連結/グラフリダクションマシンのコピーとガーベージコレクション問題なしでそうします。
...意味が通ってない...orz
0040nanashi
2006/07/23(日) 16:06:01Introduction
お互いに借り手であり、そして貸し手でもありなさい;
ローンはたびたびローンそれ自体と友人の両方を失うから… [Shakespeare, Hamlet, I. iii 75]
共有がコピーの代わりになるので、データ構造の共有は効率的である場合があります。しかし、それは誰がそれらの管理に責任を負うかに関して曖昧さを作成します。
この曖昧さは静的に[Barth77][Bloss89][Chase87][Hederman88][Inoue88][Jones89][Ruggieri88]を削除するのが難しい。
また、私たちは、静止の共有分析(純粋な関数型言語用のさえ)がそうかもしれない[Baker90]を示しました、MLタイプ推論と同じくらい困難な、それは指数関数的な[Mairson90]であると知られています。
[脚注2]私たちはここに次のことを示します。共有に関連しているあいまいさを無くす必要があるというよりむしろ、共有の偶発的(副次的)利点を活用するシステムであり、共有が効率を提供することができるのを示します。
線形論理は、陽に共有、もしくはコピーされるべきでないオブジェクトに対処する方法としてジラード[Girard87]によって発明されました。
Wadler[Wadler91]は、単一性参照を備えたデータ構造の使用がガーベジ・コレクションの問題を回避し、かつO(1)配列最新版に備えるためにカウントする方法を提案しました。
Wakeling[Wakeling91]は線形のロジックをインプリメントし、コピー要求がそのインプリメントでは困難であり、非常に遅いことを知りました。
私たちのLinear Lisp マシンは、単一参照がカウントデータ構造であるWakelingのマシンより効率的にインプリメントし、従来の連結/グラフリダクションマシンのインプリメントより「競争力があります。」
0041nanashi
2006/07/23(日) 16:11:060042nanashi
2006/07/23(日) 18:50:30A Linear Lisp Machine
このセクションの中で、私たちは、全てのconsセルが
ちょうど1の参照カウントを持っているLisp Machine の
オートマトン理論モデル(それはデータ構造がすべて木であることを暗示する)
を導入します――なぜなら、それらは共有またはサイクルを持っていません。例えば、私たちの線形のリスプでは、NREVERSEはREVERSEに同形です。
私たちの機械は、consセルにアトムかポインターのいずれかを固定することができる有限状態コントロールおよびnポインターレジスタから成ります。
アトムはNILかシンボルのいずれかです。
レジスタの1つ(fr)は、「free list」レジスタとして区別されて、NILの無限のリストを示すために初期化されます。
別のレジスタ(sp)は「スタックポインタ」レジスタとして指定されます。
0043nanashi
2006/07/23(日) 18:51:20r1<->r2;/* swap r1,r2. */
r1<->CAR(r2);/* r1,r2 distinct; precondition(not ATOM(r2)) */
r1<->CDR(r2);/* r1,r2 distinct; precondition(not ATOM(r2)) */
NULL(r1);/* predicate for r1=NIL */
ATOM(r1);/* predicate for r1=NIL or symbolp(r1) */
EQ(r1,r2);/* defined only for atomic r1,r2; see [Baker93ER] */
r1:='foo;/* precondition(ATOM(r1) and ATOM('foo)) constant 'foo */
r1:=r2;/* precondition(ATOM(r1) and ATOM(r2)) */
CONS(r1,r2):/* r1,r2 distinct; r2<-CONS(r1,r2) and set r1=NIL */
{r1<->CAR(fr); r2<->fr; fr<->CDR(r2);};
PUSH(r1,r2):/* r1,r2 distinct; Push r1 onto r2 and set r1=NIL */
CONS(r1,r2);
POP(r1,r2):/* r1,r2 distinct; Pop CAR(r2) into r1 if r1=NIL */
if NULL(r1) and not ATOM(r2)
then {fr<->CDR(r2); r2<->fr; r1<->CAR(fr);}
else die;
この文献を掘り下げる価値はあるのだろうか…
0044デフォルトの名無しさん
2006/07/23(日) 22:17:012ページに渡って載ってた。参考文献は>35のもの。
0045nanashi
2006/07/24(月) 09:42:07単一のセルをふたつ以上のポインタが決して指さないように評価機を構成することであり、
プログラム自身がどう表現されているかはとは関係ない模様です。orz
0046nanashi
2006/07/24(月) 18:52:21参照を1回に制限することで「GCを不要にしている」Lisp処理系としては、newlispというものがある。
http://www.newlisp.org/
メモリ管理の詳細↓
http://newlisp.org/MemoryManagement.html
0047デフォルトの名無しさん
2006/07/24(月) 22:56:16手助けできそうにないが、がんがれ
0048デフォルトの名無しさん
2006/07/25(火) 00:17:24速いScheme評価器実装の助けにはならないんじゃないかと
28の文献は「解の探索問題」を遺伝的プログラミングで解こうとしている.
「解の探索」はマシンが多いほど早く解けるので,
クラスタを使って並列でやろうという話になった.
クラスタでやるとマシン間の通信がネックになるし,
このケースだと↓のような問題もある.
マシンが持っている式(遺伝子)をツリーで表現したとすると
通信の前後でシリアライズ・デシリアライズみたいなのが
必要になってオーバヘッドが大きくなる.
そこで,式をツリーでは無く「配列+スタックカウント」で
表現するようにして,なるべく簡単に送受信できるようにした.
0049nanashi
2006/07/25(火) 11:25:47LinearGPシステムの構築と評価
http://www.miv.t.u-tokyo.ac.jp/ibalab/papers/98/tokui98.pdf
は通信とか並列化とか関係なくやってるようです。
どう思います?
0050nanashi
2006/07/25(火) 18:27:06http://d.hatena.ne.jp/ufo23/
さらします。
荒らさないでください。
0051デフォルトの名無しさん
2006/07/25(火) 23:42:03確かに,通信とか関係なく効率よくなってます.
でも>>49にしても>>28にしても,成果は
遺伝的プログラミングの計算が速くできた,ということで
速いScheme評価器を作るのとは別の話では
>>1が作りたいのは,汎用のSchemeじゃなくて,
遺伝的プログラミングの解法に特化したScheme
ということですか?
Schemeを間にはさむ意味がちょっとわからないです
0052デフォルトの名無しさん
2006/07/26(水) 04:04:29評価されるコードの部分はバイトコードに落として、そも配列としてアクセスできるので意味ないし
関数listが生成するリストを>>1の方式に差し替えるくらいなら、ユーザー側でvector使うだろうし
>>1はどの部分の高速化に使えると考えてるわけよ?その辺がさっぱりわからん
0053nanashi
2006/07/26(水) 10:38:48> でも>>49にしても>>28にしても,成果は
> 遺伝的プログラミングの計算が速くできた,ということで
> 速いScheme評価器を作るのとは別の話では
なるほど、実はそれに気がついて
同じような疑問を自分でもなんとなくですが抱いていました。
> >>1が作りたいのは,汎用のSchemeじゃなくて,
> 遺伝的プログラミングの解法に特化したScheme
> ということですか?
> Schemeを間にはさむ意味がちょっとわからないです
そうすると「遺伝的プログラミングの解法に特化したScheme」に必然的になってしまいます。
0054nanashi
2006/07/26(水) 10:39:51> 関数listが生成するリストを>>1の方式に差し替えるくらいなら、ユーザー側でvector使うだろうし
> >>1はどの部分の高速化に使えると考えてるわけよ?その辺がさっぱりわからん
ユーザー側でvector使うと言う手が確かにありますね。
思い当たりませんでした(汗
どの部分の高速化をするのかと言うと、
遺伝的プログラミング組んだ場合の
個体の評価プロセスの高速化ということになります。
結局、schemeそのものの高速化にはならない気がしてきました。
この方法は遺伝的プログラミングの高速化にしかならないですね。
そうすると、最初の発想の時点で外していたことになってしまいますね。
なんか、だめぽ...orz
でも「遺伝的プログラミングの解法に特化したScheme」という手があるか?
いや、あまりメリットがなさそうな気もする…
0055デフォルトの名無しさん
2006/07/26(水) 23:11:03gcさけて高速かするためにリスト以外の型がある。
0056nanashi
2006/07/27(木) 11:11:35GC避ける方法は
>>46
に書かれていそうですが、
その本なら日本語で読めるってことでしょうか?
0057nanashi
2006/07/27(木) 14:56:49む、なんか勘違いかも…
schemeにその型はなさそうです。
>>46の new lisp もそうやって居るのかもしれないですけど、
そっちの翻訳、保留にしてしまったので不明です。
0058nanashi
2006/07/27(木) 21:03:09どうやら、その構想には欠陥があると感じてます。
そこで、方針を変えて、GPのサンプルをschemeで実装してから、
速度に問題があるならschemeの実装そのものを見直すとか
C++でGP実装するとかしたいと思います。
0059nanashi
2006/07/27(木) 21:22:54正確には「GPを速くすることが出来ると思った」ではなく
「GPを速くする方法でschemeを速くすることが出来ると思った」ですね。
0060nanashi
2006/07/27(木) 21:24:26http://mikilab.doshisha.ac.jp/dia/research/report/2004/0802/002/report20040802002.html
だいたい、これを基準にGPを実装しようと考えています。
0061nanashi
2006/07/27(木) 21:29:34目標にしたいと思います。
例:(a b c)を(c d e f)に変換するS式を求める。
これは、人工無脳の対話に応用できるかもしれないと思ったからです。
0062nanashi
2006/07/27(木) 21:31:030063nanashi
2006/07/27(木) 21:33:04(use math.mt-random)
(define mt (make <mersenne-twister> :seed (sys-time)))
(define (non-terminal)
(let ((rdm (mt-random-integer mt 8) ))
(cond ((eq? rdm 0) 'car)
((eq? rdm 1) 'cdr)
((eq? rdm 2) 'cons)
((eq? rdm 3) 'quote)
((eq? rdm 4) 'define)
((eq? rdm 5) 'if)
((eq? rdm 6) 'eq?)
((eq? rdm 7) 'list?)
(else '()))))
0064nanashi
2006/07/27(木) 21:35:54(use math.mt-random)
(define mt (make <mersenne-twister> :seed (sys-time)))
(define (terminal)
(let ((rdm (mt-random-integer mt 26) ))
(cond ((eq? rdm 0) 'a)
((eq? rdm 1) 'b)
((eq? rdm 2) 'c)
((eq? rdm 3) 'd)
((eq? rdm 4) 'e)
((eq? rdm 5) 'f)
((eq? rdm 6) 'g)
((eq? rdm 7) 'h)
((eq? rdm 8) 'i)
((eq? rdm 9) 'j)
((eq? rdm 10) 'k)
((eq? rdm 11) 'l)
((eq? rdm 12) 'm)
0065nanashi
2006/07/27(木) 21:36:39((eq? rdm 13) 'n)
((eq? rdm 14) 'o)
((eq? rdm 15) 'p)
((eq? rdm 16) 'q)
((eq? rdm 17) 'r)
((eq? rdm 18) 's)
((eq? rdm 19) 't)
((eq? rdm 20) 'u)
((eq? rdm 21) 'v)
((eq? rdm 22) 'w)
((eq? rdm 23) 'x)
((eq? rdm 24) 'y)
((eq? rdm 25) 'z)
(else '()))))
冗長かも、ループ使って短く出来そうな…
0066デフォルトの名無しさん
2006/07/27(木) 21:39:13動的型付けに関してはどう考えているのかね。
0067デフォルトの名無しさん
2006/07/27(木) 21:44:310068デフォルトの名無しさん
2006/07/27(木) 22:56:20すげー高度な話?
0069nanashi
2006/07/28(金) 10:03:58(だれか、と言っているのに自分で書いてどうする…)
0070nanashi
2006/07/29(土) 08:41:32今回、GPでやろうとしていることはテストであって自然言語処理ではない。
あるリストを別のリスト、さらに次のリストという風に変換する
プログラムを作るプログラムのを実装する。
今は文字列ではなくa〜zのリストと言うことになっているが、
ゆくゆくは自然言語処理も可能かもしれない。
という事をやろうとしてます。
0071nanashi
2006/07/29(土) 11:28:48進化的手法の代表例でるGPは現在盛んに研究されいます。
GPを自然言語処理に応用するための基礎技術として
「任意のリスト(アルファベット小文字1文字のみのリスト)から、
解となるリスト(アルファベット小文字1文字のみのリスト)を
出力するプログラム」
を実現するプログラムをGPで実現させようとしています。
このとき、GPも、それで作成されるプログラムも使用する言語に
schemeを選択しました。
ある数列から、解となる別の数列を作るでもいいかもしれません。
単純だけど対話プログラムに発展できる可能性があるかも。
0072nanashi
2006/07/29(土) 11:30:50* 解くべき問題の例としては、リスト'(a b c)を
リスト'(d e f g)に変換するプログラムを求めます。
* 自然言語処理を例とするなら、「自然 は 大切だ」を
「科学 は 人類 の 英知だ」に変換するためのプログラムを
遺伝的プログラムで生成することになります。
この文章「自然は大切だ」は要素別に並べると
「自然」「は」「大切だ」となり、
これはリストで表現できます。
つまりLispでは'(自然 は 大切だ)になります。
だいたい、趣旨は伝わったでしょうか?
0073デフォルトの名無しさん
2006/07/29(土) 11:45:51インターフェースはcons/car/cdrのまま、
って実装は昔から良く実装報告があるよ。
信学技報にも探せばあると思う。
0074デフォルトの名無しさん
2006/07/29(土) 15:59:43Lisp系の言語はデータをListとして持ってて各要素は
element{
pointer data;
pointer nextElement;
}
みたいな構造体になっているんだけど、各要素を処理して、
次のnextElementにいくときのポインタ操作がコストが掛かる
data[];
みたいな配列にしてしまえば次の要素移動するには、
アドレスをインクリメントするだけだから早いんだぜ!
って話だと思ったんだけどどうよ?
0075デフォルトの名無しさん
2006/07/29(土) 16:06:120076デフォルトの名無しさん
2006/07/29(土) 16:18:130078デフォルトの名無しさん
2006/07/29(土) 17:00:230079nanashi
2006/07/29(土) 17:40:34少々冷たい物言いにカチンと来たのかもしれませんが
そんなことで騙り扱いするのはやめてください。
解らないことを勉強するのは当然のことですから。
0081hoge ◆MvRbZL6NeQ
2006/07/29(土) 18:01:46値が表示されます。#の後の文字列を知らない限りこれと同じ値を作るのは難しいので、
なりすましを防止できます。
0082hoge ◆MvRbZL6NeQ
2006/07/29(土) 18:02:58そういえばなんでトリップっていうんだろうね。
0083nanashi ◆XQNqqmrLFw
2006/07/29(土) 18:14:380084nanashi ◆XQNqqmrLFw
2006/07/29(土) 18:21:19途中から趣旨が「速いschemeを作る」から
「schemeでGPを動かして、遅かったら速いschemeを作るなりCかC++でGPを実装する」
に変わりました。
すいませんm(_ _m
>>76さん
最近のGPの動向ではC++で作るようです。
なぜschemeかはschemeの勉強もかねているからです。
とりあえず、今日やってみたことを日記に書いたのでリンク張っておきます
http://d.hatena.ne.jp/ufo23/20060729
(これって販促ですか?>日記にリンク)
0085nanashi ◆XQNqqmrLFw
2006/07/29(土) 18:24:00s/販促/反則
だったorz
0086nanashi ◆XQNqqmrLFw
2006/07/29(土) 20:52:20当初は>>74さんの言うとおりの目論見でした。
だけど、スレッドの>>53 >>54で破綻してます。
…スレッド立て直したほうがいいですか?
0087デフォルトの名無しさん
2006/07/29(土) 21:14:44schemeって本ものの配列は無いんだっけ??
0088デフォルトの名無しさん
2006/07/29(土) 21:16:210089デフォルトの名無しさん
2006/07/29(土) 21:20:00アホの子>1は。
0090デフォルトの名無しさん
2006/07/29(土) 21:27:43つか、GAのスレどこいったんだぜ?
0091nanashi ◆XQNqqmrLFw
2006/07/29(土) 21:47:22というか、放置すれば自動でdat落ち?
0092デフォルトの名無しさん
2006/07/29(土) 22:10:220093デフォルトの名無しさん
2006/07/30(日) 06:18:460094デフォルトの名無しさん
2006/07/30(日) 06:20:08http://science4.2ch.net/test/read.cgi/sim/1027647042/
これ
0095デフォルトの名無しさん
2006/07/30(日) 07:20:11なんだろね、君がスキルのかけらもない人間なのが
それだけの文面でわかっちゃうよw
0096デフォルトの名無しさん
2006/07/30(日) 10:42:36お前の文面では
お前は生きる価値も無い人間だというのがわかっちゃうけどなw
0097デフォルトの名無しさん
2006/07/30(日) 11:21:08さようなら
0098デフォルトの名無しさん
2006/07/30(日) 11:48:230099デフォルトの名無しさん
2006/07/30(日) 11:55:46何にせよ動いた奴>>>何にもしない奴
1はがんばれ!
0100デフォルトの名無しさん
2006/07/30(日) 12:21:380101デフォルトの名無しさん
2006/07/30(日) 17:46:08迷走ぶりがひどいなw
0102デフォルトの名無しさん
2006/07/30(日) 18:06:020103デフォルトの名無しさん
2006/07/30(日) 19:07:250104sage
2006/07/30(日) 20:01:420105デフォルトの名無しさん
2006/07/30(日) 20:56:25オマエモナー
0106デフォルトの名無しさん
2006/07/30(日) 21:08:560107デフォルトの名無しさん
2006/07/30(日) 21:31:410108デフォルトの名無しさん
2006/07/30(日) 23:24:06意味が分からなかったからドキドキして読んでたんだけど、
>>74が簡潔にCでやりたい事を説明した途端、たいした事無いと分かって大荒れ
って感じだろうな。
0109デフォルトの名無しさん
2006/07/31(月) 05:58:50一手間かかって遅くなるわな。
可変長データになって、GCも手間がかかる。
Lisp machineはマイクロコードで、条件分岐できるから、
cdr encodingを採用したヤツが多かった。
0110デフォルトの名無しさん
2006/07/31(月) 09:35:51結局一番速い気がする…今だとどうだろねぇ
0111nanashi ◆XQNqqmrLFw
2006/07/31(月) 11:16:45今日チェックしてみてまだ、書き込みがあったので驚き。
なんか、みなさんありがとうございます。
でも続きは
>>94さんの言っていた
GP(遺伝的プログラミング)ってどうよ!
http://science4.2ch.net/test/read.cgi/sim/1027647042/
に書いたほうがいいと思っています。
>>92さんの逆鱗に触れてしまったことは謝らないといけません
ただ、なぜそんなに怒っているのか、さっぱり判りません
できれば、だれもを納得させる反論されない理由を
書いていただけませんか?
(それとも、このように>>92さんを相手にするのは私が
2ch初心者だからであって、本来は放置するものなのでしょうか?)
0112デフォルトの名無しさん
2006/07/31(月) 22:22:270113デフォルトの名無しさん
2006/08/01(火) 07:29:060114デフォルトの名無しさん
2006/08/01(火) 09:24:02長文の書き手がみんなムカついてるように見えるっていうしな
0115nanashi ◆XQNqqmrLFw
2006/08/01(火) 09:38:14書いた後、放置すればよかったと後悔した…
0116デフォルトの名無しさん
2006/08/01(火) 21:35:280117デフォルトの名無しさん
2006/08/02(水) 00:37:430118デフォルトの名無しさん
2006/08/02(水) 08:45:45もうこのスレ終わったっつーの。何を最後までやるんだよ。
0119デフォルトの名無しさん
2006/08/02(水) 11:00:19もう少し「多人数のふり」を頑張らないとピエロでしかないです(^_^;
0120デフォルトの名無しさん
2006/08/02(水) 11:05:520121デフォルトの名無しさん
2006/08/02(水) 11:06:400122デフォルトの名無しさん
2006/08/02(水) 21:11:070124デフォルトの名無しさん
2006/08/04(金) 08:07:060125デフォルトの名無しさん
2006/08/16(水) 22:46:59ただの関数や制御構造程度ならCにならってGCレスで作れそうだけど、
クロージャの管理はGCないと無理だよね?
0126デフォルトの名無しさん
2006/08/16(水) 22:54:040127デフォルトの名無しさん
2006/08/16(水) 23:00:290128デフォルトの名無しさん
2006/08/17(木) 00:20:320129デフォルトの名無しさん
2006/08/17(木) 00:41:47>>1が議論を放棄したから、ここはもう終わったスレなのだ。
0130デフォルトの名無しさん
2006/09/23(土) 15:40:43vectorとかArrayListみたいな動的配列を使ってリストを表現しようということなのかな?
それはありだと
0131デフォルトの名無しさん
2006/09/24(日) 00:22:59>>1が議論を放棄したから、ここはもう終わったスレなのだ。
0132デフォルトの名無しさん
2006/10/11(水) 07:20:36scheme最高!
0133デフォルトの名無しさん
2006/10/11(水) 07:36:00「プログラミング言語SCHEME」読んでます
0134デフォルトの名無しさん
2006/10/13(金) 19:38:360135デフォルトの名無しさん
2006/10/31(火) 04:24:56/ / }
_/ノ.. /、
/ < }
ry、 {k_ _/`;, ノノ パンパン
/ / } ;' `i、
_/ノ../、 _/ 入/ / `ヽ, ノノ
/ r;ァ }''i" ̄.  ̄r'_ノ"'ヽ.i ) ―☆
{k_ _/,,.' ;. :. l、 ノ
\ ` 、 ,i. .:, :, ' / / \
,;ゝr;,;_二∠r;,_ェ=-ー'" r,_,/ ☆
0136デフォルトの名無しさん
2007/04/15(日) 02:52:310137デフォルトの名無しさん
2007/04/15(日) 03:01:320138デフォルトの名無しさん
2007/04/20(金) 18:44:58gosh> (info 'cons)
*** ERROR: Compile Error: malformed with-signal-handlers (with-signal-handlers ((SIGPIPE => #f)) (guard (e (else #f)) (display s (process-input p))) (close-output-port (process-input p)) (process-wait p))
"/usr/local/share/gauche/0.8.10/lib/gauche/interactive/info.scm":55:(define viewer (if (or (equal? (sys- ...
0139デフォルトの名無しさん
2007/08/30(木) 05:41:46_r:/. :, : . `、 . :、 : ヽ-、____
, ‐'ニ-/. :,' : ハ:.:.:..:..丶:..:.ヽ:. Y´ ̄`ヾ丶、
//´ ,'..:.:.!.:,:i 、\:.:.ヽゝ、:.',:.:.! `、:.i
{..:.;′ i.:.;.::レハ_,. - ヽハLj_ヽi:. | j.:|
. !:.:i |:.:;.:.{ '´ ' j:. | l:.j
ヾ`、 ノ;ィ、:.、゙'⌒` , ´⌒"ィゝ! ノ;ノ
\ 丶.j ''' r=、 ''' ,'_,ノ` -‐'¨´
\_ ` ‐' ,イ ほーらマンコだよ♪
,、、、‐ 、 j::i` ‐-‐'「.::| , ‐,、、、
,、(、‐、 )、__) -rrく¨´′ ゝァーr- 、(__, (, ‐, )
{,,、‐-、 )\\~''''''‐--`―'‐'' ,´/ ,、‐';ー( , ヾ、ヽ
{__,,、‐' | i ヽ`、`ー‐--,,、-=='-‐‐‐<_r''' |、`t' ノ|っヾ、
`ー/ | `、 {''''。''~::: :: 。 ::| ノヽ i_,',r'ミ. |
/ i 人 ...ノ 丶.. ..ノ :i i | i. | ヽヽ |
/ ! / ,i :i i |iヽ| /
i iノ ,' / :i ' | |ヽ|; /
i ー''´ :,' / i ! | | |ヽ'
i / / ' } i | |\
| ./ i i ./ i i ヽ
| / i' 、 :: , 'i / | :| \
/| / i ヽ災ノ |' / i \
/ ノ / i: | ::| |:: l / |ヽ }
/ / / i. | ::|. |:: | ノ | ヽ /
■ このスレッドは過去ログ倉庫に格納されています