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/
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が現れたときにはエラーになってしまうような。
276 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:26:18.14 ] >>272 細かい話だが普通、循環のない無向グラフと無向を断わらないか。 有向だとDAGが循環はないがツリーでない判例になるから。
277 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:57:02.65 ] >>275 アイヤー。"~s"とかのこと忘れてたアルよ。無駄にnilの場合とか考慮してるのにね。 エターナルフォースnreverseは、>>239 で闇とか言われてたので、そんなテンションだったとき、 途中で要素を共有してたのを忘れてnreverseして自分が死んだ。相手は死なない。平和。 結局loopとかformatとか良く使わないのであんま分かんなかった。アップルパイ美味しいです。
278 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 07:14:21.07 ] 最初は、データ構造として用意したS式以外に 、プログラムを書くためのM式ってのがあった。 squab.no-ip.com:8080/wiki/435 ja.m.wikipedia.org/wiki/LISP www.google.co.jp/search?hl=ja&q=M%E5%BC%8F+%E4%B8%AD%E8%A5%BF%E6%AD%A3%E5%92%8C&oq=M%E5%BC%8F+%E4%B8%AD%E8%A5%BF%E6%AD%A3%E5%92%8C 慣れの問題かS式のが見やすい、、
279 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 07:40:21.31 ] yamlに変換したら読みにくそう
280 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 11:01:54.68 ] >>278 S式が用意された理由は、データ構造というか構文木の表現のためだよ だから本来のS式にとって、データ構造の表現は副次的な役割に過ぎない
281 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 11:13:47.61 ] 逆だよ。 データ構造が先で、evalを理論的に説明するために、ソースコードを データ構造で表現する必要があって、そういうことになった。
282 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 12:08:32.47 ] 元のレポート読んでないけど、Wikipediaの記述ではデータ構造が先だな。
283 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 15:17:50.86 ] 数式処理をしたい 動的データ構造が必要 FORTRANでリスト処理ライブラリを書く リスト処理ライブラリで数式処理プログラムを書いてみた 数学やってたからλ式採用 万能関数eval発見 Lispの誕生 こんな経緯だったはず。 M式はコンスセルを意識しやすい表記として、かなり初期に考えられたはず。
284 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 17:14:10.01 ] あれ?そうなるとeval誕生前にはどうやって処理していたんだろうか
285 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 17:50:53.77 ] evalはインタプリタ。 コンパイラがあったらしいように読めたような気がする。
286 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 22:50:04.17 ] 当初evalは数式処理をしていたが、万能関数ではなかった。 >>285 無茶言うな。
287 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:28:18.89 ] www-formal.stanford.edu/jmc/recursive/node4.html には、コンパイラがある、と書いてあるように読める。 一方で、これの後半には eval があるけど、 www-formal.stanford.edu/jmc/recursive/node3.html 伝説によれば、ラッセルが実装してみせるまで、マッカーシーは 実装できるものと思っていなかった、とされている。
288 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:46:37.82 ] >>287 FLPL(fortran list processing library)辺りからの経緯の話なんだけど。 その前にもNSS listとかIPLとか先駆的な仕事があるんですよ。 いきなりLispやLispコンパイラが生まれたんじゃなくて。
289 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:48:29.52 ] うーん なんかよく分からなくなってきた 表や図でlispの歴史をまとめているのは無いのかな
290 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:07:05.51 ] IPL軽視されすぎ。 IPLなければLispのようなものはLispにはなってなかったはず。 FLPLは当初IPL-IIに翻訳される予定だったが、 McCarthyがFORTRANで記述できると助言したらしい。
291 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 07:59:45.70 ] >>276 うん、条件を見落としてた ごめん >>273 >>263 とは別人だから真意は分からないけれど CLや特定のSRFIを含むSchemeだと#n=と#n#で循環も書けるから 念の為にグラフも比較対象に含めたんじゃないかと思う
292 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 18:43:06.24 ] 質問です Gaucheです hash-table関数などのように可変個引数を取る関数に、自前のリストを出力する関数から値を渡したいのですが、形式をどのように変換すればよいのですか? e.g. '((foo bar) (piyo hoge))を (hash-table '(foo bar) '(piyo hoge))のように渡したいのです
293 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/12(月) 19:13:34.20 ] >>292 aplly を使え。 それと hash-table の第一引数はハッシュテーブルのタイプ (比較関数) だぞ。
294 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/12(月) 19:14:35.66 ] まちごた… aplly じゃなくて apply だ。 こんな基本的なところでタイプミスとはカッコわりぃ〜 orz
295 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 20:20:33.73 ] Gaucheなら (use util.list) (alist->hash-table '((foo bar) (piyo hoge))) ちなみに、alistからの変換なので、元データの形式を '((foo . bar) (piyo . hoge)) としないと意図と違うことになると思う
296 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 20:21:42.12 ] アップリー
297 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/12(月) 20:30:50.45 ] >>295 あらためでドキュメント見てて気付いたんだが、 alist->hash-table のデフォルトの比較関数は eq? ってのが書いてないのは忘れてるだけなのかなぁ。 practical-scheme.net/gauche/man/?l=jp&p=alist->hash-table 指摘した方がいいだろうか。
298 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 02:44:49.93 ] Lisper 死んでも誰も困らない この世のゴミ 早くGCに回収されろ
299 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 03:26:43.37 ] >>298 おっぱい?
300 名前:プログラミング超初心者 mailto:sage [2012/03/19(月) 03:38:50.39 ] リリカルLISPっていう学習ソフトで詰んだので答えて頂けるとうれしいです。 問い:関数fを引数の第二要素を返す関数として定義しなさい。ただし引数は一つ。
301 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 03:43:00.67 ] (define f cadr)
302 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 03:53:04.02 ] (define (f 大好き おっぱい) おっぱい) これは糖衣構文だから、このレベルが解けないくらいの初心者なら、 (define f (lambda (大好き おっぱい) おっぱい) ) という感じで、糖衣構文を使わず、 defineによって f に 無名関数lambda を 束縛する、ときちんと覚えたほうがいいかも
303 名前:302 mailto:sage [2012/03/19(月) 03:57:18.63 ] というか、俺もリリカルLISPでSchemeをはじめたんだけど ちゃんと途中に引数と戻り値については説明があっただろ そこは詰む場所じゃねーぞ
304 名前:302 mailto:sage [2012/03/19(月) 04:19:41.21 ] なんで詰んでるんだろうと思ってリリカルLisp起動してちゃんと問題読んだ >>300 を読み直した 恥ずかしすぎるから吊ってくる
305 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 04:50:09.92 ] かける言葉もないわ。コレは吊るしかない
306 名前:プログラミング超初心者 mailto:sage [2012/03/19(月) 05:02:57.53 ] ありがとうございます 何故か分からないけど(define f cadr) で解けました。 これは何かの省略した形ですかね。 ヒントを参考に(define f (lambda (x) なんちゃら))こんなので色々考えましたが 思いつきませんでした。
307 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 05:27:08.66 ] >>306 cadrを束縛してる手続きでfを束縛するってこと。 要はcadrにfっていう別名を付けた。 (define x 10) とかと考え方は同じ。
308 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 05:32:15.37 ] ちなみに (define f (lambda (lis) (car (cdr lis)))) が多分意図する正解だと思う。 多分 (car (cdr lis)) の部分をやらせたかったんじゃないかな。 (lambda (lis) (car (cdr lis))) は cadr として最初から定義されているので同じ意味ってことね
309 名前:デフォルトの名無しさん [2012/03/19(月) 07:06:35.29 ] (define (cr ad sex) (case ad ((a) (car sex)) ((aa) (car (car sex))) ((aaa) (car (car (car sex)))) ((aaaa) (car (car (car (car sex))))) ((aaaaa) (car (car (car (car (car sex)))))) ((aaaaaa) (car (car (car (car (car (car sex))))))) ((aaaaaaa) (car (car (car (car (car (car (car sex)))))))) 無限に続く)) これを効率よく実装するにはどうしたらいいでしょうね
310 名前:デフォルトの名無しさん [2012/03/19(月) 08:02:33.27 ] ;;効率的かは分からないが ;;Gauche (define (cr ad sex) (letrec ((port (open-input-string (symbol->string ad))) (iter (lambda (sex) (let ((ch (read-char port))) (cond ((eof-object? ch) sex) ((char=? ch #\a) (iter (car sex)))))))) (iter sex))) ;;aかどうかを気にしないなら(length (symbol->string ad))でもいいと思う
311 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 08:16:09.74 ] ×length ○string-length だった(13行目)
312 名前:デフォルトの名無しさん [2012/03/19(月) 08:36:23.73 ] (define (cr ad sex) (define (iter ls sex) (cond ((null? ls) sex) ((char=? #\a (car ls)) (iter (cdr ls) (car sex))))) (iter (string->list (symbol->string ad)) sex))
313 名前:デフォルトの名無しさん [2012/03/19(月) 08:44:36.90 ] ;;やっと言いたいことを理解したが効率的ではないな (define (cr ad sex) (define (iter ls sex) (cond ((null? ls) sex) ((char=? #\a (car ls)) (iter (cdr ls) (car sex))) ((char=? #\d (car ls)) (iter (cdr ls) (cdr sex))))) (iter (reverse (string->list (symbol->string ad))) sex))
314 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 09:15:59.79 ] そういうのこそマクロ使うんだよ
315 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 09:56:32.71 ] (define (apls ls arg) (if (null? ls) arg ((car ls) (apls (cdr ls) arg)))) とでもして (apls (map (λ (ch) aならcar dならcdr) (stringー>list (symbol->string ad))) sex) みたいなのとか
316 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/19(月) 10:06:05.34 ] >>310 もっと積極的に (というか無闇に) Gauche の機能を使ってみた。 (define (cr a x) ($ port-for-each (cut $ update! x $ case <> ((#\d)cdr)((#\a)car)) $ cute read-char $ open-input-string $ symbol->string a) x)
317 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 10:24:33.65 ] ごーしゅよくわからないけど適用順ぎゃくじゃない?
318 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 18:17:19.77 ] Closure(これは古い日記です) - Diary(uid) d.hatena.ne.jp/uid/20051129 よくわからないんだがclusureって無名関数のことだったの?
319 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 18:21:49.70 ] lambdaは無名関数でもありクロージャでもある 無名であることとクロージャは無関係
320 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 18:42:25.98 ] Lispスレ的には、昔のlambdaで作られる関数は動的束縛で、クロージャではなかった。 あと、無名関数という特別なものがあるとか考えるよりも、関数に名前が必要な言語と そうでない言語があって、名前が必要ない言語では名前を付けないと無名(匿名)関数に なる、という風に考えたほうが良いと思われ。
321 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/19(月) 18:58:38.20 ] >>318 言葉の意味はとりあえず Wikipedia 見ておけばだいたいわかる。 ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3 >>320 を補足すると昔の方式の LISP のひとつには emacs lisp がある。 喩えば対話モードで (lambda () 'hoge) と入力すると (lambda nil (quote hoge)) と返ってくる。 これは emacs lisp の中では lambda で作られる関数は単に「car が lambda というシンボルであるリスト」として表されていることを意味する。 静的な環境と結び付いていない。 あと、極論するなら Scheme の手続きは全て無名。 (define (x) 'hoge) みたいに書いても、これは (define x (lambda() 'hoge)) の構文糖だから。 名前は変数についているのであって関数の名前ではない。
322 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 06:14:08.18 ] >>314 わからないので、やってみてください
323 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 07:04:51.44 ] >>322 ほれ (define-macro (cr ad sex) (let loop ((ad (string->list (symbol->string ad)))) (if (null? ad) sex (if (char=? (car ad) #\a) `(car ,(loop (cdr ad))) `(cdr ,(loop (cdr ad))))))) (cr a '((a) b c)) =>(a) (cr aa '((a) b c)) =>a (cr ad '((a) b c)) =>b (cr add '((a) b c)) =>c
324 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 20:19:10.55 ] SchemeとCommonLispは完全に時代遅れ これからはclojureの時代
325 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 08:22:26.09 ] Clojureは大好きだけどそんなことはないと思う
326 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 13:41:51.74 ] >>325 どんなところがそんなことないと思うのですか?
327 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 14:30:33.31 ] common lispとschemeのコードをシンタックス・ハイライトで色づけできる wikiを自分のサイトに設置したいのですが、何かおすすめはありますか? これまではgaucheのwilikiを使っていましたが、 wilikiではシンタックス・ハイライトを導入できそうになかったので。
328 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 15:12:02.26 ] >>327 google-code-prettify なら CL や Scheme に対応してるし、 WiLiKi に導入することも簡単だよ。
329 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 15:22:44.98 ] >>328 ありがとう。google-code-prettifyの使い方を見てみた。 javascriptとcssのファイルの読み込みはwilikiに簡単に追加できそう。 だけど、<pre class="prettyprint linenums:4">のように pre要素のclassに任意の文字列を渡すことはwilikiではできないのでは?
330 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:04:46.17 ] ここ、Wilikiでシンタックスハイライト使ってるけど、wiliki本体を改造してるのかな。 community.schemewiki.org/?scheme-style
331 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:11:46.88 ] >>326 JVMやCLIのような「ホスト」環境にアクセスするのは自然な事としている所はCLやSchemeとは違うと思う それに、共有された状態を管理する手段としてロックを推奨しないなど、まだ一般に浸透していない設計上の判断がある その判断が良いものかどうかは別の話だけど、少なくともCからC++のように 「コンパイラを入れ替えて、多少のエラーを直せば一応移行できる。それからより良い方法を学べばいい」というわけにはいかない 俺はClojureをCLやSchemeを過去の遺物にするような何かではなく、今までも沢山あった方言の一つだと思っていて その上でClojureが好きで、長期間続いて欲しくて、他の言語にClojureが良い影響を与えたらいいなと思う だから「CL・Schemeは死んだ、これからはClojure」みたいな主張には頷けない
332 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 16:36:24.09 ] >>330 括弧のネストの深さに応じて色が変わるのは pastebinのサイトと同じっぽいな
333 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 16:40:39.59 ] >>330 プロパティを追加したいだけなら wiliki:format-page-content メソッドをオーバーロードすればいいんだよ。 next-method の結果から sxpath で pre を探して sxml:add-attr でプロパティを追加。 直接ソースコードを書き換える必要はない。 >>329 linenums に関しては記法自体を追加しないと無理かなぁ。
334 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 16:51:16.23 ] もちろん、同様にメソッド追加によって pre の中身を弄ることもできるので JavaScript に頼らないハイライトも可能。 r6rs のハイライトは leque さんが公開しているコードがあるのでこれと組み合わせられると思う。 www.katch.ne.jp/~leque/software/gauche/r6rs-shtml-markup/
335 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:44:36.41 ] >>333 ありがとうございます。 いろいろいじってみます
336 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/23(金) 01:35:41.62 ] 最悪の場合でも with-module を使えばどこへでも割り込めるのでソース自体を書き換えなければいけないってことはそんなに多くない。 でも、 internal define は置換えられないのでそれを覆う関数ごと置換えることになって面倒だからそういうときは無理せずに ソースに手を加えた方がよいかもしれず。
337 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 10:53:21.86 ] gaucheのfile-mtimeで取り出した時間をもとに y/m/d形式の日付の文字列を取得するには どうすればよいでしょうか? rubyでいうところのこれです Time.at(タイムスタンプ).strftime("%Y/%m/%d")
338 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 11:14:38.10 ] sys-strftime
339 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 11:29:54.45 ] >>338 まさにそのとおりの関数があったのですね。ありがとうございます。
340 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/03(火) 19:58:44.16 ] directory で再帰的にファイルを探すときに、ある特定のディレクトリのみを無視したいのですが、 どうすればいいでしょうか? Ruby の Find.prune のようなものを探しています。 doc.ruby-lang.org/ja/1.8.7/method/Find/m/find.html
341 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/03(火) 21:01:03.89 ] >>340 処理系は? Gauche なら directory-fold を使うのが妥当。 practical-scheme.net/gauche/man/?l=jp&p=directory-fold
342 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/03(火) 23:42:23.42 ] >>341 SBCLとかclispとかでポータブルに書きたいです。
343 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:06:18.83 ] >>342 weitz.de/cl-fad/#walk-directory
344 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/04(水) 00:16:01.86 ] >>342 Common Lisp の話はなるべく Common Lisp スレへ行ってね。
345 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:24:08.01 ] Scheme の話は Scheme スレでね。
346 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/04(水) 00:27:53.75 ] Lisp SchemeスレとCommon Lisp入門スレってどういう関係なの? ここはscheme専門スレなの?またはCommon Lispだけは禁止なの? 禁止なら1に書いておくべきでしょ あちらはCommon Lispの初心者用スレじゃないの?
347 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:32:12.37 ] >あちらはCommon Lispの初心者用スレじゃないの? お前にぴったりじゃん
348 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:45:51.31 ] >1 > Common Lisp、SchemeをはじめとするLisp族全般のスレです 自分も知らないうちにこの一文忘れて同じ事レスったことがある。
349 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/04(水) 00:50:46.49 ] >>346 そこらは歴史的経緯というやつで…。 別に Common Lisp の話が禁止というわけじゃないよ。 ただ、 Common Lisp "固有の" 話は Common Lisp スレに集約した方が話が早いのであえてこっちに書かんでも、という感じ。
350 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:58:05.34 ] 複数スレチェックするのめんどいから、全部ここでいい感じ。
351 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 00:59:37.49 ] Common Lispとか興味ないわ
352 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 01:49:47.60 ] >>342 んじゃCLスレに誘導。 toro.2ch.net/test/read.cgi/tech/1330888006/105
353 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 21:12:56.59 ] CLスレが立った経緯は・・・ 昔、変なのがいたんだよ Ruby最高とかそんなのもいたw
354 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 21:24:35.21 ] RubyはLispの一種だしな
355 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:17:08.95 ] >>353 comp.lang.lispで延々怪気炎を上げ続けてるWilliam Jamesさんみたいな人ですね。分かります。
356 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:29:45.60 ] gavino もまだ暴れてるんだなスゲー。学生時代にも見た記憶あるから、10年近くtrollしてんのか。 海外のキ印は気合い入ってんな…
357 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:38:24.47 ] ジャンルは違うが日本が誇る偉大なる日下部師も負けちゃいないぜ。
358 名前: ◆QZaw55cn4c mailto:sage [2012/04/04(水) 22:47:10.01 ] >>357 それはどちらでみることができるのでしょうか?
359 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:36:12.72 ] 今は主にTwitterかね
360 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 04:25:53.87 ] はつみみです
361 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/07(土) 09:42:49.60 ] ということにしたいのですね?
362 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 16:46:14.80 ] n次元のリスト1つをつくりたいです '(((2 2 2) (2 2 2)) ((4 4 4) (4 4 4)) ((6 6 6) (6 6 6))) リストの内容はここでは一番外側のリストの順番に2をかけたものとします (make-my-list (lambda (x) (* 2 x)) '(3 2 3)) このように引数を与えて上のようなリストをつくる関数orマクロはどうかけばよいですか (use srfi-1)と(iota 3 1)をつかって(1 2 3)を作ったあとの処理が思いつきません common lispならloopを重ねたうえでcollectを使えばなんとかなるきがするのですが schemeの場合どこからどう手をつければいいかわかりません
363 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:10:30.94 ] 引数が何で結果を何にしたいのか 自分でしっかり決めてないからだと思うよ
364 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:11:28.49 ] 俺以外にも>>362 が何言ってるのか分からない人がいて安心した
365 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:25:45.32 ] (make-my-list (lambda (x) (* 2 x)) '(3 2 1)) (make-my-list (lambda (x) (* 2 x)) '(4 2 3)) (make-my-list (lambda (x) (x)) '(3 2 3)) の結果は?
366 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 18:40:54.71 ] schene素人が作ってみた (define (make-my-list proc l) (define (henna-list-tsukuruyo l x) (define num (car l)) (if (null? (cdr l)) (map (lambda _ x) (iota num)) (map (lambda _ (henna-list-tsukuruyo (cdr l) x)) (iota num)))) (map (lambda (x) (henna-list-tsukuruyo (cdr l) (proc x))) (iota (car l) 1))) (write (make-my-list (lambda (x) (* 2 x)) '(3 2 3))) > (((2 2 2) (2 2 2)) ((4 4 4) (4 4 4)) ((6 6 6) (6 6 6)))
367 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 19:27:43.96 ] すみません make-my-listの第一引数には一番外側のリストの順番に対して操作する関数を、 第二引数はリストをわたします。 第二引数のリストは、説明がしづらいのですが、1番目は生成されるリストのatomの数、2番目は1番目をいくつまとめるか、3番目は2番目をいくつまとめるか、という風になります >>365 こうしたいです >(make-my-list (lambda (x) (* 2 x)) '(3 2 1)) ( ((2 2 2) (2 2 2)) ) >(make-my-list (lambda (x) (* 2 x)) '(4 2 3)) ( ((2 2 2 2)(2 2 2 2)) ((4 4 4 4)(4 4 4 4)) ((6 6 6 6)(6 6 6 6)) ) >(make-my-list (lambda (x) (x)) '(3 2 3)) ( ((1 1 1) (1 1 1)) ((2 2 2) (2 2 2)) ((3 3 3) (3 3 3)) )
368 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/13(金) 19:50:21.27 ] >>367 部分的に共有構造になってるけどそれでもいいか? (define (make-my-list p l) (let ((n (car l)) (m (cadr l)) (z (caddr l))) (map (lambda(x) (make-list m (make-list n (p x)))) (iota z 1))))
369 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 12:55:57.88 ] ありがとうございます。
370 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:00:01.44 ] 質問です。プログラミングのコードって、Tabキーで解りやすくインデントがされますよね。 けれど、こういう掲示板にコードをコピペで張り付けると、インデントが全部消えちゃいます。 掲示板にコピペしても、インデントが残るようにするにはどうしたらいいんでしょうか。 ちなみにエディターはemacsです。
371 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 22:05:21.75 ] 気にしないでいいと思いますが Pythonみたいなインデントに文法上の意味がある言語ならともかく どうしてもというなら とか全角空白とか
372 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/16(月) 23:08:37.71 ] >>370 このスレの住人なら emacs かそれに準ずる高機能エディタを使ってます。 それにコピペして数ストロークのコマンドでインデントは再現できます。 emacs なら C-x h でバッファ全体を選択した後に C-M-\ ですね。 なので、少なくともこのスレではあまり考えなくてかまいません。 >>371 の示す手順も掲示板のクセ次第です。 にちゃんねるでは通用しても掲示板の全てで通用するわけではないです。 見る側のブラウザやフォント指定次第では幅が合わずにやっぱり表示が崩れたりする上、 実際に実行させるために空白文字に戻す必要が生じてかえって手間だったりも。 それも数ストロークのコマンドで出来ますけど。 最近ではコードの断片を保存するサービスがいくつかあります。 そういうサイトを利用して掲示板には URL を貼り付けるといったこともよく行われています。 主なところでは、 ideone.com/ codepad.org/ codetter.com/ https://gist.github.com/ でしょうか。 各掲示板によって (にちゃんねるなら各スレごとに) だいたいの運用方法が暗黙に定着しているので、 過去のやりとりを参考にして下さい。
373 名前:デフォルトの名無しさん mailto:sage [2012/04/16(月) 23:51:34.70 ] Janeで見ているなら、レス番にアンカーがあればそこを右クリック なければ選択状態にして右クリック
374 名前:370 mailto:sage [2012/04/17(火) 09:08:20.11 ] >>372 動作確認(C-M-\)をしました。感動しました。マジでありがとう。
375 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 11:48:33.71 ] >>370 2chでは行頭の半角スペース・Tab は何個あっても消える。 全角スペースならおk。
376 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 16:06:43.90 ] dat上では消えてないから、専ブラで行頭空白保存する設定で使えばインデント復元できる。
377 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/18(水) 22:25:05.23 ] Guile 2 って Windows で動かんの?
378 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 21:54:21.81 ] Gauche0.9.3きちゃう? これでGauche-tkも動く〜
379 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/21(土) 23:36:46.70 ] Windows でスレッドが使えるようになったのが個人的にはかなりありがたい。 それと https 通信に stunnel が不要になったのもデカいかな。 リリースに向けた作業って地味に面倒でモチベーションを維持しにくいからそうすぐってわけでもないと思うな。
380 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 23:42:08.03 ] まじか。Windows環境でもスレッドうごいちゃうの?ビルド環境ないんで 0.9.3 は wktk しながら待たせてもらいます。
381 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/21(土) 23:53:48.61 ] そんなおまいらのために最新版を Windows 向けにビルドしてやったぞ。 www1.axfc.net/uploader/Ne/so/131324 Gauche-tk は入れといたけど tk そのものは別途インストールしてね。
382 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 01:08:43.25 ] やだ…仕事はやい… ありがとー
383 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 12:30:49.56 ] なにこのキモイ流れ?
384 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 12:36:45.57 ] 河童のキモ流れ … 河童が肝を洗っているとうっかり流してしまいそのまま死ぬこと。 転じてキモがられて社会的に死ぬこと。
385 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 14:13:08.18 ] ユーモアの欠片もないな
386 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 18:24:18.79 ] すいません、質問です。 '((a b) c d) と (list (list 'a 'b) 'c 'd) は、どこが違うんでしょうか?
387 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 18:48:39.11 ] >>386 tips.lisp-users.org/scheme/index.cgi?%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B
388 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/28(土) 00:45:03.59 ] >>386 C++ や Java の感覚で表現するなら前者はリテラルで後者はコンストラクタによってオブジェクトを作ってるイメージかなぁ。
389 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 02:16:59.90 ] 文字列と文字列の入った配列ぐらい違う
390 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 02:37:36.59 ] >>389 いや、無理に参加しなくてもいいんだよ
391 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 03:11:40.27 ] 前者は処理系によっては変更不可属性を付けられてもおかしくない
392 名前:386 mailto:sage [2012/04/28(土) 08:23:46.72 ] 387みたけど、しっくりこない。 「quote を使うとリストを定数として書くことができる。」とか書いてあるけど >(define symbol_1 '(1 2 3 4)) >ok >(car symbol_1) 1 >(cdr symbol_1) (2 3 4) うーん、わかんない。symbol_1は定数なの? (car 'symbol)をやってみると、 1st argument symbol to car not List object っていう風に怒られます。
393 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 08:39:01.76 ] quoteは、渡されたS式をそもそもソースコードとして評価せずそのまま返す、という機能だよ
394 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 14:56:42.22 ] >>392 CLで書いているけどこんな形で変わってくる ttp://ideone.com/nT1Tr quoteは読み込みのタイミングで一回だけリストを作っているけど、 listやconsなんかは評価ごとに新しいリストを作っている。 あと、もう一度symbol_1を評価してみれば分かるけど、 carやcdrはsymbol_1を変更してない。
395 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 21:03:13.31 ] わかんない人は処理系のソースを読もうぜ 仕組みが一発でわかるぜ このへんはLISPでLISP書いてもわかんないとこだぜ
396 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 02:10:46.39 ] >>392 > (car 'symbol)をやってみると、 > 1st argument symbol to car not List object っていう風に怒られます。 readした後には[ car | [ symbol | nil ]]と言う二つのcons cellになってる。 [ car | [ quote | [ symbol | nil ]]]ではない。 carの引数がsymbolというシンボルオブジェクトなのだから、リストでないと怒られて当たり前。
397 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 02:51:05.97 ] atomとlistとconsの違いも判ってないやつにquoteなんて教えても無駄
398 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 03:21:45.50 ] うん、まあ判らないだろうなということ教えてるよね
399 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 05:15:35.89 ] 括弧で括った式 (関数 引数) この形式は関数の適用を意味する 関数と引数は一度しか評価されない 括弧で囲った式には、関数ではない特殊形式も存在する (特殊形式 引数) 特殊形式の引数が評価されるかは、その特殊形式によって決まる 引数の数は関数や特殊形式によって決まる 式(1 2 3 4)は、最初の要素が関数でも特殊形式でもないため、 評価するとエラーとなる 引用符の付いた式 '(1 2 3 4)は評価すると(1 2 3 4)が返る '(1 2 3 4)は(quote (1 2 3 4))と書ける quoteは特殊形式であり、 引数を評価せず、そのまま返すという機能を持つ
400 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 05:18:28.64 ] (define symbol_1 '(1 2 3 4)) defineは特殊形式であり、右辺の式を評価した結果の別名を定義する ここでは右辺の'(1 2 3 4)が評価され(1 2 3 4)となり、 symbol_1 → (1 2 3 4)という関連付けが行われる symbol_1のようなシンボルは評価すると関連付けられた値を返す 式symbol_1を単体で評価すると(1 2 3 4)を返す シンボルcarには関数が関連付けられており、 この関数はconsで作成された2値を格納するコンテナから、 最初の要素を返すという機能を持つ 式carを単体で評価するとその関数を返す (car symbol_1)は上で説明した通り関数の適用であり、 symbol_1が評価され、その部分が(1 2 3 4)になり、 同時にcarが評価され、その部分が関数になる それぞれの評価が終わるとcarの関数が適用され、 (1 2 3 4)の最初の要素の1が返る
401 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 05:27:06.74 ] carの関数適用までが終わると、 式(car symbol_1)のすべての評価が終わったことになり、 結果を表示した後、次の式へ移るか、入力待ち状態になる この一連の流れをread-eval-print-loop(REPL)という
402 名前:392 mailto:sage [2012/04/29(日) 14:57:46.86 ] わかりました。すごくありがとう。 carに束縛された関数が評価されるのと同時に、 symbol_1が評価されて(1 2 3 4)が返り、 (1 2 3 4)は、carに束縛された関数に渡されるから、 >(car (1 2 3 4)) >1 となるわけね。みんな、ほんとうにありがとう。
403 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 00:07:01.81 ] 本屋で「scheme手習い」と「scheme修行」がScalaのコーナーにあったんで Lispコーナーに移してきた。
404 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 21:13:09.57 ] 俺も分離状態にあった『手習い』と『修行』をセットにしておいた。
405 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 18:43:33.28 ] プログラミングGaucheがscheme関連の良書だと気付かれてないのはどうすれば良いの
406 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 20:31:54.05 ] >>405 第4部がつまんないからだろ? その他の部分はありきたりの言語入門書と大して変わらんし…
407 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 20:55:25.75 ] ありきたりと言うが、schemeにはまっとうな言語入門書が他にないじゃん
408 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 21:17:48.45 ] 入門書は必要ないだろ
409 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/01(火) 21:21:41.12 ] 前にも書いたような気がするが、言語そのものに関する解説はケント・ディヴィグの「プログラミング言語SCHEME」が一番まともだと思う。 このレベルなら入門者にも充分に理解できる範囲だと思うし。 が、俺はだいぶん後になってから読んだので本当に入門に適しているかどうかわかんね。
410 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 22:17:12.12 ] 「プログラミング言語SCHEME」が入門者用だと?ふざけんな! 若い頃あれよんで、あまりのストイックさに泣いたわ。
411 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 22:53:15.92 ] 今なら『Scheme手習い』も『Scheme修行』も本屋に行けばあるだろうが。 これで岩波コンピュータサイエンスの『Scheme入門』も再版されたら文句なしなのだが。
412 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 23:03:21.11 ] 岩波のcommon lisp入門は持っているけど schemeの方はどんな感じ?
413 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 23:11:06.87 ] >>405 半年強ぐらい前に日本語ネイティブな入門書として勧めたら、環境構築か忘れたけど何か欠けてるという指摘があった。 その時節電で止まってたオンライン版はみられる状態になってた。 karetta.jp/book/programming-gauche
414 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/01(火) 23:41:52.38 ] >>410-411 手習いと修行は問題集みたいな感じだと思うけどな。 何もしらないところから手探りで問題を問いていく内に Scheme への理解へも深まっている、というようなコンセプト。 それはそれで入門書としてよく出来てるいい本だと思うけど、 「言語」が前面に出てるのは「プログラミング言語SCHEME」 じゃないかという感じ。 やっぱ一番最初に読む本では無いかなぁ。
415 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 04:24:10.08 ] >>414 俺はネットで公開してる原著の方でScheme入門したけどすんなり読めたよ。 プログラミング言語そのものが初心者という人向けではないけど Javaなり何なりわかってる人がSchemeを扱えるようになるには平易でいい。
416 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/06(日) 22:23:10.69 ] >>378 リリースに向けた作業が大詰めに入ってる模様。
417 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 18:40:20.76 ] >>416 おー msysで野良ビルドしちゃる exeで勝手にインスコされるようなのは嫌なんよね
418 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 02:32:53.29 ] gaucheはぜひネイティブコンパイルを実装してほしい
419 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 05:12:40.78 ] 以前、試しにJITコンパイラまでなら実装してみたけど、 保守コストとのトレードオフで採用は難しいみたいな話してなかったっけ? ほぼひとりで開発してる上に本業もあるわけだし、時間足りんでしょう。
420 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 07:05:34.34 ] CPUは1つじゃないからな ARMなんかは複数命令混ざってるから JIT専門業者がいたら丸投げした方がいい
421 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 09:17:19.99 ] ネイティブコンパイル信仰者は、まずは既存のコンパイラをちゃんと調べて、 どういうpros-consがあるかちゃんと示せばいいのに、なんで「ネイティブネイティブ」って うわごとのようにくりかえすだけなんだろうか。 StalinとかChickenとか既にあるんだから。
422 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 09:44:36.96 ] gaucheが良いけどネイティブでないのが不満なのでは。 自分用にgaucheで書いたのを、配布段階でD言語で書き直した経験がある。 一般人への処理系インストールサポートは無理だった。
423 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 11:40:46.38 ] 動的型がどうしよもない ネイティブ化してもスレッデドコードに毛が生えた程度 ボトルネックをなんとかしないと個人でやる限界に近い
424 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 12:32:42.66 ] 配布だけの問題ならちょっとした工夫でなんとかなるだろ。 形式だけ exe になってりゃいいって言うなら mingw-exify が使えるし、 プリコンパイルしておけば速度も多少は改善できる。 もともとスクリプト言語として使う分には充分すぎる速さだしな。 いずれにしても配布しにくいという問題については考えているところみたいなので、 blog.practical-scheme.net/shiro?20120506-being-used どういう解決がいいのか希望があれば今の内に提案すれば方向性に 影響を与えられるかもしれないよ。
425 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 13:29:19.90 ] all in one な exe ファイルが欲しい、ということなら全く別の話だね
426 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 13:58:13.39 ] 元のexe欲しいって話からは外れていっていると思うけれど、 >>424 そこに書いてある配布は、処理系自身の問題で。 >>422 の言っているのはアプリの話でしょ。 最近、スクリプト系は、 処理系自身がコード配布も含めたパッケージシステム持つのが多いよね。 WindowsもMacも、aptみたいに依存関係まで管理するオープンな機構がないから。 node.jsはnpmってのが出来た。 ただ事前にnode.js, python, gitをインストールしなければいけない。 schemeで全部書いて配布に含めることである程度解決できるんじゃないか。 R(r-project.org)は配布に含まれてる。そしてCRANからインストール。
427 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 14:29:13.64 ] 最適化の話でなくてexeにするだけなら難易度はかなり低い gaucheもできたような つーかexeにしたいなんて誰か書いたか?
428 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 16:53:39.03 ] >>426 gaucheも gauche-package install <URL> で一応webから直接インストールできる。 依存関係はみてくれないみたいだし、CPANみたいに一ヶ所にまとまっててほしいけど。
429 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 17:00:58.33 ] やっぱり芋づる式にインストールしたいね。
430 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 20:31:22.63 ] 処理系やライブラリをインストールしてもらうのって難しいからな。 CUIを使うと壊れると思ってやがる。GUIのパッケージ管理システムも欲しい。
431 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 21:07:41.24 ] Rは、R commandarってGUIラッパーもパッケージとして配布されてる。
432 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 21:16:37.47 ] py2exeならぬgo2exeか
433 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/08(火) 21:46:15.10 ] >>426 そもそも >>422 がネイティブコードが欲しい理由は処理系のインストールをサポートすることにネックがあると述べている。 ここではネイティブコードにするのは処理系のインストールの手間を無くす手段のひとつとしてやっているので、 処理系のインストールが充分に簡単、あるいは意識されないならばネイティブコードにする必要もなかったことになる。 確かにそれぞれ処理系の話とアプリケーションの話だけど根は同じだよ。
434 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/08(火) 21:47:32.52 ] >>427 > 最適化の話でなくてexeにするだけなら難易度はかなり低い > gaucheもできたような mingw-exify だな。 コードを文字列のままくっつけるだけだけど。 速度が要る場合にはライブラリをプリコンパイルする仕組 (gencomp) を使えばちょっと速くなるし最適化も 普通にスクリプトをロードするよりはちょっと強くかかるはず。 > つーかexeにしたいなんて誰か書いたか? exe を作らずにネイティブコンパイルする実行モデルに慣れてない人が ネイティブコンパイル = exe を作ると理解したんじゃない?
435 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 21:55:55.75 ] >>432 exeじゃなくてhellじゃなかろか、extension名
436 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:02:13.79 ] mingw-exifyっての使えば数メガバイトで 普通のexeアプリのようにschemeアプリを配布できるの?
437 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/08(火) 22:06:36.70 ] >>436 Gauche のライブラリがいずれにせよ必要なので単一の exe に出来るわけではない。 windows 用 gauche のパッケージに入ってる gauche-install.exe 等は mingw-exify によって処理して 作っているのでソース読めば意味がわかるよ。
438 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 22:56:15.91 ] delphiだって糞でかいランタイムが必要なんだぜ 気にすんな
439 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/08(火) 23:04:26.33 ] まったくだ。
440 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 23:28:39.38 ] むしろ、Gaucheのバイナリ用ランタイム作ればいいのに 配布して終わりの形にできないと、作っても売れないのでおもちゃの域を出ない
441 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/08(火) 23:47:14.53 ] dll 類はともかく、 scm ファイルが多すぎるな。 zip にまとめたアーカイブから直接ロードする機能の提案はあったので、コア付近で実装すれば scm を全部アーカイブしてしまえるかも。 zip からロードする拡張パッケージはあるけど、それが依存しているライブラリを zip に入れるわけにはいかないので、 本格的にやろうとすると Gauche 本体で対応する必要はあると思う。
442 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 00:31:32.02 ] でも、そこまでできるようになったら scheme処理系の中でも群を抜いて使われるようになると思う
443 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 04:49:51.25 ] でもdllは実行時までに別ファイルになってないとならないだろ? 実行前に展開してもらう なら、アプリとGauche一式をzipで配っても同じことのような気もするんだが。 どうしてもexeひとつがいいなら、自己解凍アーカイブにしてexeをクリックしたら 一時ディレクトリに展開してアプリ起動する、とか?
444 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 21:11:32.34 ] >>433 それが困る理由は、メモ帳で改造できちゃうこと
445 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 21:32:56.06 ] >>444 オープンソース派から見ればむしろ望ましい。
446 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 21:39:11.08 ] 秘密がないと金にならない
447 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 22:20:58.23 ] 現実は厳しいんだな
448 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 02:47:58.65 ] ゴミみたいなネイティブコードバックエンドなら ちょっと頑張れば実装できるだろうけど 難読化のために機械語を使うのは正しいのか……?
449 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 03:10:09.28 ] gaucheのwilikiで bad type of argument for str: #<<regmatch> ほにゃらら>というエラーメッセージが出たら、 編集ボタンが消えてしまい、そのページを編集することができなくなってしまいました データそのものは消えていないと思うのですが、どうすればよいのでしょうか。
450 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 03:34:20.49 ] ソース配布が嫌ってだけなら今でもVMコードをdllにできるでしょ (Gauche本体のビルド時にやってる) 非公式みたいだけど。
451 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 09:06:02.53 ] >>449 practocal-schemeのwilikiならこんな所に書いたりせず、Shiroさんに連絡汁
452 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 09:07:29.26 ] >>451 そうですね。そうします。
453 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/10(木) 18:53:41.68 ] Gauche 0.9.3 キター
454 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 19:39:47.88 ] WinのPortable版が来るらしいぞ。配布がかなり楽になるな。
455 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:28:50.49 ] お、来たのか
456 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 22:42:12.60 ] chatonでshiroさんが投稿しているね。 sourceforge.net/projects/gauche/files/Gauche-mingw/Gauche-mingw-0.9.3.zip/download 素晴らしい。これでusbメモリに入れて持ち運べる。
457 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:24:22.05 ] おいらは今cygwinでビルド中 こいつが終わったらmsysのもやんなきゃ
458 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:27:17.89 ] >>457 windowsなら>>456 を入れれば良くない? cygwinでmingwのgaucheを動かす弊害って何かあるのかしら。
459 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/10(木) 23:34:38.09 ] >>458 cygwin は間に入ってファイルパスを変換する。 (cygdrive とか) MinGW 版だとその変換が行われないので、 ファイルを見付けられないケースが起こってしまう。
460 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:34:59.47 ] >>458 単なる趣味でーすw
461 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 23:52:58.27 ] >>459 なるほど
462 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 00:44:46.56 ] む、ビルドできねえ 2008-06-12のcygwinじゃやっぱ古すぎて駄目なのか それともどっか壊したのかなぁ 今更新規のcygwin入れるのもなんかアホくさいなぁ msys+mingwに至っては2004-04-30だしw
463 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 01:17:10.41 ] アドミン権限じゃないと書きこめないフォルダにインストしてるというオチだけはありませんように…
464 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 20:32:12.76 ] ./configure --enable-multibyte=sjisにするとコケるのか デフォのutf8にすりゃいいけど自鯖のはsjisでやってるからなぁ
465 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/11(金) 20:54:25.68 ] 言語処理系によって文字コードの扱い方に関する思想は色々だけど、Gauche の場合は 「内部的には一貫した文字コードを使い、入出力の段階で変換、 場合によっては不完全文字列という形で保持できるけどそのエンコードが何かってのはプログラマの責任で。」 というもの。 なので、内部的に使う文字コードは最も大きい文字セットを持つ UTF-8 を選択した方が問題が少ない。 内部文字コードが Shift JIS の場合に UTF-8 から変換をかけると情報が落ちてしまう場合がある。 変換にかかる時間が惜しいほどシビアな条件とかであえて選ぶのなら話は別だけど、 惰性でやってるだけならこれを機会に変えてみるのもいいかもね。 それはそれとしてバグはこのスレに書くより WiLiKi なり Chaton なりを通じて報告した方がいいね。
466 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 22:03:28.49 ] >>465 まぁバグじゃなくてmsysのバージョンが古いせいってのもありえるから まだまだ要検証だけどさ slibの場所も見落としてたし 一応0.9.1とか古い奴をビルドしてみたらこっちはできたみたいだけど なんだろうねー
467 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/11(金) 22:19:04.26 ] >>466 私の方でも試してみる。 今回から out-of-tree build が出来るようになってるからこういう検証が楽でいいね。
468 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/11(金) 22:27:49.25 ] >>466 再現 (?) した。 ビルド中にドキュメントの処理のところでエラーになる。 ../src/gosh -q -I../src -I../lib -lgauche-init /c/home/Gauche/doc/extract -jp -o gauche-refj.texi /c/home/Gauche/doc/gauche-ref.texi *** SYSTEM-ERROR: couldn't open input file: "[conv(utf8->SHIFT_JIS) from \"c:\\home\\Gauche\\doc\\intro.texi": Invalid argument Stack Trace: _______________________________________ 0 (with-input-from-file (find-file file) (cut filter pattern-in patt ... At line 60 of "c:/home/Gauche/doc/extract" 1 (with-input-from-file (car a) (^ () (if *outfile* (with-output-to- ... At line 141 of "c:/home/Gauche/doc/extract"
469 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:04:13.64 ] >>467 out-of-tree build って何?
470 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:24:55.46 ] >>468 そうそう、それ ひょっとしてiconv.exeが消えてるかとも思ったけどそんなことも無かったし
471 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:46:58.21 ] doc/て文書だからあんま関係ないしスキップできないの?
472 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/11(金) 23:49:37.41 ] >>470 port-name 手続を使っているところに問題があると思う。 > PORTの名前を返します。ポートがファイルに関連付けられている場合は、ポートの名前は > ファイル名です。そうでない場合、ポートを説明する文字列が返されます。 "[conv(utf8->SHIFT_JIS) from \"c:\\home\\Gauche\\doc\\intro.texi" というのは変換ポートを説明する文字列だ。 UTF-8 ならば UTF-8 で書かれたドキュメントを読み込むときには変換ポートを通さないのでファイル名そのものを 得られていたが、 UTF-8 から Shift JIS へ変換する変換ポートを通すときにはその変換ポートの説明を得てしまう。 よって、それを元にファイル名を付けようとすると変なことになる。
473 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/11(金) 23:56:46.36 ] >>471 makefile をいじればとりあえず無視して進むことは出来るよ。 でも、結果的に今回はドキュメント生成スクリプトの些細な問題だったからいいけど、 Gauche 本体の問題が顕現した可能性もあるから、 いずれにせよ検証はした方がいいってこと。
474 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/12(土) 07:27:08.46 ] おっ! 修正されたみたいだね。 > chaton.practical-scheme.net/gauche/a/2012/05/11#entry-4fad58d1-d2ec6 > shiro utf-8以外のエンコーディングでconfigureするとdoc/のビルドに失敗するので、 > 修正した0.9.3.2を出しました。 > utf-8でコンパイルするぶんには急いでアップデートしなくてもいいでしょう。
475 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 15:05:52.82 ] >>474 shiro さんってこのスレ見てんの?
476 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 15:11:13.17 ] doc/のビルドに失敗って… そもそもビルドする必要あるのだろうか
477 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 16:01:38.52 ] >>476 おまいは doc 無しで Gauche プログラミングできるのか。
478 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 16:05:40.27 ] Windows版はそもそもdocがない
479 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/12(土) 17:36:33.78 ] マジで !? と思ったらあるやん。 share./info に。
480 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 17:42:48.37 ] shareの下なんか見ない
481 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 17:51:50.88 ] 禅問答するためのスレではない。
482 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:13:32.83 ] infoファイルってWindowsでどうやって見るの?
483 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:17:28.66 ] 色々やりかたはあるが、たぶんEmacsをインストールするのが一番簡単。
484 名前: ◆QZaw55cn4c mailto:sage [2012/05/12(土) 18:23:10.84 ] うわさのtextinfoですか? そんなものもあったなあ
485 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:24:21.78 ] windows用の場合info2htmlかなんかに掛けて .chmファイルとかにまとまってると便利なんだけど もっと一般的な形式があればそれで pdfじゃ多分読まない
486 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:25:46.24 ] win使いのほとんどはオンラインのhtml見てるんじゃないかと思う
487 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:26:50.61 ] ダイアルアップ時代はネット上のHTMLをローカルに保存して見てました
488 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:29:44.00 ] そっか、ドキュメントルートをwgetしてローカルで見るのが早いわな うん、解決
489 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:43:38.02 ] winでemacsでinfo-lookupです。
490 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 19:42:49.92 ] えっと、andoriodでも相変わらずemacsみたいな変態が幅利かせてる・・の?
491 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 19:54:40.81 ] Androidって何の話?
492 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:09:35.94 ] お、ビルドでけた info.gzをhtmlにする方法ってなんかあったような気がするが忘れた ttp://practical-scheme.net/vault/gauche-refj.tgz ここリンク死んでるのな
493 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:47:12.54 ] >>479 Windows版のshare/info/の下は全部gzで固まっててビルドしてくれる気すらない
494 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:49:59.78 ] あ、wiliki動かしたらlibiconv-2.dllが無いって怒られちゃった たしか前はそんなこと言われなかったと思ったのに まー適当に拾ってきて入れたけど やっぱりどっか壊してたんだな
495 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/12(土) 21:05:24.99 ] >>493 違うよ。 それが成果物なんだよ。 元は英語、日本語を平行して記述した形式になっててそれを Gauche で書かれたスクリプトで切り分けてその形にすんの。
496 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/12(土) 21:13:09.79 ] >>492 gauche のソースツリーの中で doc ディレクトリに下りてから make htmls とすれば html 形式のドキュメントも生成してくれるよ。
497 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/12(土) 21:17:14.99 ] >>482 だいたいは emacs から見る。 freedeai.180r.com/up/src/up11210.png 知りたい関数名がある箇所にポイントを持っていてちょいといくつかのキーを叩けば そのままドキュメントを開いてくれるというのはすばらしい開発効率をもたらしてくれる。 索引から探すとかアホらしくてやっとれんので、html 版はそんなに見ないよ。
498 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 21:58:29.29 ] >>497 windowsのemacsを使ううえで、どうすればそうできるのですか? EmacsからGaucheを使う - karetta.jp karetta.jp/book-node/gauche-hacks/004640 今のところこれしか設定していません。
499 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/12(土) 23:25:24.18 ] >>498 俺は leque さんの gauche-mode を使ってるなぁ。 www.katch.ne.jp/~leque/software/repos/gauche-mode/ ドキュメントがあるディレクトリとキーバインドだけ設定すればいいようになってる。 gauche-mode と言いつつ R6RS の一部に対応してたりするので、 俺は gauche 以外の Scheme を書くときでも gauche-mode を使ったりする。
500 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/12(土) 23:38:42.70 ] >>475 わからん。 どちらかに断じることが出来る根拠はない。 ただ、ブログとかで Gauche 関連のことを書くと初心者の しょーもない疑問にも応えに現れることがあるので、 割と広範囲に観測してはいると思う。
501 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 00:43:09.37 ] >>499 ありがとうございます。 うまく設定できました。
502 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:33:07.96 ] Kyoto.lisp は盛り上がりましたか?
503 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 16:06:36.44 ] msysの方はおkとして cygwinの方はsignal.cのとこで死んじゃうなぁ Scm_SigCheckのあたりから SIGPWRがundeclaredとかってさ threads=noneにすればいけるけど ちなみにcygwin 1.5.25-15 gcc 3.4.4だす
504 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 16:41:01.21 ] cygwinてまだメンテされてんのか なんか一時期まともにダウンロードできなくて見捨てた
505 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 17:14:23.49 ] 最近はandLinuxとかが普通じゃないの?
506 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 18:24:39.46 ] Windows との連携というか距離感というか、そのへんで選択肢は変ってくる。 cygwin アプリからは Windows API も呼べるけど、 andLinux 上で動くソフトは完全な Linux アプリなわけで、 どっちが良いとか普通とかとは言えないと思う。
507 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 19:31:52.46 ] >>502 ざっくりいってshibuyalispが現地参加者80人ust参加15人で、95人 kyotolispが現地35人、ust50人で、85人ってところみたいだから、大成功の部類じゃね?
508 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 20:07:46.92 ] andというかCoLinuxって64bitだとまだ動かないんじゃないの?
509 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 22:17:04.58 ] linuxは乞食の集まりだから進化が遅い
510 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 23:07:43.05 ] 今回のでどのプラットフォームでもglやらtkとかGUIで遊べちゃう Gauche最強伝説だな newlispで組んだpcypをGaucheで組みなおそw
511 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 16:09:00.86 ] こんな所にpeca民が 配信楽しみにしてます
512 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 22:39:20.95 ] >>511 配信なんてしませんよw linuxでもwinみたいにpeercastが見たくて作っただけだからw