1 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:37:08.66 ] Common Lisp、SchemeをはじめとするLisp族全般のスレです ■前スレ Lisp Scheme Part33 toro.2ch.net/test/read.cgi/tech/1318150738/ ■テンプレ wiki.fdiary.net/lisp/ ■関連スレ 【入門】Common Lisp その8【質問よろず】 hibari.2ch.net/test/read.cgi/tech/1309940115/
175 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 20:18:25.14 ] | 〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜 >( c´_ゝ`) | | >( c´_ゝ`) J >( c´_ゝ`) | 〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜 | >( c´,_ゝ`) | J >( c´,_ゝ`) >( c´,_ゝ`)
176 名前:デフォルトの名無しさん [2012/03/08(木) 21:29:15.66 ] Haskellならではの便利なプログラム手法とか教えてくれないか? 当方Scheme使ってるが。
177 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 21:55:54.71 ] 「う〜〜Haskell Haskell」 今Haskellならではの便利プログラムを求めて全力疾走している僕は 予備校に通う ごく一般的な男の子 強いて違うところをあげるとすれば Schemeを使ってるってとこかナー 名前は道下正樹
178 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 21:58:07.33 ] やめないか
179 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:50:06.22 ] λアッー!!
180 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 23:10:20.44 ] Λーッ!!
181 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 04:07:33.35 ] Haskell使っているだけで 自分は優れているなどと勘違いしてそう
182 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 04:08:38.79 ] Haskellは型安全で爆速だお
183 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 04:44:31.02 ] でも、実際使ったら彼女はできるし
184 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 09:21:33.35 ] >>176 packratパーザ
185 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 09:41:50.75 ] 関数言語信者って選民思想の人多すぎだよね Lips界隈でもポール・グレハムとかさ
186 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 09:51:12.60 ] でも実際、PHPとかJavaとか使っていたら その時点で雑魚確定だろ
187 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 09:57:47.96 ] 使っている言語でプログラマの能力をを判断すべきじゃないよ
188 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:02:11.32 ] >>186 何故?
189 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:28:31.63 ] 関数型言語の信者は中二ってことでいいけどさ、 俺が分からないからお前も分かっちゃ駄目ってのは日教組強すぎだろ
190 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:37:28.69 ] 選民思想というより、言語の選定を真面目にしない人を馬鹿にするって感じだと思うよ。 Javaとか使ってても、きっちり技術的な観点からバランス感覚のある選択をしてれば、 無意味に馬鹿にされたりはしない。
191 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:46:00.40 ] Clojure使ってるんでJavaのコードも書くよ。
192 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:50:38.83 ] プロジェクトならJava使うほうが、lispなどの関数型言語使うより いい利点たくさん挙げられるけど
193 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:55:07.67 ] >>184 packrat parserは言語に依存する技術じゃないと思う。 Haskell以外の言語での実装も溢れてるし。
194 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 10:56:35.64 ] だけど、遅延評価使ってエレガントに書けるじゃん
195 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:03:11.45 ] そういう話なら、遅延評価を前提にしたコードが書けるのがHaskellならではなのであって、 流石に語弊あり過ぎ。 あと、Haskellならではでもないというか、Cleanでも同じことできないか?
196 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:09:38.02 ] MirandaでもCleanでもなくてHaskellならでは、って条件は流石に厳しくないか?
197 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:13:19.83 ] 遅延評価なんて大昔から知られていた手法なのに なんで一般の言語で使われないのか? Haskell布教者の主張するような利点だけじゃなくて 欠点も多いからだろ
198 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:13:41.50 ] Miranda, Cleanは演算子ユーザ定義が無理じゃなかったかな。
199 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:14:28.71 ] >>197 一応、遅延評価デザインパターンってのはあります。 言語が直接サポートするのが少ないだけで。
200 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:19:22.62 ] >>199 それは分かるけどさ、言語が直接サポートしないのが一般的なのは 遅延評価と普通の評価のトレードオフを考えた上だろ
201 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:29:37.02 ] >>197 の主張はたとえばガベージコレクションにもそのままあてはまるよな。 Java が流行ったとたん、パッタリと消えたタイプのw
202 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:31:03.42 ] >>196 それは確かにそうかもしれない。ちょっと過敏な反応だったようで申し訳ない。 最近、何かにつけてHaskellが引き合いに出されることが多くて、ささくれだってたみたいだ。
203 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:32:29.66 ] >>200 そもそも遅延評価という選択肢を考慮すらせずに設計された言語も多いんじゃない
204 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:41:13.17 ] >>203 言語設計者がそんなに馬鹿な連中だとは思わないけど 遅延評価なんて大学で情報関係の教育を受けた人間なら知ってることだろ
205 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:41:36.45 ] >>201 遅延評価がこれから流行る可能性はゼロだけど
206 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 11:51:13.09 ] ほら、こういう風に図に乗る奴がすぐ出てくるんだよ
207 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:05:46.45 ] >>204 今どきの、情報教育ならね。 今現在主流の言語はほとんど、二世代三世代前の連中が設計したものがベースってことを忘れちゃいかんよ。
208 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:08:35.04 ] JavaとRubyは? それ以外の新しい言語でも遅延評価は採用されてない 欠点も大きいからね
209 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:12:20.41 ] いつまでスレタイも見ずに暴れるつもりだこのバカ?
210 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:15:27.59 ] だったらスルーしろよ
211 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:18:42.10 ] その「だったら」がよくわからない
212 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:19:03.04 ] 新しい言語で遅延評価が採用されてないって、ガチで言ってるならお前は帰れw
213 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:22:26.05 ] >>208 欠点があることは誰も否定してない。 が、採用言語が少ないことは、欠点だけが理由じゃなく、考慮されないことが多かったからって話をしている。 もちろんJavaが先行評価なのは歴史的経緯なんだろうし、RubyについてはMatz本人に聞かないと分からんけど そういう個々の話をしてるわけじゃないだろ...
214 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:39:08.44 ] >>213 欠点が理由だよ 考慮されないのは欠点が大きすぎるから
215 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:46:30.09 ] toro.2ch.net/test/read.cgi/tech/1330429547/l50 おら、ここで存分にやれや。 まずはおまえの脳内で断定して断言するだけじゃなくて、 計算機科学的な理由をちゃんと挙げるところからなw
216 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:47:17.51 ] 断定して断言 こういう微妙な悪文に気がつかない人って頭悪そう
217 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:53:24.24 ] 欠点が欠点が、と喚くだけで、全く科学的定量的根拠が出せない奴もな
218 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:54:29.56 ] Common Lispでherokuらしい。 ja.reddit.com/r/lisp/comments/qnv47/common_lisp_on_heroku/ Schemeでこういうのないの?
219 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:55:24.51 ] sicpから (define (gcd a b) (if (= b 0) a (gcd b (remainder a b)))) この関数を(gcd 206 40)で実行する 遅延評価と普通の評価でそれぞれ何回remainderを呼び出すのか? 答えは、遅延評価だと18回、普通の評価だと4回 遅延評価にどれだけ欠点があるのかよく示している例
220 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:56:37.21 ] >>219 問題はExercise 1.20 ぐぐれば問題も答えも出てくる 英語だけど
221 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 12:57:11.72 ] >>214 遅延評価に考慮すらされないほどの欠点があるの? どんな? 最近の情報工学を学んだ人間なら、遅延評価は普通に考慮に入れると思うけど それほどの欠点があるとは知らなかったよ
222 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 13:00:59.99 ] マクロなんて大昔から知られていた手法なのに なんで一般の言語で使われないのか? S式なんて大昔から知られていた手法なのに なんで一般の言語で使われないのか? Lisp布教者の主張するような利点だけじゃなくて 欠点も多いからだろ
223 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 13:11:09.37 ] マクロは使われてる。S式じゃないとそれほど便利じゃないけど。 S式が一般の言語で使われないのは、S式を使いたいやつは皆Lispを使うから。 Lispに欠点が多いのは事実だけど、 マクロやS式が普及しないのは欠点とかそういう次元の話じゃない。
224 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 13:21:47.40 ] Lisp人口=S式使いたい人数か 少ないな
225 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 13:27:21.21 ] >>224 データ構造の表現だけなら、JSONやXMLみたいな もう少し便利な品があるからね
226 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 13:54:08.21 ] エディタのサポートがないと書きづらい事も普及を妨げていたと思う。 最近は他にもそういう言語あるけど。
227 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 14:18:24.16 ] 世間のビジネスの殆どは単純な事務処理だから、マクロやS式無しでも出来るだけの事。
228 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 14:29:38.38 ] 単純な事務処理以外の分野でも 殆ど使われてないのだが
229 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/09(金) 14:33:07.71 ] >>223 > S式が一般の言語で使われない S式が使われた言語は LISP と呼ばれてしまうので LISP でないS式言語が存在し難いんだと思う。
230 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 14:35:59.17 ] >>229 汎用の言語でLispと言ったらCommonLispとSchemeとClojureくらいしか知らないんだが
231 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 14:45:25.16 ] そこに収斂するまでどれだけの血と汗と紆余曲折があったと思ってんだ!!
232 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:02:28.87 ] >>231 汗はなんとなく分かるけど、血と紆余曲折の具体的事例が思い浮かばない
233 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:07:20.62 ] Lispの方言の数を舐めるなよ。
234 名前:デフォルトの名無しさん [2012/03/09(金) 15:11:04.31 ] Cygwin-1.7.8でGuile-2.0.5のビルドが通らない。libffiのテストが通らない。
235 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:21:07.33 ] Allegro Common Lisp (ACL) の試用版を使っています (list "*" '(2 3 4) '(a b) "!" '(8 9 0)) こういう文字列とリストからなるリストをもとに *2a!8 *2a!9 *2a!0 *2b!8 *2b!9 *2b!0 *3a!8 ... と続くものを出力したいです(文字列とリストは0回以上ランダムに表れます) リストについては命令型言語でいうところの for (...) for (...) のような処理をすることになりそうですが どこから手をつければよいかわかりません おそらくmapcarを使ってリストを作り直す必要があります? どうすればよいですか
236 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:28:42.47 ] ここschemeスレなんだけど
237 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:30:48.13 ] じゃschemeではどうやるか教えてください。
238 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:33:18.46 ] 頑張れば書けるだろ
239 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/09(金) 15:33:25.27 ] >>235 Common Lisp の闇である loop と format が大活躍する場面だな!!
240 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:44:11.86 ] Lisp族の総合スレだろ。
241 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/09(金) 15:50:15.41 ] >>235 >>237 こんな感じかな。 (define (power-display lst) (let loop ((acc '()) (next lst)) (cond ((null? next) (for-each display (reverse acc)) (newline)) ((list? (car next)) (for-each (lambda(x) (loop (cons x acc) (cdr next))) (car next))) (else (loop (cons (car next) acc) (cdr next)))))) (power-display (list "*" '(2 3 4) '(a b) "!" '(8 9 0)))
242 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 15:51:56.19 ] とりあえずloop系のゴリ押しか、再帰で書けそうだけど、 リスト処理だからmap系の上手い手がありそうな気がするな。
243 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:06:21.13 ] プログラム書いてくれるプログラムまだー
244 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 16:47:03.23 ] コンピュータが人間に合わせてくれるのではなく、コンピュータに合わせて人間の頭を 作り変えろ、というのがLISPの思想。
245 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 17:12:13.22 ] 1960年代ではその考えは間違い。
246 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 19:01:04.41 ] lispのコードが読みやすいのはコード量が少なくなるから 少なくなる要因は1つの行に複数の関数を押し込めるから 同様のことは、オブジェクト指向のチェーンメソッドでやっている プログラマの目の動きを考えたとき、その視点は左から右、上から下に動くのが普通。 だから、チェーンメソッドはポーランド記法よりも理にかなっている。 けれども、チェーンメソッドである以上はオブジェクトでなければならない。 行数を短くし、1行に複数の関数を押し込めて自然な流れで読むためには、 逆ポーランド記法が理にかなっているといえる
247 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 19:28:34.82 ] >lispのコードが読みやすい 要出典
248 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 19:32:02.72 ] よって、逆ポーランド記法で書けるschemeが最も自然な流れで読めるという結論に至ったわけだが
249 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 19:34:38.31 ] >>247 慣れの問題なだけだからなー XMLのタグよりよっぽど楽だし、構文の覚えやすさならLispの右に出るのってFrothくらいじゃないのか?
250 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 19:37:59.63 ] 一語ずつ順番に読むならそうかもしれんが いくつか語句を先読みしてまとめて解釈するからな 逆ポーランド記法が読みやすいなら数学なんかもそうなっているだろうし
251 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 20:05:04.34 ] (set! bar (fn1 (fn2 (fn3 (fn4 "foo"))))) <- "foo"まで読んでから視点が折り返し bar = fn1(fn2(fn3(fn4("foo"))) <- 上に同じ bar = "foo".fn4.fn3.fn2.fn1 <- 左から右へ一発。オブジェクトでないとダメ "foo" fn4 fn3 fn2 fn1 bar! <- プリミティブな型から自然に変換できる! vimのマクロがforthで書かれていたなら、エディタ戦争はまだまだ続いていたと思うね
252 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 20:06:55.12 ] >>248 schemeって逆ポーランド記法なの? 1 2 + みたいな記述するん?
253 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 20:19:34.65 ] だからさー、Lispでうまく分業できる方法確立したら、 世界制覇、いや銀河を制覇出来るって何度言ったら… 初めてでした。調子乗ってすみません。
254 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 21:45:16.32 ] 引数と関数のチェーンって逆の方向に伸びるから 逆ポーランドだと引数が不恰好になるよ あとリストのcarが関数の名前だとほんの少しだけマシンにやさしい
255 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 22:50:31.97 ] ちょっと何言ってるかわからないですね
256 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 23:30:53.68 ] >>255 そっか、わかりづらくてごめん でもほんとにたいした内容じゃないからスルーして
257 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 01:05:41.88 ] >>252 逆ポーランド記法な scheme があったら、って話だと思う つまり、 (5 (3 4 +) *) こういうことだよね? 案外いいかもしれない さらに Forth のように + や * が関数だと分かってると、上のは 5 3 4 + * って書けるだろうけど シンボル a, b, c, d に関数や数値が束縛されているとき a b c d はどこが引数でどこが関数なのか、普通の人間には理解できないかもしれん… メソッドチェーンは上手く表現できるんだろうけど、こんな表現を使いこなせるのは、なるほど Jedi だな さらにもし多値を返せて、それがスタックに複数の値として残ったりなんてしたら、とてもとても…
258 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 01:06:49.20 ] >>241 ありがとうございます
259 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 02:06:16.88 ] >>257 その書き方だとマクロが悲惨なことにならない? (((a 0)) ('foo 'bar (a 1 <) if) let)
260 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 02:17:06.93 ] 確かに… マクロとの相性最悪ですね だから Forth は、Lisp的なマクロじゃないんだろうな 改めてS式万能だなぁ。まさしく、Lispは「発見」されたんですね
261 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 03:02:24.24 ] 映画コンタクトで解読できたのは巨大な括弧だった
262 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 03:06:15.29 ] >>258 時既に遅かったっぽいけど、自分も書いてみた。 >>241 のCommon Lisp版も付けたので出遅れたのは見逃して欲しい。 paste.lisp.org/display/128244
263 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 05:39:21.55 ] >>259-260 マクロと相性が悪いというよりツリーと相性が悪いのでは? LispはツリーであるS式が基本なので 逆ポーランド記法は採用できないと思います。 線形リスト: ポーランド記法でまあまあ読みやすい。 逆ポーランド記法でとても読みやすい。 ツリー: ポーランド記法でだいぶ読みにくい。インデントで改善できる。 逆ポーランド記法でかなり読みにくい。 グラフ: ポーランド記法でとても読みにくい。 逆ポーランド記法でとても読みにくい。
264 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 07:51:38.54 ] 言いたいことは分かる気がするけど「だいぶ」と「とても」と「かなり」の順序が分からん あと上のLispと関係ないフレーム合戦でみんな申し合わせたようにPerl6を黙殺してて泣ける
265 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 09:46:03.03 ] >>263 グラフ同士でも読みやすさに差があるからこうですね。 <<読みやすさランキング>> 線形リスト + 逆ポーランド記法 ---- 壁0. 実行順の壁 ---- 線形リスト + ポーランド記法 ---- 壁1. 一直線の壁 ---- ========<< 越えられない壁 >>======== ツリー + ポーランド記法 ---- 壁2. 概要から詳細への壁 ---- ツリー + 逆ポーランド記法 ---- 壁3. 階層構造の壁 ---- ========<< 越えられない壁 >>======== グラフ + 逆ポーランド記法 ---- 壁4. 実行順の壁 ---- グラフ + ポーランド記法
266 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 10:52:36.29 ] グラフって何の話? あと、完全に後置にさせると Forth とかでも悲惨になる。 THEN FOO @ ELSE BAR @ COND 1 2 + 3 4 + < IF Lisp系言語で最初の要素がオペレータになっているのは、 compile の前に macro expansion があるから。 macro expansion のためには完全に前置か完全に後置かにしないと都合が悪い。 FORTHで完全な後置にしなくて良いのは immediate word があるから。
267 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 14:23:45.93 ] >>262 >エターナルフォースnreverseすると死ぬ これは一体…
268 名前:デフォルトの名無しさん [2012/03/10(土) 17:27:10.53 ] www
269 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 17:42:55.78 ] 262ではないがlisperなら使えるのでは? エターナルフォースブリザードとは - はてなキーワード d.hatena.ne.jp/keyword/%A5%A8%A5%BF%A1%BC%A5%CA%A5%EB%A5%D5%A5%A9%A1%BC%A5%B9%A5%D6%A5%EA%A5%B6%A1%BC%A5%C9
270 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 17:44:07.61 ] >>266 > macro expansion のためには完全に前置か完全に後置かにしないと都合が悪い。 「都合が悪い」ってのは、評価時にさらに構文解析が必要になるのが問題になるってこと? それってmacro expansionに限った話か?
271 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 18:56:43.36 ] >エターナルフォースブリザード 松本零士御大の漫画かと思いました
272 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 21:47:59.76 ] >>266 グラフ理論のグラフじゃね? ツリーは循環のないグラフと言い換えられる(グラフはツリーを含む)
273 名前:266 mailto:sage [2012/03/10(土) 22:25:57.43 ] >>270 macro expansion に限った話ではないです。例として挙げただけ。 「都合が悪い」のは、 例えば「第二要素がオペレータ」という決まりにしてしまうと 引数が0個のマクロを定義できなくなるとかです。 マクロ定義時にマクロ名を何番目に置くか定義できるようにすると、 (macro0 macro1) のような式でどちらを先に展開するのか、とか。 >>272 グラフで記述された言語って何?という意味の質問でした。
274 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/10(土) 22:59:25.81 ] BNF って構造としてはグラフだよね。
275 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:11:34.18 ] >>262 横レスだけど面白い処理だね control stringとリストを作ってから最後にまとめるわけか ただ、その処理だと文字列に~sや~aが現れたときにはエラーになってしまうような。