[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 02/01 06:02 / Filesize : 245 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Lisp Scheme Part33



1 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 17:58:58.06 ]
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part32
hibari.2ch.net/test/read.cgi/tech/1303299696/

■テンプレ
wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その8【質問よろず】
hibari.2ch.net/test/read.cgi/tech/1309940115/

348 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 13:10:38.02 ]
Luaが形なし言語で最速と聞いて
LispやSchemeからの変換機あるかなと思ったら
以外と誰も作ってない。Stalinと速度比較したかった。

349 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 13:41:07.50 ]
>>348 LuaJIT がだろ?
ついでに言っとくと Lisp 系言語は変数側に型がないだけで
変数に代入されるオブジェクトには結構厳しい型付がある


350 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 14:11:05.70 ]
Cから別の動的言語に吐き出すのが
あるからlisp->C->luajitは出来るが、
cluecc.sourceforge.net/
直接変換では無いので、C止めの1/10になりそう。

最近だと、llvm経由で言語間コンバートあるけど、やっぱり最適化は難しいのかな。
llvm-to-javascript
https://github.com/kripken/emscripten/wiki

351 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 18:43:29.05 ]
>>348
SBCLの圧勝です。

352 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:00:34.74 ]
attractivechaos.github.com/plb/
shootout.alioth.debian.org/u32/which-programming-languages-are-fastest.php
shootout.alioth.debian.org/u64/which-programming-languages-are-fastest.php
fixnumとunsafe使えばsbclの方が速いかな?

353 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:03:50.29 ]
Luaの場合は小細工なしで速いから

354 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 00:57:49.97 ]
Scheme subset -> Luaならantlrあたり使って簡単にできそうなのになあ
Schemeでambとかマクロ展開してからLuaに変換できたら高速だし最高なのに

355 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 03:20:49.77 ]
lisperが妄言はいてる間にlua最速!
いいうさぎとかめですね

356 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 05:10:08.81 ]
小細工とか妄言とかえらい攻撃的な人が来てるね。
というより主張だけが必死で話を聞いてない
この2つの考察から
スルーするのが適当じゃなかろうか。



357 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 05:32:36.83 ]
小細工と妄言は別の人なのだが
妄想が激しい人なのな

358 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 05:35:02.00 ]
Luaは速度を速くするための
特別な書き方しなくても速いんだが

359 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 05:55:52.20 ]
luaはschemeと似てるけどcall/ccみたいな厄介なのはないし
言語実装が1つだから無駄なリソースをあまり使わずに進化できたんじゃないかな
あんま知らんけど

360 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 08:31:33.05 ]
機械語最速最強、とか言ってるのとたいして変わらんしw

361 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 12:41:29.83 ]
まあ、LuaとかJavaScriptが近年速度面で頑張ってるのは事実だし、
Lispも他に置いてかれないように頑張りましょう、ってことで。

RacketあたりはJIT採用してたはずだから、頑張って欲しいね。


362 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 12:54:12.80 ]
そういや、数理システムの人が CL の最適化は全然足りない、
って論文書いてたよね。 2009年だけど。
あのあとCLの最適化って少しは進んだのかな。

363 名前:362 mailto:sage [2011/11/27(日) 12:55:09.42 ]
これね
「An evaluation of Major Lisp Compilers」by Seika Abe
cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/compiler-eval-b.pdf


364 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 13:50:36.94 ]
>>362
商用の奴もダメって?
あとネットで(要約の)閲覧できるならリンク頂戴

365 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 14:03:59.93 ]
>>364
あと, cmucl のドキュメントの中で最適化を施すと危険な場合ってのが列挙
してあって, その部分の見直しがほとんどなされてない
コンパイラ製造技術は上がって来てるのでその辺の対応が強く望まれる
あと吐き出したコード見ればわかるんだけど peephole が壊滅的にだめ


366 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 17:17:23.09 ]
最適化しないでも
小細工すれば速くなるし



367 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:11:26.72 ]
>>354
なんでわざわざ遅いLuaに翻訳しないといけないの?
Javascriptならブラウザ上で動くとかメリットあるけど。

368 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 01:41:29.85 ]
lisp cabinetでCCLを使っているのですが、
自作の関数をいくつか書いておき、起動時にそれらを自動的に読み込ませる、というのは
どこにどのような設定をかけばよいのでしょうか

369 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 02:08:39.13 ]
>>367
Schemeが亀のように遅いからだろ

370 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 02:55:02.84 ]
? 変なのがいついてるな。

371 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 03:08:05.18 ]
Luaが遅いとか無知すぎるわ

372 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 06:50:26.82 ]
Cへのトランスレータは以前から研究されているのに、なぜLuaへのトランスレータを性能の為に用意するの?
バニラのLuaでもCトランスレータを超える性能面のメリットがあるの?
……って意味じゃないの、「遅いLua」って言い回しは
本人に訊かないと本当の所は分からないが

俺は性能面ではなく、ClojureやNuのようなホスト環境とよく馴染むLispとしては興味あるけど
SchemeやCLのトランスレータは実物を見てからでないとあまりワクワクしないな

373 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 07:28:31.90 ]
>>364
要約というか本文が >>363 にあるよ
日本語。共通部分式の除去も定数伝搬もほとんどされてない、
ってのは悲しくなった。誰かCommon Lisp on LLVM作って。

374 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 10:56:48.73 ]
>>368
ホームディレクトリの.ccl-init.lisp。
そこで直接関数を定義しても良いし、適当なファイルをloadで読んでも良い。

Windowsだとバージョンでデフォルトのホームディレクトリの場所が違うから、

(translate-logical-pathname "home:")

を評価して表示された場所。


375 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 13:43:19.86 ]
Lisp -> C -> 機械語
Lua -> JIT -> 機械語
だとLuaの方が速いんだよな

376 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 13:59:02.19 ]
じゃあ tarai で比較するか



377 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:00:07.69 ]
実用性のない何の価値もないコードで比較してどうする

378 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:02:00.71 ]
>>377
文句言うなら代替案を出せよ。
代替案ない批判は何の価値もないよ。

379 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:08:36.34 ]
ここは核融合プラズマシミュレーションで

380 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:21:30.36 ]
shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=sbcl&lang2=lua

381 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:31:36.26 ]
>>380
Luaってどん亀Gaucheより遅そうだな


382 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:39:59.84 ]
型指定したコードと比べてどうすんだよ
馬鹿か

383 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:43:35.40 ]
出たものはとりあえず叩く人が居座ってるよな

384 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:44:43.14 ]
ドヤ顔で型指定しているコード持ってきて
Gaucheより遅そうって
馬鹿以外の何物でもないだろ

385 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:47:54.23 ]
何も出せずに文句しか言えない奴は哀れだねぇ

386 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:50:59.55 ]
馬鹿な発言しか出来ない奴よりはまし



387 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 14:59:20.86 ]
馬鹿はお前だろうw
shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=racket&lang2=lua

388 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 15:11:30.43 ]
なぜJITの付いてないバージョンのLuaと比べるんだよ

389 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 18:03:06.62 ]
luajit.org/performance_x86.html

390 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 18:41:59.63 ]
luajitでようやく比較対象になったレベルでしょ?
しかも組み込み用の糞言語w

391 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 18:52:17.99 ]
どん亀racketよりは速いお

392 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 19:56:21.62 ]
こんなところで油を打ってないで、一つでもマクロや関数の使い方
の理解を深めろって。^^; さもないと成長せんぞ。

393 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 22:37:16.30 ]
>>374
ありがとうございます!

394 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 23:59:23.73 ]
Gauche での JIT の実験結果からは今のところは導入は割に合わないと結論が出てる。
practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aVM%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96%3aJIT%3a%E4%BA%88%E5%82%99%E5%AE%9F%E9%A8%93
素人考えだと二倍とか三倍くらいの速度になるなら甲斐がありそうにも思うけど、
ポータビリティや保守性を捨ててまでやるほどではないということみたいだね。

Gauche に限らず JIT を入れた方が速くなるのは百も承知なんだよ。
それでももっと大事なことのために導入しないという決断をしたんだから、
遅いじゃないかと言われてもそういうものなんですというしかない。

逆に Lua は速度の方が大事だという決断をして他の諸々を捨てたんだから
そっちはそっちで不満なところもあるだろうさ。 銀の弾丸は無いって奴だな。

ところで Lua のロゴマークのデザインってセイコーインスツルのに似てね?
www.lua.org/
www.sii.co.jp/

395 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 00:06:47.55 ]
LuaJITだと2〜3倍どころ10倍くらいになってるな
保守性はともかくポータビリティは問題なさそう

396 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 01:05:55.94 ]
repo.or.cz/w/luajit-2.0.git/tree/HEAD:/dynasm
確かにluajitは個別にしか対応できないな。
googleのv8,naclみたいにx86,x64,arm,llvmでしか動かない実装考えるグループも出てきてる時代だけど、
schemeは置いといて、clは人材流入がなくて難しいのかも。
haskellでもx86専用SIMDコードが埋め込まれたり、llvmに載せちゃえとかあがいてはいる。
普通のコードをJITやCPU最適化で高速化するタイプの人材流入から
cl/.net/ruby/perl/phpあたりは置いていかれてる感はあるかもしれないね。




397 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 08:52:41.78 ]
.NET→MS実装は知らないが、MonoはLLVMバックエンドがある
Ruby→Rubinius
Perl→ParrotにLLVMプラグインがあるので、RakudoもLLVMを使える
PHP→PHP.rebootならHotSpot効くんじゃね?多分

398 名前:デフォルトの名無しさん [2011/11/30(水) 14:06:16.64 ]
lispのprin1やprincにある"1"や"c"は
何を意味しているのでしょうか?

399 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 16:53:13.14 ]
prin1 の 1 は適当につけただけだと思う。改行するのが print で改行しないのが
prin1 だったんだけど、read できるかどうかを考慮してさらに prin2 とか prin3
とかが作られていった。でも方言ごとに意味がバラバラだった。

princ は1文字しか出力しない方言があったので character の c なんだろうが、
そうでない処理系では無意味。


400 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 17:13:53.88 ]
そんなときはHyperspecを読め。1,2行程度で違いを説明してるから。

401 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/30(水) 18:11:09.37 ]
>>400
たぶん >>398 は名前の由来をきいてるんだと思う Yo

402 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 18:31:13.45 ]
>>398
ttp://hibari.2ch.net/test/read.cgi/tech/1309940115/355
質問者は同じ人?
回答になっているのか、わからんが。
まだ疑問があるなら軽く調べると英語でなんか出てくるんじゃないの。

403 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 20:20:15.60 ]
その名前の源流はn番目の評価結果を返すprog1とかprogn辺りだろうけど
適当すぎるんじゃないか?
さすがに挙動が違うのに番号変えただけは適当すぎるんじゃないか?
コボル人か?


404 名前:398 mailto:sage [2011/11/30(水) 20:45:35.38 ]
>>400-401
はい。動作は分かっていますが、由来というか名前をつけた設計者の考えを知りたいのです

>>402
いいえ、別人です


405 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 23:21:17.60 ]
HyperSpec の内容でいいとおもうけどな。由来は John L White 曰く
prin1 は PRINt characters of 1 object.
princ は PRINt the Characters of some Object.
print は PRINT compound object.
だったはず。

406 名前:398 mailto:sage [2011/11/30(水) 23:27:54.17 ]
なるほど、分かりました
HyperSpecではそこまで言及されていなかったので勉強になります
CLHS: Function WRITE, PRIN1, PRINT, PPRINT...
www.lispworks.com/documentation/HyperSpec/Body/f_wr_pr.htm



407 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 08:52:19.28 ]
確かprin1が生まれた当初は
一引数関数でアトムしか印字できなかったはず。
いわばprint下請け関数。

けどLisp interpreterは任意数引数関数にするの簡単だから…

408 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:55:32.37 ]
The history of print, prin1, and princ?
groups.google.com/group/comp.lang.lisp/browse_thread/thread/5addd533ea72207a/3d01f02a08dc0d5e
ググったら十年前の質問が出てきた。

409 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 01:20:36.63 ]
KMPが回答していたのですか
知りませんでした
なるほど

410 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 02:16:04.15 ]
渋谷lispみたいなイベントってもうないの?
ちょっと発表してみたい内容できそうなんだけど

411 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 02:41:55.54 ]
ついこの間あったばっかじゃねーか。
次まで待て。


412 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 03:41:06.82 ]
>>410
Shibuya.lisp主催でもメーリングリストだけ告知させてもらうにしても自分で動いて
みたらどうかな。公共施設だと場所の確保が難しそうだけど、年末・年始は日本に
戻ってくる人もいるかもしれないし、
地方帰郷組とかいて、変わったイベントになるかもね。具体的な開催予定候補日を
示して呼びかけだけはしてみたら良いと思う。反応が悪かったら取り下げるという
感じで。


集まりが悪くて、Shibuya.lisp主催では年一回という方向みたいだね。

過去一年間で気になった題名の記事
そろそろShibuya.lispテクニカルトーク第7回 やりませんか
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/feea5fbd70dfd899
Shibuya.lisp Tech Talk 開催頻度についての提案
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/568065ebcde1be21?tvc=2
Shibuya.lisp TTの改善案
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/63bde3be188a5404?tvc=2
第6回 PAIP読書会を開催します
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/c44c802420dc7a98#
>>411
どういう趣旨で発表したいのかわからないけど、入門者大歓迎でこじんまりとやるのも
いいと思うけどね。小規模でややクローズドなイベントでいいなら実家の一室を開放できる人も
いるでしょう。

低コスト会場の一例。
PCインフラは乏しそう。年末年始は休み。申し込み条件は中野区に関わりがある人
ttp://www.nices.jp/facility/zero/gakusyu.html
ttp://www.nices.jp/reserve/culture.html

413 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 09:30:23.56 ]
東京でしか無いから、残念だよね。

414 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 09:48:05.61 ]
小規模開催じゃ売名できないだろ

415 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 10:07:42.42 ]
コルーチンはリスト処理ではない
スタックやレジスタの処理だ
リストはメモリ割り当てが頻繁に起こって遅くなりそう

416 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 10:08:54.08 ]
誤爆



417 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 11:43:25.32 ]
>>413
道府県庁所在地でやれば5人ぐらい集まるんじゃないの?
文句を言わずに動け。
他分野の話だけど地方の県庁所在地で活発にやっている所があるよ。あと関数言語とプログ
ラミング教育とemacsと英語ぐらいのテーマでNPOってできるんじゃないのかね。原文(英語)
ハンドブックを教材に使って、辞書を片手にプログラミングさせるのが良いと思う。
全然訳せなくて使い方が分からない場合に手助けする感じだと人は伸びるよ。

あとttps://groups.google.com/group/Shibuyalisp/の集客問題は何かの足しになると思う。

418 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 12:41:06.91 ]
勉強会とかならいいけど、5人相手に発表とか悲しさ炸裂だろ。

別にShibuya.lispじゃなくて、普通にネットで発表しても、
興味深いもの、ことなら反響あると思うけど。
この前の竹内関数とか盛り上がったし。


419 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 12:49:09.04 ]
いつどこの勉強会で盛り上がったん?

420 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:18:25.51 ]
なんで勉強会が盛り上がるとかいう話になるんだよw

この前takを利用して音鳴らすってのが、Lisp界隈で話題になって盛り上がってたでしょ。
元ネタの所に御大降臨したりして。面白いものならどこで発表しても反響がくるんじゃない?
って話だよ。

盛り上がってる勉強会とかなら熊本とかなんじゃないの? よく知らんけど。
本人たちは楽しそうにやってるのは分かる。


421 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:35:41.28 ]
今、勉強会の話しているからだろ

422 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:36:58.78 ]
Lisp界隈は面白いことしている人が
表に出てこないな

423 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 15:11:27.27 ]
>>418
形態は勉強会でもなんでもいいでしょ。

ネットで発表して得る物と人前で発表して得る物って違うんじゃないの。
人前で発表して得る具体的な物って言えないが、ネットコミュニケー
ションonlyの限界ってあると思う。

年1回でもいいから地域で定期的にやって団体をつくれば、偉い人を呼び
やすいし、他県勉強会の遠征もしやすいでしょ(車出す・出さないとか)。

ヘタレlisper/schemmerでいいから代表として誰かが立てば、忙しい
lisper/schemmerも参加しやすくなるんじゃないの。代表に求められるのは、
lispの能力より雑用処理能力だよね。

424 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 22:21:06.15 ]
何故ハイパーカードは死ななければならなかったのか - karasuyamatenguの日記
d.hatena.ne.jp/karasuyamatengu/20111130/1322671954
>SK8というNetwton向けのLisp Machineを殺したのはジョブスに違いない

yebo blog: なぜ、HyperCardは死ななければならなかったのか
yebo-blog.blogspot.com/2011/12/hypercard.html
>彼は、ニュートンのLispマシン化させるSK8の死の背後にいたことは間違いない。

この点がよく分からないのですけど、newtonとlispにはどういう関係があるのですか?

425 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:31:00.58 ]
往年のMCLファンの俺が答えるよ。
en.wikipedia.org/wiki/SK8

426 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:44:48.44 ]
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /




427 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:47:00.11 ]
これ、昔からソース公開してるんだけど、
sitアーカイブだからMacないと展開に苦労するし、
ライセンスはここ読めってページがなくなってるしw
sk8.research.apple.com

428 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:50:13.95 ]
つ ttp://www.vector.co.jp/soft/dl/win95/util/se140653.html

429 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 19:14:05.58 ]
普段の雑多な処理(bashで書くと64行以上のスクリプト)ってlisp(schemeも可)で書く? bashで書く?
あと64行未満だったらどうされますか? 行の量レベルによっての取り組み方の違いとかをご教授して
いただけませんか?
LispでもLinuxディストリ間ぐらいだったら可搬性も楽に高められるかな? Lispだと他の人が読めないよ
というクレームが来たら最悪違う言語で書き直せば良いんだよね。そのスクリプトは製品ではなく数ヶ月
後までに書き直しておけば問題なしという条件で。

あと処理のアイデア・メモはみんなlispで書いちゃうのかな?

430 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/12/05(月) 20:09:55.71 ]
>>429
64行ってのはどこから出てきた数値?

431 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 20:13:34.54 ]
ざったろくじゅうし

432 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 20:15:41.60 ]
(expt 2 6)

433 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 22:44:29.38 ]
(ash 1 6)


434 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 23:09:55.33 ]
>>429
UNIXの得意なことはshでやる。
fileやprosessにまつわるバッチ処理。

435 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 00:28:56.29 ]
>>429
#!/bin/perlとか書くくらいならgoshする
パイプつなげてガリガリとコマンドを呼び出してステートチェックするならbashで書くわ

書きやすい方の道具使うべきなんであってLispありきってのは間違いじゃろ

436 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 02:26:25.51 ]
せっかくだから、どんな小さなスクリプトもLispで書くことにするぜッ



437 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 07:30:19.88 ]
>>435
bash等と比べると書きやすいで言えばLispだし、ブログのネタにしやすいのもlispでしょ。
つまりはLispありきでいいんじゃないか。

438 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 17:39:58.04 ]
Lisp 1000tips wiki つくろか

439 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 17:54:14.86 ]
>>438
期待してる。

440 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 00:05:07.89 ]
common lispのmapcにあたるのは
schemeではmapになるのでしょうか?
そして、common lisp のmapcarにあたる関数は何でしょうか

441 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 00:27:18.03 ]
mapc => for-eachでmapcar => map。
ただし、mapcと違ってfor-eachが返す値は未定義。


442 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 00:41:59.82 ]
ありがとうございます 勘違いしていました
気になったのですが、common lispのdolistとmapcは何が違うのでしょうか

443 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 01:16:57.98 ]
使う場面とできることは似たようなものだけど、根底にある思想が違う。
dolistはより手続き的。リストの要素で変数を束縛してブロックを実行する。
mapcはより関数的。リストの要素に関数を適用する。

cl.cddddr.org/index.cgi?%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB#H-xy6b4yo1bpqy


444 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 01:34:56.54 ]
>>443
すっきりと腑に落ちました。
これで使い道に迷うことはなさそうです。

445 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 02:18:53.89 ]
ごめん。ひとつ大事なこと思い出した。

dotimesとかもそうなんだけど、dolistは

www.lispworks.com/documentation/HyperSpec/Body/m_dolist.htm#dolist
> It is implementation-dependent whether dolist establishes a new binding of var
> on each iteration or whether it establishes a binding for var once at the
> beginning and then assigns it on any subsequent iterations.

って決まってて、処理系によってはループ変数が破壊的に変更される可能性がある。
そういう場合にクロージャとかでその変数を捕捉すると悲劇が起こる。

具体的にはこう(↓)なる。

blog.practical-scheme.net/shiro/20060110-for

mapcは引数で渡すからこの問題は起きないはず。これは覚えておいた方が良いかも。


446 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 12:05:04.37 ]
動作がよくわからないので質問させてください。

(case 0 ((0) 1))
→ 1
になるので
(case 0 (((if #t 0)) 1))
→ 1
になって欲しかったのですが
→ ()
になってしまいます。

case が eqv? で比較してるので
(eqv? 0 (if #t 0))
が #f になるかと思ったんですが、これは #t になります。

case 文の 条件部分(呼び方がわかりません。)に
if 文を使うことはできないんでしょうか?



447 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 12:21:55.04 ]
>>446
(define a 0)
(case 0 ((a) 1))
-> ()
(case 'a ((a) 1))
-> 1

448 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 19:06:31.53 ]
>>446
case の条件部分はただのデータで、評価されない。
なのでその書き方は 0 という整数と (if #t 0) というリストを比較している。


449 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 20:18:39.48 ]
>>446
今度からそういうときはcondを使ってね

450 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 20:30:54.67 ]
ウズウズ

451 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 21:34:09.97 ]
>>447-449
レスありがとうございます。
condを使えば思ったとおりに動かすことが出来ました。

452 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 19:26:16.97 ]
この英語2chはなんなんだ。微妙に活気があるんだよなあ。
ttp://dis.4chan.org/tech/

453 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 19:36:34.40 ]
海外のオタクが双葉を元にしたサイトだよ

454 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 00:23:20.84 ]
schemeで画像扱う時って普通にvectorのvectorにするものなの?

455 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 03:12:38.88 ]
u8vectorで

456 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 23:59:47.79 ]
M.Hiroi's Home Page / xyzzy Lisp Programming
www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp02.html

listの説明の図がわかりやすいです
画像ならまだしも、テキストでセルの要素を表現できることに驚きました
このような図を作成するにはどういうツールを使えばよいのでしょうか



457 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:18:56.26 ]
そのサイトの管理人に聞いたほうが早いんじゃね?

458 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 01:33:40.73 ]
まあたぶんテキストエディタで手書きだと思うけど

459 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 02:15:31.71 ]
xyzzyの罫線モードとかじゃないの

460 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 04:05:42.47 ]
lispはHaskellなんかと比べるとちゃんとした関数型言語じゃないって言う人がいますが、どうですか

461 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 04:49:30.79 ]
>>460
副作用のある関数が普通に書けるからじゃろ


462 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 12:42:42.40 ]
Haskellは副作用をする部分を隔離してるもんな。そこで副作用させてる
から、あるなし論争があるけど、ML系でも異色でちょっと取り扱いづらい
けど人気があるよね。モナド信仰なんだろうかな。サクサク作っていける
部分もある。

463 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:43:52.85 ]
c++とlispはマルチパラダイム言語

464 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 18:04:26.40 ]
プログラミングGauche の第15章 テキストの構築を読んで
sxml形式で記述した外部ファイルを読み込み
xmlに変換して他のファイルに出力したいと思いました。
ですが、方法がわかりません。

sxmlのデータが*sxml-data*にあるとき
(use sxml.serializer)
(print (srl:sxml->xml *sxml-data*))
とすればxmlのデータを整形して出力することと、
返還後のxmlデータが*xml-data*にあるとき
(with-output-to-file filename
(lambda ()
(format t "~A" *xml-data*)))
と書くとfilenameで指定したファイルに*xml-data*が書き込まれるだろうことはわかりました

ここで行き詰まったのは外部sxml(*.scm)を読み込んで変換し出力するという処理の
とくにはじめの部分と処理全体です

(with-input-from-file filename...)
で読み込んだファイルを一文字ずつや一行ずつ処理できるのはわかったのですが、
一度に読み込む方法はあるのでしょうか

最終的には
karetta.jp/book-node/programming-gauche/197708
の「SXMLでは次のとおりに記述します。」直後のコードを保存したファイルを読み込み、
それを別ファイルにxmlとして保存する関数を作成したいのですが
可能でしょうか?

465 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/12/11(日) 20:04:04.39 ]
>>464
read

466 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2011/12/11(日) 20:28:21.93 ]
>>460
関数型とは何かという明確な定義は無いので、ちゃんとしたというのがどの程度のことを言うのかで判断が分かれると思いますね。
Haskell が「純粋関数型」と呼ばれることからもわかるように、その逆の純粋でない関数型もあるわけで。
純粋でないことを以ってちゃんとしてないというのであれば「そうですね」という感じかなぁ。

純粋とそうでないのとを分ける基準があるのかもよくわかりませんが、
あたりまえに副作用を起こせるのを純粋とは言えないのは間違いないでしょう。

そもそも LISP は何でも有りの自由なところが特徴だし、
Common Lisp や Scheme はマルチパラダイムを標榜してもいるので、
LISP という言語が関数型としてどうかという問いはあまり意味がないですね。

あなたがそうしたければ純粋関数型的な語彙を組立ててそのスタイルを貫く自由は与えられています。



467 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 23:36:25.04 ]
>>465
ありがとうございます

468 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 06:30:20.68 ]
lispの特徴はS式構文でしょ。

469 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 11:33:48.29 ]
昔はGCとかSchemeの継続とか強力なOOシステム(Flavors, CLOS)も特徴だったけど、
今は他の言語でも見られるしね。S式+マクロはLisp族だけだね。

470 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 11:34:43.39 ]
ADTを直接記述出来る事かと。

471 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 14:14:41.71 ]
リストの操作で質問します
(val (lis1) (lis2 (lis3)))
このリストに別のリスト(lis4)を追加して
(val (lis1) (lis2 (lis3) (lis4)))
のようにlis2のリストの末尾に追加したいです
そのあとで追加したリストも
(val (lis1) (lis2 (lis3) (lis4) (lis5) (lis6)))
というふうに後ろに挿入したいのですが、
どういう操作をすればよいでしょうか

472 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 14:57:15.97 ]
>>471
そういうことをやりたくなるってことは、リストが分かってないってこと。

473 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 19:27:28.75 ]
深いすなあ

474 名前:デフォルトの名無しさん [2011/12/12(月) 21:30:27.25 ]
(set-cdr! (last-pair (caddr ls)) (cons ls7 '()))

475 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:17:16.53 ]
(setq l '((1) (2 (3))))
(defun append-tail (l m)
(append (list (first l))
(list (append (list (first (second l)))
(list (append (second (second l))
m))))))

CL-USER> (append-tail l '(4))
((1) (2 (3 4)))
CL-USER> (append-tail (append-tail l '(4)) '(5))
((1) (2 (3 4 5)))
CL-USER> (append-tail (append-tail (append-tail l '(4)) '(5)) '(6))
((1) (2 (3 4 5 6)))

476 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:24:46.15 ]
>>474
意図した通りに動きました!ありがとうございます




477 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:31:47.17 ]
>>475
副作用無しのその動作も魅力的です
ありがとうございます

478 名前:475 mailto:sage [2011/12/12(月) 22:45:13.92 ]
ちなみにこの形だとpush, popが使えて楽だよ。
CL-USER> (setq n '(((3) 2) (1)))
CL-USER> (push 4 (first (first n)))
(4 3)
CL-USER> n
(((4 3) 2) (1))
CL-USER> (push 5 (first (first n)))
(5 4 3)
CL-USER> (push 6 (first (first n)))
(6 5 4 3)
CL-USER> (push 7 (first (first n)))
(7 6 5 4 3)
CL-USER> n
(((7 6 5 4 3) 2) (1))
CL-USER> (pop (first (first n)))
7
CL-USER> n
(((6 5 4 3) 2) (1))

479 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:52:01.53 ]
>>471
リストをひとつのオブジェクトに見立ててるように見えるけど、
そういう場合は、各要素へのアクセサを定義した方が良いよ。
単純になるし、保守性が良くなる。

あるいは、素直にクラスとか構造体、レコードで定義した方が楽。
単なる演習とかならどんな書き方しても良いと思うけど。

480 名前:475 mailto:sage [2011/12/12(月) 23:42:26.08 ]
>>471
具体的に書いてよ。
中高一貫校の中学1年生が英作文の問題を必死こいて解いている子に関係代名詞を使うとシンプルな文章になって
読みやすいよと言われても語彙や文法を知らないのですよ。Web参考書は揃っているんだけどw

481 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:18:03.51 ]
>>480
詳しく説明するのが面倒だった。食いついて来たら説明する予定だったけど。
てーか取り敢えず落ち着けよ。明後日の方向に弾飛んでんぞw

(define (value-name v) (cadr v))
(define (value-value v) (caddr v))
(define (set-value-name! v x) (set-car! (cdr v) x))
(define (set-value-value! v x) (set-car! (cddr v) x))

(define *x* '(value "x" ()))

(value-name *x*) ;=> "x"
(value-value *x*) ;=> ()

(set-value-name! *x* "y")
(set-value-value! *x* (append (value-value *x*) (list 0 1 2)))

(value-name *x*) ;=> "y"
(value-value *x*) ;=> (0 1 2)

こういうイディオムのこと。クラスやレコードはそれらのWeb参考書読んでくれ。

482 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:23:05.99 ]
いや、イディオムってのも変か。パターンとか常套手段でひとつ。

なんでもリスト使うようなプロトタイプを最初に作るときとか、
後でデータ構造を差し替えたり、コードの可読性を上げるためにやるでしょ?

483 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:47:15.15 ]
Schemeで書いたのは、いじめか。

Python使いにRubyで答えればプログラマとしての幅も広がるし、良いことづくしだ。

484 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:52:58.74 ]


485 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:56:25.81 ]
いやいやいやいや。>>474の人もSchemeだけど、「動きました!」って言ってんじゃん!
そもそもCommon LispともSchemeとも書いてないんだから。

マジレスすると、CLerだった場合はset-car!をrplacaに読み替えれば分かると思います。
普通は汎変数使うと思うけど。

486 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 03:25:02.31 ]
schemeは教養だから
CLerは当然schemeぐらい読めるから



487 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 07:57:52.15 ]
Cは教養だから万行デバッキングできるよね

488 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 09:49:08.78 ]
racketはset-car!がありません

489 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 09:50:25.93 ]
set-mcar! があるだろ。

490 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 22:15:12.19 ]
Lisp方言で良いなら教養としてarcで書くのもあり?
gaucheに接近するかと思ったら全然ダメだな。
arc> (time (tarai 12 6 0)) ;; arc3.1
time: 11241 msec.
arc> (time (tarai 13 7 0))
time: 83869 msec.

> (time (tak 12 6 0)) ;; Racket
cpu time: 197 real time: 197 gc time: 0
> (time (tak 13 7 0))
cpu time: 1480 real time: 1481 gc time: 0
> (time (tak 14 8 0))
cpu time: 11046 real time: 11047 gc time: 0

gosh> (time (tak 12 6 0)) ;;gauche
; real 0.715
; user 0.710
; sys 0.000
gosh> (time (tak 13 7 0))
; real 5.214
; user 5.220
; sys 0.000
gosh> (time (tak 14 8 0))
; real 38.301
; user 38.060
; sys 0.000

491 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 08:06:59.33 ]
Racket 速いな。

492 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:29:29.96 ]
そりゃ、JIT搭載だもの。

docs.racket-lang.org/guide/performance.html#%28part._.J.I.T%29

493 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 10:04:57.25 ]
やだ Racket 格好いい……

494 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 13:17:09.14 ]
既出した気がするけどこういうのもあるよ。
ttp://www.cs.utah.edu/~mflatt/benchmarks-20100126/log1/Gambit_20benchmarks.html
ttp://www.cs.utah.edu/~mflatt/benchmarks-20100126/log2/Benchmarks.html

495 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 18:59:12.22 ]
387 名前:デフォルトの名無しさん[sage] 投稿日:2011/11/28(月) 14:59:20.86
馬鹿はお前だろうw
shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=racket&lang2=lua

496 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 17:39:51.40 ]
lisp.soup.io/post/8879455/Still-from-Serial-Experiments-Lain-via-lain
これって、life関数を呼び出すたびにworldを作っているのか…




497 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 18:37:41.57 ]
>>488
sicpプラグインではあるけど、set-mcar!をエイリアスしてるみたい

498 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 21:43:56.97 ]
Lisperがgcc on LinuxでCの手習いで何かの分野の処理をやるとしたら何の分野がいいかな?
コーディングがマゾい奴はやりたくない。うひょー、コーディング楽しいって感じの週末にしたい。

499 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 22:48:59.80 ]
LISPインタープリタの原始的なやつを作る。

500 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 23:05:37.17 ]
つまらん

501 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/12/16(金) 23:17:28.13 ]
そしてその LISP で本格的な LISP 処理系を作る。

502 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 23:20:12.36 ]
つまらん

503 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:11:27.04 ]
>>498
マルチ死ね

504 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:39:57.42 ]
>>499
だからマゾいの嫌だって言っているでしょ。インタプリタならlispで書いた方が楽でしょ。
Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。
>>501
つまらないし、目的がみえてこない。

505 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:47:17.36 ]
自分で考えたら?

506 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:55:38.30 ]
>504
おまえは499を否定しているがハードウェアべったりの処理系でGC付き言語を組むとかなり楽しいのだが。
GCは奥が深いぞ



507 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 06:08:02.26 ]
>>504
どうせなにも出来ないから黙っとけ。

508 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 13:38:40.94 ]
>>504
マゾいのが嫌だっていうから原始的なやつって書いたのに。
そもそも手習いが目的なのに「〜の方が楽」とかアホだろ。


509 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:07:58.23 ]
>>504
>Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。

はい

510 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:19:37.39 ]
必要な時に出来ないのは、偏見ではなく無能。

511 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:03:36.80 ]
プログラムを組むときに一番大事なのは用件を最短で満たせる適切な言語を選ぶことだけど
プログラムを楽しく組む為に必要な事は「いつでも初心でいられる」事だと思っている

そんなわけで>>504 はこの土日もグズグズすると感じてしまうのであった。

;;;仕事でもプライベートでもプログラムを書くのを楽しくするコツは2行目ね


512 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:20:46.27 ]
ずいぶん参考になった
ほんとうにありがとう

513 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 07:27:48.68 ]
schelogってGPLなの?
schelogをrequireしたらソース公開しないといけないの?

514 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:12:28.02 ]
wiki.call-cc.org/eggref/3/schelog
これを見る限りではLGPL
LGPLは(GPLも)プライベートな利用では何の条件も要求しない
頒布する場合に条件が要求されるが、具体的な条件はお前のコードとSchelogを「リンク」する方法による

515 名前:デフォルトの名無しさん [2011/12/19(月) 15:37:56.70 ]
LLGPL(Lisp-LGPL)とBSDライセンスのそれぞれのライブラリを使うアプリケーションを作り
(clispとsbclの2パターン)
lisp処理系をインストールせずに使えるよう
実行バイナリ化して配布しようと思うのですが、
配布する際のライセンスは結局どうなるのでしょうか
lisp処理系とライブラリのライセンスそれぞれの影響がよくわかりません

使うのは↓のライブラリです
www.cliki.net/Clack
www.cliki.net/CL-PPCRE

516 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:47:34.98 ]
>>515
cl.cddddr.org/index.cgi?%E8%89%AF%E3%81%8F%E3%81%82%E3%82%8B%E8%B3%AA%E5%95%8F#H-2v8nnc63s7pll

ライブラリについては、手を加えなければ、ライセンスに影響を与えない。
その場合、アプリケーションには自分の好きなライセンスを設定できる。

ただ、含まれるライブラリのバージョンのソースコードの入手手段の保証や、
それぞれのライブラリのライセンス本文の提示とかはしないといけないから、
その辺はしっかり対応しないといけない。

ClackはGitHubだから、対応するリビジョンのリンクでも明記しておいて、
あとはそれぞれのライブラリがどのライセンスを採用してるのかを明記して、
LLGPLとBSDライセンスの本文を含めれば良いんじゃないのかなー。あと著作権表示。




517 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 00:32:23.27 ]
>>516
まさに探していた説明です
アプリケーションには任意のライセンスを設定できるのですね
そのうえで使ったライブラリのソースコードのありかとライセンスを表示する
すべきことがわかりました

518 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:55:11.33 ]
ということは
biglooやgambit-CでGPLなライブラリをuseやrequireしたものをCに変換して
Cをバイナリーにした場合はソース公開の義務はないってことでいいのかな

519 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:17:22.44 ]
GPLはリンクの方法を区別しないから(少なくともFSFはそう思ってる)、
それ普通にGPLに感染すると思う。

www.gnu.org/licenses/gpl-faq.ja.html#IfLibraryIsGPL

LGPLならライセンスは影響を受けないと思うけど、
静的リンクだから全ソースコード公開の義務はあると思う。

ja.wikipedia.org/wiki/GNU_Lesser_General_Public_License#LGPL.E3.81.AE.E7.89.B9.E5.BE.B4

LLGPLなら確か大丈夫なはず。ただ、ライブラリのコード配布は必須。
最後の段落。

opensource.franz.com/preamble.html


520 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:30:15.93 ]
chickenはeggの分割コンパイルできるんじゃないの?
動的リンクにできそうな予感が

521 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 11:04:08.18 ]
>>519の最後のリンク先を見ると
LLGPLのライブラリを静的リンクして実行ファイルを作った人は
使ったライブラリのソースコードを(公式サイトだけではなくて)独自に配布しなければならぬ
こう理解したけどこれでいいのかな

522 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 12:04:43.34 ]
プラグインとかならともかく
動的リンクでも根本機能として必要ならダメだよ
使うのをきっぱりやめた方が早い


523 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 12:38:42.75 ]
>>520
できるの?
初めて聞いたんだけど

524 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 14:05:09.96 ]
>>522
それはGPLの話(>>518)だよな?
LGPLの4.d(LGPLv3の場合)では「"Minimal Corresponding Source"と"Corresponding Application Code"の配布」と
「適切な共有ライブラリ機構の使用」のどちらか一つの実行が条件だから
後者を選択した場合はソースの配布は義務付けられないと思うが

525 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:01:16.33 ]
>>521
入手できる手段を保証すれば大丈夫じゃないかな。アクセスできるかが重要なので。
自分は、GitHubとかなら特定リビジョンのリンクの提示だけでいけると解釈してる。
もちろん、配布元が閉鎖とかしちゃったら、自分で配布しなくちゃいけない。
この辺はGPLやLGPLの思想を汲んでおけば、そう大外しはしないと思う。

もちろん、会社の商売でやるなら法務と相談必須だけど。


526 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:23:32.92 ]
一応根拠補足。

LLGPLの最後の段落に"in accordance with the terms and conditions of the LGPL"とあり、
LGPLの6.dでソースコードを同等のアクセス手段、同じ場所で提供すれば良いとされているため。
ダウンロードページに両方のリンクを張っておけば、多分これを満たすと思う。

sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_Library_or_Lesser_General_Public_License




527 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:52:20.72 ]
心配ならソースのzipを読み込んだコアを配布すれば?
ある関数実行したらファイルに書きだすようにしといて。

528 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:57:29.14 ]
そんな面倒なことするくらいなら、普通にソースも一緒に配布するだろ……。


529 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:08:30.14 ]
元のお題(>>515)が実行ファイル一つだけにしたいというものだから。

530 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:16:51.41 ]
READMEすら同梱できないとか、>>515のどこにそんなストイックな条件が書いてんだよw
まあ、ある意味そういうのも厨二心をくすぐられてwktkするけど。


531 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:43:22.27 ]
気になったんだけど、common lisp絡みの案件で
ライセンス上問題となった事件は何かある?
それとfranzがllgplをわざわざ設けた経由が知りたい
llgplでなくて修正BSDで実用上十分だと思うんだけど
裏事情があるのかしら

532 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 18:11:50.54 ]
ソースコードの再利用について考え方が全く違うもので十分という意味がわからない。

533 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 00:56:24.51 ]
GPL系と商用のデュアルライセンスの話なのか?

534 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 06:11:56.89 ]
名言来たな。「LLGPLじゃなくて修正BSDで十分」
どうみてもコピーレフトへの宣戦布告です本当にありがとうございました。

535 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 06:53:08.91 ]
GoogleがV8に修正BSDを採用した経由が知りたい
修正BSDでなくてUnlicenseで実用上十分だと思うんだけど
裏事情があるのかしら

536 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 12:12:10.46 ]
>>531
修正BSDを開発者の視点から考えてみるといいよ
修正BSDでライセンスされているプログラムは、著作権表示の点をクリアすれば
ソースコードを公開しなくてもいい
そのプログラムを開発した人にとっては自分が作成したコードを見せなくていいが
他の開発者からするとそのプログラムのコードを見る機会がなくなる
誰にとってそのライセンスがいいものかは立ち位置によって変わることには
注意したほうがいいかも



537 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 14:13:00.71 ]
>>536
>そのプログラムを開発した人にとっては自分が作成したコードを見せなくていいが
いまどきスパゲッティコードを書いているわけでもないだろうよ。
>他の開発者からするとそのプログラムのコードを見る機会がなくなる
見る機会がなくなるのも嘘な気がするなあ。最新技術としての賞味期限過ぎたら
公開しようかなと考える人・団体はかなり存在するんじゃないの。

BSDスタイルライセンスの良いところは公開しない・するといつでも自由に切り替えられる
ところだよ。

538 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 18:38:52.63 ]
>>537
NDAで公開出来ない物があるからじゃろ、自分のコードが綺麗でないから公開したくないってのとは別の問題。


539 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 00:06:49.95 ]
>>537
納入するときはツールを使ってわざとスパゲッティコードにしてる俺が来ましたよ

540 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 02:15:29.56 ]
>>539
そのツールは可逆性があるの?
鍵がないとそのツールを使えば可逆できるなあ。

541 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 02:29:56.35 ]
何を言ってるんだお前は。

542 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 07:37:11.95 ]
立て続けに見当外れなことを言ってる奴は釣ってんのか?

543 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:00:00.91 ]
>>539
マクロを全部展開するだけでもスパゲッティー化できるよね
前に見たbiglooのソースもあきらかにやってたし


544 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 17:16:02.39 ]
おれもコードランダム化させるの作ったよ
自分でハックしてみたが方式が判ってても追跡困難だった
もう二度とやりたくない

545 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 17:53:04.64 ]
コードランダム化のコードを
誰か公開したりしらいいなあ

546 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 19:06:20.31 ]
実行速度を落とさないで難読化なら
変数や関数の名前をランダムなものに変えたり
実行されない関数を追加したり
あと他に何があるかな




547 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 19:33:11.80 ]
実行されないはずの意味ありげな処理追加。
実行されたら、それはそれで異常検出。

548 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:38:44.07 ]
>>546
やっぱりマクロの魔術師でしょう :-)

これRubyちゃうん?
いやCommon Lispさ(ふっ)

とか

549 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:44:35.94 ]
納入先がWindows使ってたら、改行コードをUNIXの改行コードにする
改行してしてなくてもいい場所は改行を削除
コメント部分の日本語を全部文字化けさせる
コメント部分に実行ファイルの機械語をASCIIコードに変換して追加
diffの差分ファイルを納入

550 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:03:45.81 ]
それ途中難読化じゃなく処理系を相手にチキンレースしてるだけでは

551 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:18:29.70 ]
納入しなければならないのはきちんと動くけど人間が読めないコード
相手に解読されたら仕事が来なくなる

552 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 00:25:44.16 ]
せめてLispのケースで話して(><)

553 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 00:35:06.37 ]
LISPプログラムを他人に渡すなんて、大学の研究室の後輩に渡すくらいしかなかった
当然、究極のスパゲッティにして渡したけど

554 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 00:37:44.49 ]
カレーが少し余ったんでスパゲティ茹でて一緒に炒めたらおいしかった

555 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 01:59:19.41 ]
>>553
先輩のプログラム、センス悪いな。糞じゃん
あのひとエラソーにしてるだけだったよな。いなくてせいぜいだ
とか言われてるかも。

556 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 02:00:16.59 ]
>>554
次は、麻婆豆腐にスパゲティ入れて上にチーズをかけてオーブンで焼いてみ。



557 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 02:05:49.39 ]
>>555
そのプログラムを即座に改良できるのが俺だけ という優越感

558 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 03:45:54.90 ]
まあいいんじゃないの
自分で一から書く気になってくれれば

559 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 03:55:01.34 ]
先輩がせっかくテーブル拭きプログラムを書いたのに姑のようにまたテーブル拭きプログラムを書いていいか、悩まないか。
そういう先輩に限って卒業も飲み会に参加して、「まだあんな(俺の)プログラムを使っているの」とバカにしつつ顔が
喜んでいたりするんだよなあ。

560 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:32:46.08 ]
難読化したソースなんか納入したら検収で落とすだけだが。
当然納入できなかったんだから違約金は払ってもらう。

561 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 00:55:59.54 ]
お前みたいな奴はマ板に行ってくれ。

562 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:09:07.85 ]
ちょっと遊びで処理系実装してるのだけど
symbolとquoteの実装方法で参考になるコードどこかにないでしょうか
mosh?


563 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:19:30.02 ]
何で実装しているのか、書けよ

564 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:57:54.59 ]
c

565 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 06:58:35.92 ]
ホビットが
#define long SCM
とかしててびっくりした

566 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 07:13:22.47 ]
何を参考にしたいのかによるな。
原理的なとこ知りたいならミニマルな処理系がいいんじゃない? tinyschemeとか。
つーてもsymbolは単に辞書に登録した文字列だし、quoteの処理はもっと高レイヤ
なのでLispで書いてあるevalの実装あたりを見ればいいんじゃないか。



567 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 11:29:44.73 ]
Schemeって他の処理系の定義重複部分をコピペすると書く所ほとんどないのか。

568 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 11:41:02.55 ]
>>562
mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1

初学者がqouteの処理だと思っていることは、ほとんどreadがやっている。


569 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 15:35:57.68 ]
>>568
SICPって何回くらい読むもの?
再来年の年初めぐらいから読み始めようかな。

570 名前:デフォルトの名無しさん [2011/12/24(土) 16:09:36.63 ]
難読化なら一度速度優先でコンパイルしてアセンブラをはかせる。
そのコードを今度はCなりLISPなりに戻してやればよいじゃないかと思う。

動けばよいコードを納品って契約ならコンパイラでアセンブラはかせて、
それをそのまま納品でよいじゃないかともおもいます。

昔移植でアセンブラからCへコンパイルするコードは作ったことがあります。
半自動でしたけど9割は自動化して移植してました。

571 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 16:19:20.59 ]
>>570
環境って何?

572 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 22:10:55.29 ]
環境は組み込み。
68アセンブラからCへコンバート。
IOは仮想化して対応した。

なのでアセンブラまで落とせればそれを高級言語に再変換してあげれば、
それだけで難読化しているようなもんだと思うよ。

動作の保証はテストを書いておいてそれを通すとある程度担保てきると思います。

573 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:34:26.37 ]
いま難読だい?

574 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:37:57.62 ]
新しい構文を作るマクロって可読性下げてるよね。マクロ禁止みたいなコーディング規約とかある?

575 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:39:19.87 ]
そういうのは規約というよりプロジェクトルールだろ
>>574はマグロ納品禁止な

576 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:42:17.73 ]
一行目がマジレスなのか二行目のギャグを言うためのフェイクなのか分からん



577 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:46:44.33 ]
lispやschemeを使った仕事ってあまりイメージがわかないんだけど
どういった用途に使われているのかな

578 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:47:55.58 ]
他人のソースにdefin-syntaxなんて出てくると
この野郎・・・!て思うわけよ


579 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:50:34.67 ]
つーか複数人でlisp使うプロジェクトなんて実在するのかよ
ゲリラ的に入れちゃいました、って案件ばっかりだぞ

580 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:52:13.24 ]
」なに・・・これ・・・」
「lispですよー知らないんですか哀れ」

581 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:54:26.95 ]
普段からストレスの連続なのに括弧のカタマリなんて出遭ったら発狂するだろ

582 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:55:14.01 ]
なんだ。やっぱプロジェクトで使われないから、そういうルールもないのか

ポール・グレアムはlispでサイト作ってたんでしょ
「 10人のLispハッカーが集められないようなら、 たぶんあなたの会社はソフトウェアを開発するのに適さない都市にいるんだ。」とか言って
結局ヤフーにM&Aされて書き換えられたんだっけ

583 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:59:16.46 ]
組み込むにしてもGCの無い軽い言語入れちゃうし、
あえてlisp入れてもそれほど面白くない

584 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:18:41.49 ]
マクロ禁止してまでLisp使う意味があるか疑問。それなら他の言語使えば良い。
JavaとかPythonとか、自分の足を撃ち抜きづらい言語が他にあるんだし。

具体的に、どんなマクロが可読性を下げると感じるのかには興味がある。
if*が気に喰わないとかならまあ理解できるけど、aifとかなら賛成できない。

あと、旧ITAとかMSIとか、プロジェクトで使っているとされる所は普通に存在するし、
そもそもFranzとかSBCLとかCCLの処理系開発者連中自体が複数人で開発してる。
興味があるならMSIのセミナーでも行ってみれば良いんじゃない。

585 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:21:33.42 ]
>>584
if*ってどんなマクロなの?

586 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:24:30.65 ]
一貫した構文がないこと自体、可読性が低いと思うけど、違うの



587 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:25:22.08 ]
>>585
こういうの。個人的には最高にキモいと思うけど、好みは人それぞれなので否定はしない。

cadr.g.hatena.ne.jp/g000001/20100529/1275126086

588 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:41:18.98 ]
まあ普通はPython使うけども、後学のために使ってみた
いずれにせよ書き捨て用だけど

589 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:06:01.08 ]
>>586
関数で抽象化するのと、マクロで抽象化するのと、どう違うかな?
どちらも特定の入力を受け、特定の出力を返すものだけど。
構文特有の話ではなくて、実は抽象化の設計自体が悪かったりしないかな?

もちろん、Cで{ }をBEGINとENDにするような、ああいう単なる置き換えについては、
批判が付いて回るのも当然だと思うけど。こういうの。

www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.8.2.html

>>588
Paul Grahamのエッセイでも読んだ?
Lisperの可読性に対するスタンスとかは、そのGrahamのこれなんかが参考になると思う。

practical-scheme.net/trans/power-j.html

この著者、しばしばPythonを引き合いに出してdisってるように見えることもあるけど、
別に嫌ってないし、一定以上の評価を与えてるから、それは勘違いしないで。

590 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:16:02.46 ]
お前みたいな抽象化された脳みそでは同じに見えるんだろうけど
名前付きの関数と新しい構文では、普通は次元が違うと捉えるだろう

別にポール・グレアムはPythonをdisってないよ。lisp化してるとか言っちゃってるし
ただPythonにあまり詳しくないだけ

591 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:17:43.42 ]
>>587
ありがとう
うーん、こういう使い方があるのかと驚いた
使い込めばloopのようにしっくり来るようになるかも…?

>>588
Norvigの話をふと思い出した
((Pythonで) 書く (Lisp) インタプリタ)
www.aoky.net/articles/peter_norvig/lispy.htm

592 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 09:55:56.57 ]
>>589
arcを触った後にまた読むと読み方も変わるね。

真面目に(簡潔さの)プログラミング言語の比較をやるのはおもしろいのかもしれないなあ。
「(1)一ヶ月かかるプログラムで比較しろ」と言うけど、「(2)プログラミング言語間の相対
的な力を正確に比べるのはまず不可能だということになる。」とも言っているから(1)を
大きいシステムで試せという話に置き換えて、ちょっと小ぶりだけどLispの処理系作りで
試すのは良いことかもしれない。
So any language comparison where you have to meet a predefined spec is testing
slightly the wrong thing.
(だから、あらかじめ決められた仕様に合わせてコードを書くという形式の言語間の比較は、
少し的を外している。)
とあるけど、slightlyなわけでLispの処理系作りでいいんじゃねえと思った。いや、むしろ
比較しやすいシステムな気がする。
あと最初に仕様がまったくないシステムなんてないだろ。未知の問題があったとしても既存の
解法のベースがあってそれを応用して解くわけだし。天才数学者をさんざん殺してきたフェル
マーの定理クラスの問題を解くという話なのかな。言語で解ける射程距離って意識下/無意識
下で分かって解くことが始まるから仕様って頭の中にあるよね。

593 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 10:15:39.39 ]
>>591
Lispインタプリタを実装できないPythonは糞だな。

594 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:10:09.06 ]
>>593
誤読も甚だしい。

595 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:38:24.52 ]
PythonでR5RSを実装できんのかよ。

596 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:22:09.88 ]
できないと思う理由は?



597 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:42:17.58 ]
R5RS準拠Schemeすら実装できない汎用言語って存在し得ないだろw
Schemeよりよっぽど複雑なPython処理系をPythonで書いたりしてるのに。

598 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 19:15:47.95 ]
よっぽど複雑なPython処理系って具体的に何よ。

599 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 20:00:19.76 ]
>>598
その解釈はこちらの意図と違う。「よっぽど複雑な」が掛かるのはPython。

Pythonで実装してるPythonが知りたいなら、例えば名前がエロいPyPyがそう。
PyPyとかPychinkoとかPython使いエロ過ぎ。

Lisperももっとエロくなる必要があると思う。pgのeroとかじゃエロさが足りねーよ。

600 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 20:21:19.81 ]
今、man perlして気づいたんだけど、man perl*の充実ぶりってすごいなあ。
日本ローカルだけでman lisp*って充実しないか。manで引けるって便利だよなあ。
ドキュメントの置き方的に問題があるのかもしれないけど。
Overview
perl Perl overview (this section)
perlintro Perl introduction for beginners
perltoc Perl documentation table of contents
Tutorials
perlreftut Perl references short introduction
perldsc Perl data structures intro
perllol Perl data structures: arrays of arrays
perlrequick Perl regular expressions quick start
perlretut Perl regular expressions tutorial
perlboot Perl OO tutorial for beginners
perltoot Perl OO tutorial, part 1
perltooc Perl OO tutorial, part 2
perlbot Perl OO tricks and examples

601 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 20:21:44.31 ]
600ぺりか

602 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 20:23:45.48 ]
おらの600ぺりかがあ・・・・

603 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:04:57.56 ]
>>599
ooopyもあるんだぜ。そりゃホルスタインは男の夢だが

604 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:05:57.51 ]
質問です。
'((A B C D) (E F G H) ...) -> '(A B C D E F G H ...)
の加工を行いたいのですが、関数をどのように組めばいいですか?

605 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:06:24.57 ]
>>604
appendか?

606 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:14:51.32 ]
>>604
Common LispかSchemeかは知らないが、appendをapplyすればおk。
ただし、関数の引数の最大数の制限に掛かるから、巨大なリストには他の方法を使うこと。

www.aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls から引用すると、

(reduce #'append list-of-lists :from-end t)
(mapcan #'copy-list list-of-lists)

とか。Schemeならfold系の手続きを使えばreduceと同じことができる。



607 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:16:22.30 ]
っと。肝心なapplyの例載せ忘れたよ。

(apply #'append '((0 1 2) (3 4 5)))
;=> (0 1 2 3 4 5)

608 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:23:30.49 ]
とりあえず、LispでエロいっていうとS式を受ける引数によく使われるsexpは外せない。

609 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:30:15.72 ]
>>608
cofee-p のあれからいくと...


610 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:36:00.24 ]
mapappendていう関数があったような
なかったような


611 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:39:39.27 ]
あー、中でapplyしてんのか
失格だ
(define (mapappend func . args)
(if (memv '() args)
'()
(append (apply func (map car args))
(apply mapappend func (map cdr args)))))


612 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:54:23.19 ]
sexp と書くのはためらわれるので、自分で書くときは sxp と書いている。

613 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:58:17.69 ]
>>609 nil って答えられると困るじゃないか


614 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 00:25:28.38 ]
>>609
同性どうしならヤダな。

615 名前:デフォルトの名無しさん [2011/12/26(月) 00:45:26.84 ]
PyPi
PyPy
Pychinko
Pypants

616 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 00:57:03.26 ]
おいおい。パンツまであるとかレベルたけーな。



617 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 02:38:10.37 ]
pypanもあるぞ

618 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 03:04:44.40 ]
行列計算ぐらい統一してほしい
(list 'matrix 数値)
とか
(vector (vector 数値))
とか
(vector 数値)
とか

というか計算が一番速いのはどれ?

619 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 04:27:35.55 ]
racketに
(define (apply-values proc args-expr)
(call-with-values (lambda () args-expr) proc))
なんてのあるけど、どうせならsrfiかなんかに登録されてほしい。

620 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:49:07.18 ]
>>618
Common LispやSchemeで行列演算とかしたことないけど、
本気で性能を気にするなら、disassembleして生成されるインストラクションを見た方が良い。

リストはインデックスアクセスの計算量的に不利だから、あんま使われんだろうとは思う。
ベクタのベクタと単一のベクタは生成時のコスト以外あんま変わらん気がするけど、
処理系によってベクタの実装に差があると思うから、その処理系で実際試してみないと何とも。
処理系のコード読んでみるのも良いかもしれない。ベクタへのアクセサとかの。

621 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:35:21.51 ]
CommonLispなら組み込みでarrayがあるのにわざわざリストやベクタのベクタ使う意味は?
arrayで型宣言して(speed 3)(safety 0)すればそれなりのコードは出るよ。
Schemeはsrfi-25があるけど、速度はわからん。


622 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:40:12.33 ]
標準で行列演算ならarrayを使うほうが適切だわな。

623 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:57:14.78 ]
キーワードじゃなくて素のシンボル使ってるから多分Schemeっしょ。
Racketはサポートしてるけど、リファレンス実装ぽいなー。
Gaucheはgauche.arrayでSRFI-25とAPIは揃えつつ独自の実装してるっぽいね。

624 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:06:03.87 ]
ところでgauche使いってここに何人いるの?

625 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:07:07.75 ]
gauche以外に何があるんだよ…

626 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:28:08.07 ]
凄い脳味噌



627 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:35:05.74 ]
>>605-
ありがとうございます。
助かりました。

628 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 21:12:24.95 ]
common lisp(CCL)とgaucheでcdかdが見つかったら続く非空白文字につなげたいのですが
(直後に改行が来ていたら次の行の非空白文字につなぎます)
どういう処理ですればいいのでしょうか。dは一つだけ来て二つ以上は続きません。

a1a2cd b1b2b3
c1c2c3 d1d23d
e1e2e3 f1f2f3

a1a2 cdb1b2b3 ; cd b -> cdb
c1c2c3 d1d23 ; 行末のd -> 次の行へ
de1e2e3 f1f2f3 ; ->行頭にdを追加

ファイルから一文字ずつ読み込んでcdとdが来たら非空白文字まで出力を控え、
非空白が来たときにそれとともに出力という原始的な方法を考えたのですが
もっと効率のよい手法はあるでしょうか

629 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 21:25:38.35 ]
www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt
Schme to readable C++
に型推論を導入
まだ未完成だけど時間切れになってしまったのでやもえず公開

630 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:06:07.79 ]
>>628
> もっと効率のよい手法はあるでしょうか

具体的に何の効率なの?
実効速度の事なら、よっぽどまずいコーディングしない限り、
速くなったり遅くなったりする要素は殆どないけれども。

631 名前:628 mailto:sage [2011/12/26(月) 23:22:59.43 ]
>>630
そうなのですか
わかりました

632 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2011/12/26(月) 23:28:53.00 ]
Gauche ならその手のスクリプトでありがちなテキスト処理用の機能が多数用意されてるからよほど速度とかメモリとかにこだわるのでなければ正規表現でマッチさせて置換えでいいんじゃないかな。

(display
(regexp-replace-all
#/(c?d)([ \n])/
"a1a2cd b1b2b3
c1c2c3 d1d23d
e1e2e3 f1f2f3"
(^[m]#`",(m 2),(m 1)")))

633 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:40:59.31 ]
cl-lexでもいけそうだけど、本人案でいいでしょ。

634 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:56:04.87 ]
またお願いします。
define-syntaxを使って
(map proc list) -> (proc (x list))
のように変換したいです。
簡単に言えば、リストにmapを内在させて見てくれを良くしようと思ったのです。
e.g.)
(define plusone (lambda (x) (+ 1 x)))
;;;通常なら
(map plusone '(1 2 3)) ;;;=>'(2 3 4)
;;;やりたい
(plusone (まくろ '(1 2 3))) ;;;=>'(1 2 3)

635 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:05:34.41 ]
最後の'(1 2 3)は誤記です

636 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:08:32.94 ]
call/ccでも使えば



637 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:28:53.24 ]
>>636
使いましたがリスト先頭のみ処理されました。

638 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:33:43.11 ]
>>632-633
ありがとうございます。

639 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:53:13.56 ]
≡≡≡≡ 癶( 癶;:゚;益;゚;)癶 カサカサカサ

640 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:55:16.48 ]
AmazonのプログラミングGauche売れとるな

641 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 17:28:00.78 ]
プログラミングgaucheの中に出てくるjames clark's notationについて
どこかに詳しい説明はありませんか
search.cpan.org/~rbs/XML-Filter-Essex-0.01/lib/XML/Essex/Model.pm
を見るとどうもjames clark's notationは別物のように思えるのですが

642 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 17:45:55.73 ]
その本は読んでないが、
www.jclark.com/xml/xmlns.htm
では足りないのかい?

643 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 17:49:55.17 ]
俺の記憶にあるのは、
ttp://jp.rubyist.net/magazine/?0012-qwikWeb#l14
これだけだな。

確か高林氏が最初に「わびさび方式」を紹介した時に、氏のコードが生成してるスタイルについて
そのように呼んでた記憶があるんだが、氏の勘違いじゃなかろうかと俺は思っている。

字下げ付けないでべたっと生成してるぶんにはさほどでもないが、字下げを付けようとしたら
割と変態っぽくなった記憶がある(まぁPPなんて複雑になりたがるもんだけど)。

644 名前:641 mailto:sage [2011/12/27(火) 22:48:00.53 ]
なるほどわかりました

645 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 00:16:15.10 ]
「プログラミング不器用な」 が売れてるのか。

646 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 14:29:47.83 ]
www.cl.cam.ac.uk/teaching/1011/ConceptsPL/
これのlispのスライドにreflectionとあるのですが
>Fully reflective languages are still just research prototypes
>(e.g. Maude), but limited forms of reflection appear in
>several languages (e.g. LISP, Prolog, Python)
これはどういうことなのでしょうか?



647 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:06:33.10 ]
なんぞ

[腐lisp]腐女子のためのlisp入門 #0 - Oh! Can Not Diary
piro.hatenablog.com/entry/2011/12/28/232146

648 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:20:58.48 ]
あのpiro氏とは無関係か。
腐はともかくとして、今時elispってのはこれまた微妙な。

649 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 14:50:37.28 ]
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。

650 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:06:15.26 ]
>>649
社会人でも予選は参加可能らしいしやってみれば?

時間制限あるしsbclとか使えば多少有利かもね

651 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:33:07.12 ]
つまらんわ

652 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:37:36.79 ]
ほうしゃのうを除去するプログラム作ってくれ

「ほうしゃのうを除去するプログラム作ってくれ」

「を除去するプログラム作ってくれ」

653 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:42:28.01 ]
R7RSのドラフト読んでみたけど、R6RSは本気で黒歴史にする方向みたいだな。

654 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:07:30.67 ]
>>653
>R6RSは本気で黒歴史にする方向
詳しく聞きたい

655 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:35:22.18 ]
互換性切って捨てられるとかpython3みたいだな。

656 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:59:16.85 ]
rubyよりまし



657 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:50:38.47 ]
Perl6は赦された

658 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:54:15.03 ]
R6RSとかいらないし

659 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:08:33.13 ]
Windows2000と7に挟まれたVista扱いですか…

660 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:16:29.67 ]
7も正直微妙なんだけど8で大コケの予感
UIいじるのは完全に死亡フラグ

661 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:18:26.33 ]
単なるマーケティングの問題と一緒にすんな

662 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:43:46.81 ]
racketに慣れきってしまったので6を黒歴史にされると困る

663 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:55:14.14 ]
RacketはもうArcよろしく我が道を往くことになってるから安心しろ。
あれはLispではあるけど、もうSchemeじゃない。RnRSをサポートしてても。

664 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 12:10:07.16 ]
iphoneでもluaはちゃんと動く
lua上で動くschemeがあるので
iphoneでも無料でscheme動かすことできる

665 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 12:44:02.99 ]
de?

666 名前:デフォルトの名無しさん [2011/12/31(土) 13:06:19.87 ]
>>663
だとすると、結局のところschemeのエッセンスって何なの?



667 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:21:55.67 ]
>>666
実装して楽しいことじゃね?

668 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:48:45.98 ]
誰かアンドロイドタブレットで動くgaucheインタープリタ作って

669 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:49:22.06 ]
>>666
純粋な計算機科学の話ではなくて、どちらかと言えば政治的な話。

"a dialect of Lisp and a descendant of Scheme"のRacketの処理系であって、
今後もRnRS Schemeをサポートするけど、それは彼らにとって一番の目的じゃない。

670 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 22:39:05.56 ]
gaucheで
テキストファイルの内容をテキストとしてそのまま出力するcgiと
ダウンロードページのように、アクセスすると指定したtar.gzをダウンロードさせるcgiを作りたいのですが
どういう風にすればいいのでしょうか

671 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 22:51:56.15 ]
お前 Gauche 以前の問題だろ

672 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:28:54.18 ]
gaucheで
の部分を何に変えても同じことだな

673 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:55:16.29 ]
テキストファイルやtar.gzを読んで適切なhttpヘッダーつけて標準出力に
書き出せばいい。


674 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 00:06:12.05 ]
>>671-673
ありがとうございました


675 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 14:58:10.32 ]
iphoneのgambit cが便利。しかしソースの保存先が不明。どこから見れるんだろ

676 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 15:47:38.47 ]
>>675
アプリつくれるんだっけ?



677 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 16:03:17.95 ]
>>670
高校生の時を思い出したわ。
今の時代はこんなの中学生か小学生かな。

678 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:05:47.37 ]
>>676
>>675
>アプリつくれるんだっけ?
単にどこでもスキームコードが書けるだけみたい。

679 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:00:21.15 ]
>>677

680 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:11:07.42 ]
Gambitの継続をスレッドで実装する方法ってどこかに文献ないのでしょうか


681 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:23:00.76 ]
lists.racket-lang.org/users/archive/2008-June/025051.html
結局、どっちの挙動が正しい挙動なの?

682 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:27:02.33 ]
トップレベルの解釈って処理系がそれぞれ適当に決めてるんじゃないの

683 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:50:27.30 ]
処理系作ってみればわかるが
どっちもどっち

684 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:17:36.26 ]
axisofeval.blogspot.com/2011/07/some-nice-paperz.html
Some nice paperz on delimited continuations and first-class macros

685 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 19:45:58.29 ]
schelogでちょっと複雑なプログラム組むと
無限ループから帰ってこなくなるのは
自分の使い方が悪いだけなんだろうか

686 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 21:34:21.86 ]
>>685
github



687 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:30:34.59 ]
srfi-*とかクソわかりづらいんだけど慣れるもん?

688 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:44:01.52 ]
いや、メモを参照すべきだと思うぞ。

689 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:48:31.33 ]
RFCなんかに比べりゃかわいいもんよ

690 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 01:21:07.60 ]
>>688
なんのメモを参照しているの?

691 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 06:07:02.56 ]
srfi とslibの関係がよくわからない

692 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 07:40:07.85 ]
srfiは仕様案を出してみんなで議論して形にする。一応参考実装があるけど、
「仕様」が本体なので、仕様だけ見て独自実装している処理系も多い。
slibはSCMの作者が中心となってメンテしているライブラリの集合。仕様に
こだわるよりも実装が主体。
両者は基本的に無関係だけど、SCMの作者がslibの一部の仕様をsrfiとして
提出して承認されているものはある。

693 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 06:38:20.67 ]
racketはシェルとの融合性が悪すぎる
パイプとportつなげたいだけなのに出来ないとか

694 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 14:24:29.54 ]
(call-with-output-string
(lambda (out)
(call-with-input-string "aaaaaa"
(lambda (in)
(exec-shell-pipe "cat -" in out)
))))
みたいなことしたいのだけどRacketはできないみたい
Gaucheならできる?



695 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 14:29:27.07 ]
みたいなことはどれでも出来るんじゃね

696 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 14:47:53.08 ]
shellの標準入力とパイプ入力で扱いが違うらしく
動かないshell コマンドがある



697 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 16:32:57.47 ]
common lispとscheme(gauche)のソースを見やすくする
javascriptでできたシンタックス・ハイライトはありますか?
webでそれらのソースを見せたいので

698 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:52:28.72 ]
>>697
see demo at pygments.org/

699 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 08:55:25.13 ]
>>696
なにいってんだ?

700 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 15:22:37.44 ]
>>699
Racketで694に相当するのが(process "cat")だけど
実行してみると何処がおかしいのかわかると思うよ

701 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 00:48:18.63 ]
何言ってんだか全くわからん。

$ cat foo.ss
(define-values (p stdout stdin stderr)
(subprocess #f #f #f "/bin/cat"))
(display "aaaaaa\n" stdin)
(close-output-port stdin)
(display (read-line stdout))
(display "\n")
$ racket -f foo.ss
aaaaaa



702 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 03:34:47.61 ]
>>701
ls, top, cat hoge.log | tail -n 99 | grep abとかは、どうやるの?

703 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 10:48:07.24 ]
(subprocess #f #f #f "/bin/sh" "-c" "ls | grep ab")でいいんじゃない?

704 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:46:41.56 ]
>>698
すみません、それはpythonでファイルを新たに生成するものではないでしょうか

705 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 07:08:13.54 ]
www.1stwebdesigner.com/css/16-free-javascript-code-syntax-highlighters-for-better-programming/

706 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 08:15:50.26 ]
>>704
単独で生成もできるし、jekyllみたいなものから静的なhtml作成
もできるよ。common lisp,scheme,clojure含めて対応言語が多いので、
重宝する。705にも紹介されてるよ。



707 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 09:23:26.10 ]
環境を変更せず、お手軽にJavaScriptでやりたいんじゃないのかな。
自分もブログサービスで簡単に利用できるのを探したりした。

google-code-prettify
code.google.com/p/google-code-prettify/

なんかは、Lisp界隈で何度か使われてるのを見たことがある。
ただ、厳密に構文解析してるわけじゃないみたいなので、
何かのタイミングでハイライトが崩れる場合もあったと記憶してる。

708 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:53:31.40 ]
>>705-707
ありがとうございます。
>>707のおっしゃるとおり手軽に行いたかったのです
あげてもらったものを試してみます

709 名前:デフォルトの名無しさん [2012/01/16(月) 16:31:35.37 ]
ttp://d.hatena.ne.jp/higepon/20120116/1326674950

710 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:13:42.03 ]
ステマスレと間違えたんですね

711 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 19:28:17.79 ]
d.hatena.ne.jp/r-west/20090417/1239972722
大変わかりやすいエントリーなのですが、読んで疑問を持ちました
1.lispやschemeとycombinatorはどういうところで結びつくのでしょうか
2.ところでpaul grahamが設立したy combinatorはy combinatorの意味と何らかの関係があるのですか


712 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:39:33.32 ]
Ycombinator懐かしいな

(define (Y F)
((lambda (s) (F (lambda x (apply (s s) x))))
(lambda (s) (F (lambda x (apply (s s) x))))))

(define length
(Y (lambda (f)
(lambda (ls)
(if (null? ls) 0 (+ 1 (f (cdr ls))))))))


713 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:04:35.84 ]
>>711
2についてはpaulが答えてる。 ycombinator.com/faq.html

Why did you choose the name "Y Combinator?"

The Y combinator is one of the coolest ideas in computer science. It's
also a metaphor for what we do. It's a program that runs programs;
we're a company that helps start companies.


714 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:16:22.14 ]
>>712-713
ありがとうございます。わかってすっきりしました。

715 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 10:37:22.18 ]
Lispには歴史的価値しかない
Lispからはもう新しいものは生まれない

716 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 12:24:53.66 ]
うん、過去ログを読めない人にとってはそうだな



717 名前:デフォルトの名無しさん [2012/01/18(水) 12:40:32.37 ]
2ch監視し続けないと目に触れないようなもん
大したものじゃないな

718 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:36:39.08 ]
>>715
のお勧め言語は?

719 名前:デフォルトの名無しさん [2012/01/19(木) 01:07:41.25 ]
別に新しいの生み出さないでも、
俺一人が気分良く使えればそれでいいし。

720 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 02:51:38.27 ]
schemeで
文字列 "aabb" から同じ名前の変数に何か割り当てたい
(define aabb "some")
string->symbolで変換しても無理だったのだけど何か方法ないのでしょうか

721 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 06:39:10.99 ]
適当に加工してevalかマクロ

722 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:01:00.29 ]
関数に値を渡す時
vectorとlistは参照渡し
それ以外は値渡し

なんかすっきりしない

723 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:44:03.25 ]
Schemeに参照渡しなんて無い

724 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 12:58:50.56 ]
(lambda (x) (set! x))は、xが関数の中にあるのか外にあるのか、分からない
(lambda _ (let ((x (car _))) (set! x)))は分かる
パラメータを宣言するのをやめてローカル変数を宣言すればいい

725 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:11:18.05 ]
誰か>>724を翻訳してくれ

726 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:12:42.87 ]
perl大好き



727 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 13:39:15.59 ]
RnRS にも載っているように let は lambda に変換されるマクロ
ローカル変数を作ってるのは実は lambda の方

728 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:18:10.31 ]
(my-let ((x 1)) x)
から
((lambda (x) x) 1)
に変換するこんなマクロ一度は作るよね

729 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:23:54.29 ]
参照渡しなんて無いほうがいいと思うなら
引数を評価しないで渡すマクロも無いほうがいいと思うだろうな

730 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:56:52.91 ]
参照渡しと参照の値渡しを混同してるやつが居るな

731 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 14:58:08.78 ]
Lispは他の言語と比べたら
全くと言っていいほど役に立ってないのに
なんでLisperはあんなに威張りくさっていて態度がでかいんだろう

732 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:03:26.05 ]
↑こんな風に

733 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:03:33.38 ]
下から目線キター

734 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:05:07.77 ]
たしかにバカを相手に威張ってもなんの得にもならないし
ろくなことはない。愚かな行為ではあるな

735 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 15:11:48.97 ]
>>730
その理論でマクロは説明できないの?
quoteの値渡しとか

736 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:10:34.30 ]
値渡しを理解してない初心者がなぜか動かないと疑問に思う例
(define (push stack objct) (set! stack (cons objct stack)))
(define (pop stack) (prog1 (car stack) (set! stack (cdr stack))))

やりたいことはこう
(define (make-stack) (list '()))
(define (push stack objct) (set-car! stack (cons objct (car stack))))
(define (pop stack) (prog1 (caar stack) (set-car! stack (cdar stack))))




737 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:12:42.80 ]
自分の役にたって自分だけ金が儲かれば、
世の中の役になんてたたんでええわ。

738 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:58:32.60 ]
>>737
おまえもぉ〜いつかは〜世の中の〜♪、傘になれよと教えてくれた〜♪

739 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:56:03.80 ]
>>736
thisやselfを渡すOOを理解していない初心者はそういう書き方はしない
stackを自由変数にするだろう

740 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 22:56:51.52 ]
perlのshiftやjavascriptのargumentsのように外部イテレータで書くのが正解っぽいな
引数で混乱するなら戻り値を使え
内部イテレータはオワコン

741 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:44:30.82 ]
最近のコンテンツ産業はプログラミング言語の機能も扱うのか

742 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:53:55.20 ]
LISPを勉強してよかったことは、片方向リストに強くなった

743 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:56:46.62 ]
コンテナ渡し
コンテンツ渡し
コンテナのコンテンツ渡し

744 名前:デフォルトの名無しさん [2012/01/21(土) 23:28:14.88 ]
SICP taught in Python 3
www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html

SICPがPythonで学べるようになって
Schemeの唯一の存在価値がなくなってしまった


745 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:39:55.85 ]
Python3って異様に普及していないよなあ。

746 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 00:15:40.26 ]
Gauche の HEAD が Windows でもスレッドを使えるようになったお。



747 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 03:06:55.51 ]
schemeでpaipに相当する本ってないの?

748 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:50:39.85 ]
vector-set! があってlist-set!がないのは何故だろう

749 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:13:33.04 ]
R7RSにはあるぞ list-set!

750 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:17:06.57 ]
R7RSは大丈夫なの
R6RSみたくならない?

751 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:39:31.01 ]
大丈夫問題ない

752 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:46:33.01 ]
R6RSとは何だったのか

753 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:14:59.27 ]
一部の暴走

754 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:17:03.43 ]
実用重視とか言ってなかったっけ?そんなにダメなん?

755 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:33:41.72 ]
(set! (cadr '(1 2 3 4)) 5)

756 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 15:35:37.50 ]
Vistaみたいなもんとか



757 名前:ハンバーグ餃子 ◆8X2XSCHEME mailto:sage [2012/01/22(日) 15:59:42.38 ]
>>748
vector-set! を無いところから作るのは無理だけど、
list-set! を作るのは難しくないのでそれほど困ることは無いはず。
R5RS の時点では言語コアに入れるほどのものじゃないと思われたんじゃないかな。

R6RS ではペアの破壊は避けて欲しい雰囲気になってる。
set-car! や set-cdr! でさえライブラリの僻地に追い払ったくらいだから、
更に list-set! を追加しようとは思わないだろ。

758 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:09:40.24 ]
O(1)で済む所が全てO(N)になってしまうからな

759 名前:ハンバーグ餃子 ◆8X2XSCHEME mailto:sage [2012/01/22(日) 16:22:57.42 ]
srfi-101 があるでよ。
と思ったけど、これはまだ Draft の段階だな。

760 名前:デフォルトの名無しさん [2012/01/22(日) 16:23:16.48 ]
PythonでSICPが教えられるようになった
今となってはSchemeでSICPやるのは
時代遅れの教える側の趣味の押しつけでしかない
選択授業でやるならまだしも
必修でやるのは職権乱用だよな

761 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:15:58.88 ]
>>760 クリエイティブコモンズで公開されてることだし、てめぇで翻訳してからでかい口たたけよカスが。
翻訳終わるまで2ちゃんねるには書き込まなくていいからね。さもなくば死ねよ。

762 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:17:48.99 ]
WD先生自重してください

763 名前:デフォルトの名無しさん [2012/01/22(日) 19:18:16.48 ]
SICPは日本語訳変だし、
どこも英語でやっているでしょ。

764 名前:デフォルトの名無しさん [2012/01/22(日) 21:08:22.16 ]
Lisper教授は野球でいえば、
ピッチャーの球種がストレートとカーブしかなかった時代の強打者。
球種が増えた現代の野球に対応出来ないでいるのに居座っていて、
後進にも時代遅れの打ち方を強要している。
もういい加減引退して野球博物館に展示されるべき。


765 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:22:09.90 ]
何か最近やけに煽りに来る人多いけど、誰か何かしたん?

766 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:23:58.73 ]
脳を患った人がいるだけでわ



767 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:27:08.01 ]
強打者って褒めてるし

768 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:28:58.36 ]
モノスゴイ執念で一人でがんばってる仮説

769 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:33:45.70 ]
みんなが相手してくれるから

770 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 08:12:20.18 ]
Pythonで拡張できるエディタが普及するのはまだなの?
秀丸はLinuxに移植されないの?
>>760
「中学・高校で古典・漢文は時代遅れの教える側の趣味の押しつけでしかない」と
言っているようなもんだよなあ。
日本人が学校ネタで世代間を越えて語れるようにSchemeでSICPやるのはそういう
面でも意味がある気がするけどなあ。あとLispは文献の資産もたくさんあんだろ。
SchemeでSICPやめたのは失敗だったとあとで気づく気がする。
というか、SICPぐらい高校生のうちに読んでおけよと思うんだが。

771 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 08:55:38.97 ]
Pythonって規格もないし、後方互換を切り捨てたばかりだろ。
拡張性もschemeより低いし、数年毎に全面改訂必須になりそう。
schemeなら新技術が出てもマクロを足すだけで済む。

772 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:02:22.95 ]
最後の一文だけは妄想の産物だな

773 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:03:18.87 ]
ごめん
最後の一文てのは>>770のことな

774 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:07:01.90 ]
>>771
> Pythonって規格もないし、後方互換を切り捨てたばかりだろ。
> 拡張性もschemeより低いし、数年毎に全面改訂必須になりそう。
> schemeなら新技術が出てもマクロを足すだけで済む。

同意。

何よりもプログラミング言語を構成している基本概念(の中で静的なデータ型を除いて)を
Schemeほど学習者にとって認識しやすくしている言語は他にほとんどないんだよね。
Scheme以外のほとんどの言語は実用を意識し過ぎて最初からシュガーを纏った形であったり
概念の要素ごとでなく複合的な形でしか提供されていない場合が多い。

しかも言語の構文まで拡張する(それも普通の意味でのマクロよりももっと系統的な方法で)のを
可能にしているのはScheme以外には存在しない。

実用プログラムを書くだけならば他の言語でも良い(あるいは他の言語の方が便利)かも知れないが、
プログラミング言語とは何かを一度きちんと理解して、表面的には色々と異なる様々な言語に出くわしても
自在に応用が利くようなレベルまで深く修得するには、Schemeを学んでおくのは時間の無駄ではない。

プログラミング言語やプログラミングに関する優れた教科書でSchemeを採用しているのが何冊もあるのは
何故なのかか?という事をもっと真剣に考えるべきだし、それは偶然ではないんだよね。

775 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:11:44.65 ]
SchemeでなければCommon Lispだな。
SICPのスコープには入ってないが、LispのマクロのパワーはPythonには全く無いからな。

776 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 10:26:18.36 ]
R6RSのことも思いだしてやってください。> 規格の堅牢さ



777 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 12:40:55.95 ]
>静的なデータ型を除いて
致命的に駄目じゃん

778 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 12:45:09.61 ]
他の言語やるならSchemeなんてやらない方がいいだろ
うちの教授なんてLisp脳が酷すぎて他の言語が理解できなくなっているし

779 名前:デフォルトの名無しさん [2012/01/23(月) 12:49:32.86 ]
>「中学・高校で古典・漢文は時代遅れの教える側の趣味の押しつけでしかない」と
>言っているようなもんだよなあ。

古典・漢文はいらんだろ。少なくても時間を減らすべき。

780 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 12:52:41.60 ]
その辺は高校では選択だったから、さわり程度しかやらなかったよ。

781 名前:デフォルトの名無しさん [2012/01/23(月) 12:52:56.67 ]
>後方互換を切り捨てたばかりだろ。
後方互換を切り捨てたのは今までで一度だけだし、もうだいぶ前のことだ。
規格が分裂しているSchemeよりかなりましだろ。

782 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:01:42.34 ]
SICPはCSの教科書のふりをした
Schemeを押しつけるための教科書だろ

783 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:29:14.37 ]
>>782
Schemeは静的型付けを押しつけない。
また、文字列処理を押しつけないためにsymbolとconsを使う。
しかしquoteの分かりにくさは文字列を普通に使うよりも酷くなった。

784 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:31:44.06 ]
Schemeに代わるものがあれば使えばいいと思うよ。

構文にあれこれ気を使う必要がなく、ラムダ式や高階関数を使うことのハードルが低く、
関数型パラダイムだけでコードを書くこともできるが、データ構造の破壊的更新も
やろうと思えばできる、という言語が、あればね。

>>782 は具体的にそういう言語があるなら示してみろ。できないなら黙れ。二度と書き込むな。

785 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:35:00.31 ]
Pythonの話が出てるので普通言語ユーザな視点からの質問。

Schemeとかって手続きがデフォルトでポリモーフィックじゃない(オブジェクト指向じゃないから当たり前だが)のが
使いにくいと思ってるんだけど、Schemeを使ってる人達はそんなことは思ってないの?

(vector-ref vec i)より
vec.ref(i)の方が良いと思いません?vecもダブらないし。

786 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:35:06.47 ]
サスマン先生本人がどっかで言ってたけど、SICPの意図は、
抵抗やコンデンサ、トランジスタを集めてきてハンダ付けして実験することで
電子回路を理解するのと同じように、計算のしくみを部品から組み立てて
理解できるようにするものだったそうな。だから敢えて機能が少なく簡単に仕様が
説明できるSchemeを使ったと。最初の講義の30分で言語の説明を終えられる、
だったかな?
けれど今の工学をやるなら、バラバラのパーツを集めてくるだけじゃなくて、
ブラックボックスになっているチップやモジュールを使わざるを得ない。それと
同様に、言語でもありもののライブラリを集めて使うことが重要になってきたと。




787 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:41:59.43 ]
>>785
確かにそれひとつのみを考えたらそうなんだけど、そうやって、素敵機能を
ひとつ追加するごとに新しい構文を追加していったら、結果がどうなるかというと
だいたい見えている。

たいていの言語は、あれもこれも追加するなんてことはしない、という方針によって
カオスになるのを避けているわけだけど、Lisp 一族は、構文を追加しない、という
方針にしたということ。

>>786
これかな?
ttp://d.hatena.ne.jp/leque/20090326/p1

788 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:52:14.00 ]
最初に少し説明に長くかかっても、
言語なんてこの先ずっと使うものだから(Scheme以外は)
ちゃんとしたの選んだ方がいいよな。

789 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:53:17.07 ]
>>785
Lisp語族を使う人の中でもそういう記法を好む人もいるよ。度々見掛けるネタ。

ただ、vec.ref(i)って、(vector-ref vec i)の構文糖以上のものではないから、
大抵はリーダーマクロとか使って、リーダー部分をいじって変換するだけ。
言語仕様に入れるほどのものじゃないと思う。ライブラリや処理系のレイヤ。

790 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:54:57.31 ]
最小限ってのもあまりよくないような
みんなが好き勝手に作ってしまって
言語仕様ですらひとつにまとまらない

791 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:05:20.17 ]
オブジェクト指向のライブラリもけっこうあって、好きな文法が選べる。
デフォルトの文法に従うのではなく、問題領域を簡潔に表記できる言語を作ってから書く。
最小限の部品で言語を作るための言語。文法が多いと専用の言語を作る時に邪魔になる。
但し大量の俺々schemeができて互換性がなくなる問題点がある。
R7RSが解決する予定。

792 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:05:30.04 ]
>>785
横に長くなるのが嫌なら、手続き的に書くだけで充分に縦長になるので
その上に更にOOで幅を狭くしたいとは思わない

793 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:07:12.71 ]
>>788 >>790 そう思うあなたのために Common Lisp があるのに、何が不満だ?

794 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:10:53.58 ]
>>793
SICPの話しているんかと思ったんだけど
SICPにCommon Lisp関係ないしょ

795 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:13:03.24 ]
アホはひとつしか言語が使えないのか。
分野によって使用言語を使い分けるのが常識だと思うけど。
言語の文法は優劣でなくて選択で、ある点で有利な文法は他の点では劣ってるのが普通。
言語の作り方を見せるという点でscheme以上の言語はいまのところない。

796 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:16:12.50 ]
うちの教授はLispしか使えんぞ



797 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:22:53.73 ]
SICPだから言語の作り方でなくて、計算の基礎理論か。
それにSICPはschemeの教科書ではないよ。
あれはCSの教科書。schemeの理由は上にあるように、CSを教える用途に優れてたから使っただけ。

798 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:36:25.38 ]
今ならOcamlとかHaskell使った方がいいよね

799 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:38:47.94 ]
S式ならね

800 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:49:33.45 ]
>>787
Lispは文法の純潔さを選んでいるわけですね。

>>789
あくまで個人的な印象だけど、メッセージ送信の文法は構文糖以上だと思うな。
名前空間も絡んで来るし。

>>791
確かに選べるけど、それらが役に立つのは自分で新しくオブジェクトを書くときか
その文法が使われているライブラリを利用するときだけで、
既存のデータ型を好きな文法でシームレスに扱える訳じゃないから
あまり嬉しくなかったりする。

>>792
長さは置いておいても、意味が同じ手続きをプログラマ側で使い分けないといけないのが
面倒に感じるんだよね。

801 名前:785 mailto:sage [2012/01/23(月) 15:03:18.43 ]
>>789
ちょい追加。個人的な印象ってのはよくない。

vec.refからvector-refに展開するにはvecの型と対応する手続きを知ってないといけないから、
静的にはできないし構文糖とは言えないんじゃないかな。

802 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 15:46:58.18 ]
pythonのnumpyに相当するものは欲しい
行列計算や数値計算の枠組みを共通化してほしい

803 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 15:49:49.77 ]
ついでに
>>618


804 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 16:08:39.28 ]
共通化よりも変換だ
unicodeとiconvのどっちかを捨てろと言われたらunicodeを捨てる

805 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 16:20:16.28 ]
その二つを比べてどうする

806 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 16:33:45.07 ]
>>800
端折り過ぎたというか、言葉が足りなくて色々考えさせたみたいで申し訳ない。

メソッドのディスパッチとか、そういった途中経過も勿論含めての話。
オブジェクトとメソッドへの引数を伴った、単なる手続きの呼び出しと、
最終的に等価になるのは同意してもらえると思うんだけど、どうだろうか。

それで納得してもらえたら、あとは>>789の最後の部分に続く。



807 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 18:38:29.18 ]
>>802
ベクトル・行列演算ならBLAS
連立一次方程式ならLAPACK

とFotran由来の共通規格があるじゃないか

808 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 19:24:22.02 ]
>>779
> 古典・漢文はいらんだろ。少なくても時間を減らすべき。
減らさずに土曜日授業もやればいいんだよ。

生物学は物理学との選択で学べず、地学は選択すらできなかった。
大学受験予備校化や実用主義って学問をやる上で邪魔な存在だよ。

実用主義に走りたいなら義務教育が終わったらやる気や才能ある奴が働きやすいようにしたらいい。
就職予備校化している大学は専門学校って名前を変えればいいんだよ。
>>786
なんか作ろうと思ってマイコン関連のスレにずっと常駐しているけど、
ブラックボックスになっているチップやモジュールは好まれず、仕様
公開とか、色々とホワイトボックスになっていないと好まれないじゃん。
オープンなAruduinoがあるけど、どういう位置づけなの?

あと具体的にブラックボックスのモジュールってどういうの?
> 言語でもありもののライブラリを集めて使うことが重要になってきたと。
これってSchemeの得意分野じゃないの。
>>788
そりゃあ、言語選びはもの凄く大事でしょう。
習字の二度書き禁止みたいに無駄に何個も覚えるもんではないからね。

シェルスクリプトbashを覚えちゃったけど、kshを覚えたかったなあ。

809 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 19:30:53.37 ]
MSが作ったから馬鹿にしてたけど
PowerShellが以外とよかった

810 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 21:12:30.80 ]
>>808
ブラックボックスって言い方が悪かったか。仕様は公開されてるけど、使う時に
チップの中の電位分布の変化を意識したりしないでしょ。ディスクリートで
組む時のような意味では。インタフェースと定格と限界さえ理解してれば、
中身はブラックボックスとして扱っても良いってこと。

SICPの文脈だと、具体的には、MITでは電気電子情報の学生は初年度に
ロボットを作らせることになったのね。そのくらいの複雑度になると、
全てを把握するってのは無理で、出来合いのユニットのインタフェースを
理解して目的に合わせて使いこなしてゆくってことが重要になってくるって話。

> これってSchemeの得意分野じゃないの。

PythonのライブラリとSchemeのライブラリの量を比べてみれ。
Schemeが教育上の効率(言語の説明が省ける)で選ばれたのと同様、
Pythonが教育上の効率(使えるライブラリが既にたくさんある)で選ばれるわけさ。

この現実に不満があるなら、Schemeのライブラリを同じくらい充実させるしかないねえ。

811 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 21:30:04.88 ]
SICPをSchemeで教えるかPythonで教えるかって話をしてるところに、
SICPを教えるかライブラリ利用云々を教えるかっていう、関係ありそうで全然別の話を持ち込んでる人が居ますね

812 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 21:36:19.80 ]
何ヶ月も学習するわけだから
最初にやるSchemeとPythonの言語の大きさの差なんて誤差のうち
むしろ一般人には規模が大きくてもPythonの方が楽に学べそうだ

813 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 22:43:40.59 ]
全員が高校卒業までに体系的にSchemeを学ぶ必要はないけど、独学でやり込んで来てくれと
いう話じゃないの。
Pythonを一から教えるなら一年かかると思うし、半年で教えるなら色々と前提条件がつくんじゃないの。

MITのロボットの話だって事前に設計図を読めて書けて安価なマイコン・コンデンサ・モジュールを
組んだりとか、してきてねってことじゃないの。やっていないと物凄い苦労するよって。
人権無視で長時間拘束して大学で4年間教えていいなら教えられるけど、人権ありで4年間だと何も
教えられないんじゃないの。
>>812
なんで楽なのにPython3って普及しないの?
Python3.1になったらみんな使い始めるって計画じゃなかった?
今、 Stable release 3.2.2 / September 4, 2011; 4 months ago (2011-09-04)だよ

Pythonに思い入れがなく、ただ覚えやすいという宣伝文句にひっかかって使い出したに過ぎ
ないんじゃないのか。教祖のGuidoが3使えって言っているんだら3使えよ。
教祖に背くと地獄に行くぞ。

814 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:11:51.34 ]
まだやってんのか

815 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:13:15.55 ]
>811
>787 あたりみるとSICP書いて教えてる本人がいってるんじゃね?

816 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:22:31.56 ]
MITはライブラリがないからScheme使うのやめたってことなのか



817 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:41:14.71 ]
sussmanさんの話だとSICPをやめたのは時代遅れだからで
Schemeをやめたのはライブラリがなかったからか

818 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 00:25:52.86 ]
古い言語は捨てられ新しい言語が次々と作られる
一方、ライブラリは足りないから古いライブラリは生きのこる

819 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 00:51:48.31 ]
>>818
> 古い言語は捨てられ新しい言語が次々と作られる

かくして世の中は思い付きで作られたポッと出の出来損ない言語とバグだらけの処理系だらけになる。

820 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 01:05:05.25 ]
出来そこないの処理系の多さではSchemeがダントツでしょうな

821 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 01:42:18.24 ]
sussmanって人SICPの著者?

822 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 02:04:31.01 ]
>>818
でもLispにはライブラリがないから、捨てられるね
だれか、QtをSchemeにバインディングしてくれないかな

823 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 04:25:26.26 ]
Qt程度ならSchemeで実装すりゃいいじゃん

824 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:55:28.14 ]
>>820 はぁ?
そもそも仕様ができそこない、というゴミ言語が山ほどある時点で、
Schemeがダントツとかありえません。おまえの脳みそが出来損ないw

825 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 07:00:03.59 ]
Schemeのマクロだけを詳しく噛み砕いて解説した本出した
ら売れるよ

826 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 07:32:29.79 ]
ライブラリの具体例がUIというのはすごいな
全然具体的じゃないがいかにもありそうな話だな



827 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 09:15:33.73 ]
問題の切り分けができない負けず嫌いが教育を語る

828 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 09:17:43.99 ]
>>827
救世主現る!
解決お願いします。


829 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 09:45:11.42 ]
>>824
仕様ができそこないがどんな意味で言ってるのかわからんが
とりあえず実装数の多さじゃSchemeはダントツだな次点はJavascriptか



830 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 10:33:03.39 ]
みんなで処理系ばかり作っても意味ないだろ
ライブラリ作れっての

831 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 11:02:53.14 ]
処理系向けのテクニックが開発されていく言語というのがある。
そういう分野では処理系たくさん作られることが重要。

832 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 11:18:26.33 ]
最近の処理系向けのテクニックってどんなんがある?

833 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 14:00:49.69 ]
少なくともRacketはライブラリ充実してるぞ

Chikenは既存のC++ライブラリをくっつけやすいから
違う意味で充実している


834 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:45:56.76 ]
racketは名前が駄目だわ

835 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:52:31.82 ]
「ライブラリが充実」で想定しているレベルに齟齬があるような気がする。

本業がプログラマでなく別の専門を持っている人たちが書いたようなもの、
生物屋さんがゲノムデータベースを簡単に検索して実験データと付き合わせるために
作りましたとか、経済学の人たちがセンサスの情報を統計処理しますとか、
言語学で文献のデジタル化をやっててその解析に使える便利ライブラリですよとか、
そのへんの層の厚さなんだよね。決め手になるのは。Schemeにそれが無いとは
言わないけれど。その分野の専門でない人間が聞き齧り、読み齧りで書いた
ライブラリって、専門の現場のフローに合ってなくて使えないこともままあるし。
現場の人が現場の事情に合わせて書いて、それが蓄積されてるってのはでかいよ。

CS教育の話をしてるんだから関係ないと思うかもしれないが、研究にせよ開発にせよ、
今は別の分野の専門家とコラボしてソフトウェア工学を使ってその分野の問題を解決
する重要性が大きいし、今後もそっちが大きくなる一方だから。

836 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:57:02.23 ]
日本の大学では
インタプリタの作り方教えて
リスパーの数を増やすことがCSだから



837 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:17:03.97 ]
そういえば俺の大学には記号処理という名のcommonlispの授業があったな

838 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:20:06.29 ]
つか別にインタプリタの作り方をやらなくて良くなったってわけじゃなくて、
メタサーキュラーインタプリタくらいは基礎教養としてスタート前にやっといてくれ、って
くらいの話だと思う。

おいらは自分で何か書くならLispだし、Lisperが増えて欲しいとも思っているが、
だからこそ「それLispにもあるよ」ってタカをくくってる意見には賛同できない。


839 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:21:37.24 ]
MITの学生は入学前にメタサーキュラーインタプリタ知っていると?

840 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:31:59.82 ]
知ってる学生もいるだろうし、知らなかったら1ヶ月で詰め込める。
web.mit.edu/alexmv/6.S184/

てか大学の実験や実習なんて教わってないことだらけで、そんなのは自習するのが前提でしょ。
俺は日本の大学だったけど。

「スタート前にやっといてくれ」はちょっと変か。「講義でやらないけど知らなかったら自分で
やっといてね」くらい。

841 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 17:16:07.16 ]
chez schemeの開発者の一人が書いた本(mit press)らしいけど、
読んだ人がいるなら感想を聞きたい

The Scheme Programming Language, 4th Edition www.scheme.com/tspl4/

842 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 17:59:11.32 ]
>>835
その辺の層の厚さが一番あるのはRとperl
pythonは正直いまひとつ 劣化matlab


843 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/01/24(火) 18:59:38.06 ]
>>841
日本語版 (3rd だが) なら読んだことがある。
SICP や Little Schemer と違って、 Scheme の言語機能の解説が多くを占める。
C++ にとっての `The C++ Programming Language' みたいなもの。

4th では R6RS を前提とした内容に大幅に改定されているはず。


844 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:05:02.20 ]
>>835
非本業プログラマはCL一択でいいと思うんだけどね。gccに匹敵する速さだし、
REPLでelispとも親和性が高い。
>>842
PerlってRみたいに統計関連のツールって豊富なの?
Perlでやると遅くてメモリ食うわで最悪な選択な気がするんだけど。

845 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:37:11.83 ]
>R6RSを前提
えーー

846 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:38:49.24 ]
R6RSってR5RSと比べて全体的にどんな感じで変化した(させた)んでしょうか?



847 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 19:40:16.84 ]
CLは美しくない

848 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/01/24(火) 20:17:45.36 ]
>>846
色々あるけど、モジュール化をどうするかが一番大きな議題だったように思う。
結果的にライブラリという概念を導入した。

# それさえ出来れば後々の規格改定で機能を追加することになっても、
# ライブラリを分けて共存を図ることもできるという思惑もあったみたいなのに
# R7RS では仕組を変えようとしてるので、おまいらもちつけと言いたい。
# しかも新しい提案も R6RS と劇的な差があるわけでもないし。

それとマクロシステムが拡張されて非健全なマクロ等も書けるようになった。
マクロで問題になる、マクロ展開時にどの環境を使うかという点はフェイズの概念を導入することで解決した。
フェイズはライブラリ単位で決まるので、上述のモジュール化の仕組みとも密接に関連している。

レコードや文字列ポートなど、多くのケースで便利な機能がちょろっと追加された。
R5RS までは小さい言語コアだけ決めて残りは SRFI や各処理系の裁量にお任せという感じだったのが、
ここへ来て方向性が変わった感じがする。

細かいことは↓を参照
practical-scheme.net/wiliki/wiliki.cgi?R6RS%3a%E5%A4%89%E6%9B%B4%E7%82%B9

849 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:13:32.52 ]
CL、Scheme(R5RS)、Scheme(R6RS)、Clojure
利用者の割合はどんなんだろ

850 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:14:06.24 ]
>>841
3版と4版を読んだけど、無難な言語解説書。
深い事は書いてないから、なんたらハンドブック系の価値。
3版なら無料で読める。
www.scheme.com/tspl3/

>>842
Fortranも忘れてはいかん。科学屋さんが大量に書いてる。
基本的に専門分野ではRやFortranみたいな特化された言語が使われてる気がする。

851 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:24:53.98 ]
???
4版も無料で読めるような気がするけど
気のせい?

852 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:26:23.93 ]
あとでFBIの職員が集金に来ます

853 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:31:12.71 ]
>>851
ごめん、3版しか使ってないから忘れてた。
本文読めるのなら質問しないで良いじゃないか・・・。

854 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:43:30.92 ]
>>847
チンコはデカい方がいいだろ。
emacs子と親和性高いのは重要だよ。

855 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:13:28.44 ]
>>835
> CS教育の話をしてるんだから関係ないと思うかもしれないが、研究にせよ開発にせよ、
> 今は別の分野の専門家とコラボしてソフトウェア工学を使ってその分野の問題を解決
> する重要性が大きいし、

応用プログラムを書くのとCSを専門として学ぶというのとは目的が全く違う。
数学で確率論やルベーグ積分を学ぶのと保険のアクチュアリーになるのが全く違うように。
今のCSは応用に向いた教育ばかりになってしまっていてCSを専門に学んだはずの人が
趣味や独学でプログラミングに上達した人と大して質的な差がなくなっている。

応用としてのプログラミングなんてものは、パソコン1台あれば専門教育なんて受けなくても勉強して身に着けようと思えば着けられるんだよ。
だって、プログラムを書くだけならば必要な知識はカタログ的な平板で雑多かつ多量の知識(ライブラリとかAPIとかね)なんだから。

そうすると、CSの教育を専門的に受けたというアドバンテージをどこに求めるのか、と言えば
体系的な知識、例えば雑多な様々なプログラミング言語を構成している基本概念やそれらの間の関係をきちんと理解しているとか、
それに基づいた様々な技術(プログラム解析とかね)を体系的に身に着けているといった点に求める事になる。

プログラミングに限らず他の分野でもカタログ的な知識は下手をすると素人マニアの方がプロよりも上だったりするわけだ。
例えば鉄道ヲタクの連中は、△△電鉄の3000型のブレーキは初期型は××製だったが後期型車両からは○○製になり
その結果として制動能力がどれだけ上がって云々なんてのを知っていたりする。下手をすると当の△△電鉄の関係者や
その3000型車両を設計・製造した車両メーカーの技術者よりも型番なんかに関しては詳しかったりする。
だけど、そんな知識を持っていても、その鉄ヲタは電鉄会社の整備主任も車両メーカーの設計技師も務まらない。
何故ならば、彼らに必要な知識は体系的なもの、つまり(科学や)工学だからだ。

今のCS教育は同じカタログ知識の教育に偏重していると思う。これでは素人プログラマと変わらない人材しか育てられない。
Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。だからCS教育に向いているんだ。

856 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:21:31.15 ]
>Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。

これLisperの主観でしょ



857 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:29:06.45 ]
今の時代に大学でしか学べないCSって何があるの?
むしろ大学に行くと教える側の専門に縛られたりするんじゃね?

858 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:31:27.55 ]
その大学で扱っている専門を知った上で入るならいいんだけど、
大抵の受験生は自分が受かりそうな中で偏差値が高いとか、
家から近いとかで大学選んでそうだし。

859 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 02:50:16.59 ]
>>856
どういうことなんだろうな、Schemeだけで言語概念が云々ってのは。
lispが全てS式だからとか、再帰処理が構文解析器とかにマッチするとか、そんなん?
プログラミング言語論の授業では特定の言語に拘らず色んなパラダイムを紹介されたけどねえ
それと実装は別だな。特別に指定されない提出物なら全部pythonで書いてる
楽だから。何より楽だから。
matplotlibも便利でエクセルなんか使わずに結果をプロット出来るし
まあ他の言語もgnuplotとか使えるだろうけどmatplotlibのが楽

860 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 03:47:33.62 ]
は?抽象構文木を直接扱って、いかなるパラダイムでも実現できるのは、現状Lispしかないだろ。
楽なのが良いならPerlを使うべきだろうな。ライブラリがダントツで、人為的な強制もない。
一つの言語で全て出来るという幻想を持ってるようだけど、長く続けてると言語処理系やOS等の下位層を直接弄る事態になるから。
複数の言語が出来て当然だから。年に一つは新しいプログラミング言語を憶えるべき(特にパラダイムが全く異なる言語を)だから。構文抽象というパラダイムはLispにしかないから。

861 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:00:32.63 ]
誰が、一つで全てなんて幻想を持ってるって???まったく、LisperとPerlerがそうなだろうなあ
最も一つに拘ってるのがLisperだからな、初めから矛盾してる
指定されなければpythonつってるのに、それすらも読めないのかよ
Cを指定されることが多いわ。こだわりが無いからpythonなんだよ
お前みたいな頭がダイヤモンドより固い奴が、完全に思考停止して
毎年プログラミング言語を意味もなく覚えたり、意味もなく弄って何かやってるつもりになってると思うと頭がいたくなるわ
プログラミング言語はツールだろ。いや、お前にとってはオナニーの道具なのかもしれないけどさ
必要に応じて使い分けてるだけなんで、ただやることもなくプログラミング言語の中をウロウロしてる浮浪者に何か言われる筋合いはないです

862 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:14:03.09 ]
長文はやめて3行以内に分けてレスしよう
まるで人が多いかのようにみえるよ!

863 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:15:19.05 ]
議論なら良いけど、喧嘩なら他所でやってくれないかな。
自分の常駐してるスレでそういうのやられたら嫌でしょ?

864 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:44:02.56 ]
Lisperが持ってる「見下し」というスペシャルスキルによって、Lispの実のない権威は支えられている
全てのパラダイムが実現できても、実際のプロジェクトにはほぼ使われない
Lisp万能論車の妄想に付き合うのは面倒だが。少なくとも一般人は自由を強いられたいとは思ってないよ
プログラミング作法があるのならそれに合わせたいの。趣味的な誤差でもね。特に見やすさは強制でなくても重視している、残念ながら。

865 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 04:50:45.36 ]
必要に応じて使い分けるなら、構文を知るためにはLispが便利なのも分かるだろ。
一年に一つの言語は「達人プログラマ」だよ。もちろん読んでるよな。

最初から議論じゃなくて喧嘩だろ。未踏に落ちたか知らないけど、変なLispアンチ野郎との。

866 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:00:04.25 ]
作法でなくて人為的に一部の操作をやり辛くしているのが問題だと言ってるんだよ。
書きたい事の足を言語が引っぱるの、しかも実装の必要でもない作者の主義とやらで。
Windozeと同じく一般人がやりたい事はやり易いけど、深い事をやろうとすると足を引っぱろうとする。
実際のプロジェクトに使いたいならscheme以外の言語をどうぞ。CLとかどうでしょうか。あるいは自分が頑張ってschemeのライブラリを書いて下さい。R7RSの議論に参加するのも良いのではないでしょうか。
但しLispのみが構文抽象を扱える重要な言語であるという事実は変わりません。



867 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:00:36.66 ]
もちろん最初から今現在に至るまでずっと両方を邪魔に思ってる。
言わせんな恥ずかしい。

868 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:04:32.64 ]
いや無批判に引用すんなよ。一年に一つの言語なんて馬鹿の極み
それくらいも分からないの?本を読んでも意味をなしてないね

だからさあ、構文を知るためにとか大袈裟なんだよね。噴飯物だよ。それも何かの本の引用なの?
Schemeは書けるけど、別に構文を知るためにSchemeを勉強したわけでもなければ
Lispを見たことなくても構文の勉強は出来るし。そうしてる大学も多いだろ

869 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:06:07.82 ]
邪魔らしいので私は消滅、さらばだ。

870 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:09:23.51 ]
>>866
Lisp至上主義の成れの果てだな、視野が極端に狭い

871 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 05:11:24.33 ]
構文を知るためだけの言語

872 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 07:24:03.06 ]
むしろ構文が1種類しかない言語なんだが

873 名前:デフォルトの名無しさん [2012/01/25(水) 07:47:19.29 ]
Lispは重要な言語じゃないだろw

874 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:21:19.67 ]
わかった。
見下されたい奴は並べ↓

875 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:39:08.59 ]
同じ括弧に見えるけど構文は1個じゃないんだよ

876 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:43:17.70 ]
先頭にあるシンボルを解決した結果が関数かマクロかによって、S式(リスト構造)の
解釈(インタプリテーション)が変わるだけであって、S式を表現するための構文は唯一だ。

あとはアトムのリテラルの記法がいくつかあるだけで。



877 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 09:05:18.84 ]
言語の話をしてるんじゃないの?
ご自分で言語なんだがーつってるのにw

878 名前:855 mailto:sage [2012/01/25(水) 11:36:40.67 ]
>>856
> Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。
>
> これLisperの主観でしょ

違います。
ついでに言えばSchemeと他の大多数のLispとは上の一点に於いて全く違います。
ほとんどのLisp(典型はCommon Lisp)は基本的な言語概念が見えにくくなっています。
実用を重んじて言語設計された結果として、あまりにも余分なものや複合的なものが多いので。
(抽象構文木を直接的に表現できるデータ構造を基本データとして持っているという点はもちろんLisp族すべてに共通ですが)

SchemeはGuy Steeleの若き頃のMITレポートの数々を見ても分かるとおり、それまでの言語概念を突きつめて考察した結果から
可能な限り単純な要素概念だけを言語としては提供して、プログラムを書く側はそれらを自在に組み合わせられるようにする
という言語設計哲学に基づいて言語仕様が作られました。その点では他のLisp族言語よりもAlgol 60やAlgol 68の精神を引き継いだ言語です。
(Revised^6で台無しにされてしまいましたが)

Schemeの開発者たちがAlgol 60のシンプルで例外の少ない言語という精神を引き継ごうとしている事は、Schemeの言語仕様の
タイトルにも表されています。

RubyにせよPythonにせよ、もっと他の言語にせよ、実用で広く使われるのを狙って作られた言語は、Scheme以外の他のLisp系言語と同じく
言語概念が基本要素でなく複合的であったり様々なシュガーで最初から修飾された形でプログラマに提供されているケースが多く、
基本要素概念を単独で用いたいと思うと逆に回りくどい書き方をせねばならないようなケースがしばしばあります。
そこがSchemeとは決定的に違うのです。

Schemeは、少なくともRevised^5までは実用よりも言語の基本要素概念を学び理解する為の言語として言語仕様が策定されて来ました。
だからこそ、実用的な構文は最初からは入れずに体系的な構文拡張の方法を導入して、「シュガーが欲しければ自分で好みの言語に仕上げなさい」
というスタイルで実用側からの言語仕様拡大の圧力に対応して来たのです。

856のような人はSchemeをきちんと勉強した事がなく言語の基本要素概念とは何かを真剣に自分で考えようとした事がないのでしょう。



879 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:44:40.41 ]
>>844
CLでgccなみに高速プログラム作るめんどくささは
cで最初から作った方がましな感じ

880 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:48:28.76 ]
SchemeがLex/Yaccでどんな言語にも変換可能なら
あらゆるアルゴリズムをSchemeで書く有用性もあるのだけどねえ

881 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:50:54.29 ]
>実用側からの言語仕様拡大の圧力に対応して来たのです。

対応できてないから廃れてんだよ

>言語の基本要素概念とは何か

その基本概念も絶対的なものじゃないでしょ

882 名前:デフォルトの名無しさん [2012/01/25(水) 13:17:10.43 ]
>>881
最後の行は内容ある反論できずに相対主義持ち出して議論から逃げた典型だなw

883 名前:デフォルトの名無しさん [2012/01/25(水) 13:45:30.40 ]
Schemeが廃れた原因って10年ちょい前からのプログラミング言語論とかプログラミング論教育の軽視だろ
ACMのカリキュラムでもその手の科目が消えるとかインディアナのFelleisenとか騒いでたし
ACMのカリキュラムも881みたいな
知ったかプログラマに合わせたってことだろ

881も自分に内容あるって言いたきゃ
Schemeとは全然ちがうけど
同じように見かけもフォーマルなセマンティクスも単純な
コンセプトや構文だけで構成されてる
実用言語の具体例あげろよ
878の主張は実用言語は実用めざすから否応なしに複雑になっちまうってことだろ

884 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:35:29.21 ]
言語の基本要素概念とはなんなのか?
まずは855以外の人に聞きたいな

885 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:42:51.26 ]
>>884
おおざっぱだけど言語仕様と言語の基本要素概念は同じものっていう定義でいいだろ。

886 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 17:50:17.74 ]
>>885

>言語概念が基本要素でなく複合的であったり様々なシュガーで最初から修飾された形でプログラマに提供されているケースが多く、
>基本要素概念を単独で用いたいと思うと逆に回りくどい書き方をせねばならないようなケースがしばしばあります。

855の人の意見だと違うものだと取れるけど



887 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:18:04.18 ]
コレはアレから導出できる、みたいなのを突き詰めていった時に
最後に残る要素はなんだろうみたいな話では。

888 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:31:03.57 ]
最後に残る要素は何?

889 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:37:32.86 ]
Lispの簡易実装を読んだらJavaScriptの動作が腑に落ちた。
てかJavaScriptじゃなくてLispにしてくれたらよかったのになあ。

つかHTMLがS式だったらよかったのになあ(笑

890 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:38:41.00 ]
>>888
愛だろ、愛

891 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:40:58.82 ]
>>889
世の中の人が欲しているのは
DartとかCoffeeScriptでLispではない

892 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:48:34.55 ]
(define (f) 3)

int f(void) { return 3; }
は意味論的には同じだけど、
(define (f) 3) => (define f (lambda (x) 3))
で、これはSchemeがCにない無名関数という基本概念要素を持っている。
とか
(define (f x) x)
をCでやることはできない
これはSchemeがCにない動的型付けという基本概念要素(?)を持っているから、とか?

言語仕様のなかでユーザーが利用できる概念のうちsyntax sugarでないもの?
で、Schemeの基本概念要素は標準的なな言語が持ちうる概念を網羅している、という主張?
ちゃんと考えると(怪しい)論文ができあがりそう。

893 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:51:23.81 ]
仕様が50ページだから基本要素概念とはなんなのかって突き止められるし、実感できるけど。
www.unixuser.org/~euske/doc/r5rs-ja/r5rs-ja.pdf

仕様が500ページあると精読するだけで何日もかかるし、実感するには何ヶ月もかかるし、
全部突き止められるのか、怪しい。実装をみるとなると500ページに相当するコードも
読むハメになって、ゲロ吐きたくなる。そして言語の再実装をする奴ほとんどいないだろ。

894 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:55:05.65 ]
実用言語を題材にしても全部の仕様を扱うわけじゃないでしょ
Ocamlのサブセットのmini-Ocamlはたった2000行だっていうし

895 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:03:26.90 ]
処理系実装時のコード量の話なんてしてないのに

896 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:05:51.84 ]
>>895
>実装をみるとなると500ページに相当するコードも
>読むハメになって、ゲロ吐きたくなる。




897 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:14:50.51 ]
>>894
7行スレに3行でLispっぽいものがあがってたけどw

898 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:22:16.92 ]
そんなこと言ったらLispでそのままeval1行じゃん
Camlのサブセットも似たような事をしてる
そういうズルを見て言語を理解したと言えるのかよ

899 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:37:27.53 ]
ルールが一個というのは馬鹿らしいが、ちなみにLispのBNF記法
cui.unige.ch/db-research/Enseignement/analyseinfo/LISP/BNFindex.html

なるほど確かに小さい
このサイトにあるJavaや、Python公式ドキュメントに置いてあるものと比べるまででもなく
根本的に少機能なんだよね。これで全ての機能を実現出来ると反論すかも知れないが
そんなの他の言語でも言えること。結局これが実装は出来ても実用は出来ない理由
そもそもプログラミングする上で(Lispでも)仕様を全部読む必要なんていない。ゲロ吐きたくなる

900 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:42:54.49 ]
BNF記法がなくてコードが仕様の言語とかあったな

901 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:43:27.91 ]
Schemeはlambdaが多機能・高機能すぎて細かい所でネックになる印象

902 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:44:16.12 ]
>>893
その50ページは言い換えれば客寄せパンダ
Scheme特有の概念を普通に説明したら数倍の分量にはなるだろうし
平易な言葉で書き直せば500ページ超えも夢じゃない

903 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:49:07.44 ]
BNF見ても言語は理解できない
C++の例外だけで本になるように
継続だけで本になる
マクロだけで本になる
末尾再帰だけで本になる

904 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 19:49:11.93 ]
>>900 parse.y を読んだこともない馬鹿です、って自白しなくていいのにw

905 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:02:55.57 ]
parse.yで対応できるのは簡単な文法だけ
いまの流行りは手書きだろ

906 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:05:17.97 ]
LISPはパースとかそういう「どうでもいい部分」をほぼ省略できるのが魅力なんだよ



907 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:08:10.24 ]
>>906
言語を使う側からしたら関係ない話だな

908 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:15:05.09 ]
それが言語の仕様読み解くのに関係してるって話だろ
ちょっと前ぐらい読め

909 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:31:40.03 ]
schelogでパースしようとしたら無限ループから返ってこなかった
仕方ないのであきらめた

910 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:35:14.97 ]
>>899
> そもそもプログラミングする上で(Lispでも)仕様を全部読む必要なんていない。ゲロ吐きたくなる
仕様を全部読む必要ないと言うけど、一つの言語を体系的に深く理解して、言語
とはどんなものなのかとか、どういうのが作れるのかとか、ある程度の言語のイ
メージを捉えているから新しい言語でも判断できる話でしょ。

チュートリアルに沿って学習したり、雑務をこなすためにちょっとした雑多な処
理を書いて言語を理解するアプローチも大切だけど、概念を理解してトップダウ
ンで組むのも言語の理解が進む。
>>902
それだと500ページの仕様の言語が5,000ページという話になるじゃん。
pg御大が数学の論文を読むのには時間がかかる。それは一個一個が表現力が豊か
という話で数式とはそういうものだ。

911 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:45:40.04 ]
BNFで読み解ける言語仕様って構文レベルでそ。
>>899のBNFみて分かることって、
LISPって括弧がいっぱいあって入れ子になってるんだなーぐらいじゃん。

912 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:59:30.75 ]
LISPの失敗
・S式をXMLみたいに標準化しなかった(分派ごとに微妙にバラバラ、慢心、環境の違い)
・種類が多い割に今風の静的型とか型推論とか型方面が思考停止状態
その他の欠陥
・括弧がいっぱいあって人を寄せ付けない(見た目が怖い)
・readが成功するまで言語として構文解析できない


913 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:16:56.42 ]
>>912
> ・S式をXMLみたいに標準化しなかった(分派ごとに微妙にバラバラ、慢心、環境の違い)
XMLが絶対善みたいな言い方だな。
> ・括弧がいっぱいあって人を寄せ付けない(見た目が怖い)
htmlのタグ<>が人を寄せ付けないという話は聞いたことないけどなあ。
食わず嫌いな怠惰人間の屁理屈にしか聞こえない。

914 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:21:09.05 ]
<html <head <body <p blah >>>>> とかだったら怖いよ…

915 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:25:10.34 ]
・使われないことをユーザのせいにする

916 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:26:45.54 ]
htmlはネストしてはいるけど、あまり深刻ではないんだよな
冗長な終了タグがあるからだけど
何が終わったかが判るから、閉じ括弧の連続よりは心理的ダメージがが少ない



917 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:28:56.94 ]
角括弧[]のお陰で心理的ダメージ軽減したんじゃなかったんですか!?

918 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:32:36.51 ]
ちょっとつけたし
そこにある名前を見るだけで何が終わったかが判るから、
閉じ括弧の連続よりは心理的ダメージが少ない
名前を利用してエラー検出もできる

S式だと閉じ括弧から開き括弧の横の名前へという目線移動が発生する



919 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:36:03.55 ]
冗長なのは括弧を数えるのにエディタ使えと言うのと同じだから
手書き派以外には受け入れられる
属性ズラズラ並べられるのは嫌いだけど

920 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:56:05.25 ]
>>914
> <html <head <body <p blah >>>>> とかだったら怖いよ…
(html (head (body (p blah ))))
こうすると普通だけどなあ。

vim, emacsだったら(html (head (body (p blah ))))の方が扱いやすいし、冗長な終了タグが
問題なんじゃないの。冗長な終了タグが必要な時ってある? インデントもあるんだし。

921 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:58:31.13 ]
Cの中括弧は複文インデントの文化とネストが比較的緩いから
}}}}}}}}}}こんな連続で閉じて数える事は少ない
つまりLISPは括弧でずいぶん損をしてるという話

922 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:05:08.79 ]
>>920
なんか別スレで迷惑かけてる人と同じ匂いがした

923 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:07:27.06 ]
連続括弧 ))))) とかは、DrRacketみたいなLISP対応エディタ使わないとキツいよね。

924 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:07:54.86 ]
そういえばこんなスレがあった

【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
toro.2ch.net/test/read.cgi/tech/1140006937/

925 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:08:12.88 ]
>>920
(html (head (body (p
blah
))))
いくら慣れてもどの閉じ括弧が何と対応するかは瞬時に判らないでしょ

<html><head><body><p>
blah
</p></body></head></html>

これだと3行目だけ見て判る

926 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:08:23.12 ]
S式の方がやっぱりスッキリしていない? あとがんばれば1ページで表示できちゃうぞ。
そして、文字の色付けすればもっと文句言えなくなるだろ。

XML
ttp://toro.2ch.net/test/read.cgi/tech/1140006937/4
S式
ttp://toro.2ch.net/test/read.cgi/tech/1140006937/17
>>921
エディタにやってもらって数えないから。
エディタなしでもカッコが一つ少ないとかは、なんとなくわかるけど。



927 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:09:17.32 ]
>>921
文末に;の方がうざくね?


928 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:13:40.84 ]
すっきりしてるけどもw
いくら単純でも)))))))))))))))うわあああって人もいるよ
色弱な人は色分けされても困るし


929 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:15:10.36 ]
見慣れない人は、これでもかと連打される閉じカッコには狂気を感じると思うw

930 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:50:15.02 ]
短いが正義ならあれだ、みなまで言わない

931 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:53:47.26 ]
>>925
> <html><head><body><p>
> blah
> </p></body></head></html>
(html
(head
(body
(p blah)
)
)
)
でも
(html (head (body
(p blah ))))
でもいいんじゃないの。

本文これだけなら個人的には(html (head (body (p blah ))))でいいかな。

932 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:58:18.49 ]
あとそもそも論だけど、ある開始タグ・終了タグを変更したいときって開始タグを変更して、
終了タグを変更するわけでしょ? 面倒くさくない?

933 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:00:47.66 ]
で、さっき思いついたけどS式でも任意オプションで
終了タグを入れられるようにしたらどうかな

(html (head (body (p
blah
/p)))/html)
readのエラー検出は向上すると思う


934 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:14:50.76 ]
うむ、]で半端に区別するよりは良いな

935 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:22:55.71 ]
>>933
うざいだけじゃね?
適切なインデントと対応する括弧へのジャンプができるエディタがあれば括弧なんか無いのも同然じゃろ


936 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:26:11.95 ]
問題は、lengthとかリスト数えるとこでいちいち考慮しないとダメな点だな
readとwriteの対称も維持するとreadで省くのもあれだし
まあ却下だなw



937 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:32:55.78 ]
半端に入れるぐらいなら終了タグ強制のS式と別のデータ構造にした方がいいか
もうこの話はやめるわ

938 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:46:21.31 ]
>>937
現状、>>926のS式がエレガントって話でしょ。

939 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:46:40.43 ]
括弧無しでは格好がつかない

940 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 00:03:00.75 ]
インデント(タブ)もカッコも同じようなもんだけどね
html
head
body
p blah

941 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 00:05:03.87 ]
>>940
YAMLかよ!

942 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:19:29.01 ]
>>901
> Schemeはlambdaが多機能・高機能すぎて細かい所でネックになる印象

別にSchemeのlambdaは多機能でも高機能でもない。
単にCやJavaや多くの言語みたいに一度しか使わない関数(手続き)に
わざわざ名前を付ける必要はなくて、関数(手続き)を直書きできるというだけ。

Cの場合、関数には必ず名前を付けなければならない。つまり関数は名前を付けた一種の定数tなわけだ。
ところがそれへのポインタは変数に入れられる。
さらにデータの型(関数の引数や結果の型)として関数へのポインタという「型」もあって他のintなどの型と
同じように使えるかに見える。

つまりCでは整数とか浮動小数点数とか構造体とか関数とかポインタいったデータの種類と記憶域属性(auto, static, extern, constなど)とが
自由に組み合わせられないという意味で直交しておらず、関数に関しては妙な制約がある(constしかダメ)ということ。

そういう制約があるのでCではデータの種類や記憶域属性を基本要素概念として理解するのが面倒になる。
Schemeには基本要素概念同士の組み合わせに関してそういう奇妙な制約がほとんどない。(すぐには思いつかない)
そういう意味で個々の基本要素概念は独立で、各々の概念を理解すれば後は自在に組み合わせて使えば良いから明快なのだ。

943 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:52:26.35 ]
Javaは次のバージョンからlambda使えるようになるみたいだよ

944 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:08:36.17 ]
その前にJavaって関数内関数を定義できたっけ?
その関数内だけでよく使う手続きが、関数の外に宙ぶらりんになってるの見るとイラッとくるよね(´・ω・`)

945 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:09:05.31 ]
>>887
CTMを思い出した。そのパラダイムを実現するための
ギリギリ最小の構文は何かという観点から、
宣言的プログラミングに始まり、構文を少しずつ付け足して世界を広げていく本

記述はOzとかいう言語で、同じような話をLispでもできるだろうけど、
Lispで行うべき必然性もないような気がする

946 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 08:04:58.59 ]
>>943
C#3.0「ラムダ式があれば匿名メソッドなんていらんかったんや……」
C++11「Javaはラムダ式見送ったの?俺もう入れちゃったんだけど」
ECMAScript5「俺はまだ本当のラムダ式を導入していない、この意味が分かるな?」



947 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 08:39:32.65 ]
>>855
きちがいは下手下手連呼せずに黙ってろ

948 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 09:02:00.45 ]
>>947 反論できなくなると黙ってろしか言えない馬鹿は死ね

949 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 11:56:44.56 ]
>>944
おれもCやC++使うとき、関数内関数が書けなくてイラってするときがよくある。
昔CかC++で関数内関数を書いた気がしたんだがきのせいだったんかな(笑


950 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 11:58:49.49 ]
GCC拡張じゃないの

951 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:20:11.55 ]
>>949
Pascalならあったな

952 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:25:25.15 ]
最近はclangならblocksっていうのがある。

953 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:50:56.14 ]
>>949
C++なら関数内structでstatic関数定義すればいい。

954 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:56:42.89 ]
>>953
それはやったことあるけど、書くのもアクセスするのも面倒だよなー(笑

955 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:02:43.07 ]
struct xxx{static }
書くときに増えるのは20文字。呼び出しで増えるのは4文字。
それを面倒といわれても。

名前なしで定義できないのは確かに面倒。
名付けに必要なエネルギーはbodyを書くそれを上回ることが多い。

956 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:09:29.92 ]
> 書くときに増えるのは20文字。呼び出しで増えるのは4文字。
書くときに増えるのは20文字。呼び出しで増えるのは5文字。




957 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 15:09:51.28 ]
>>953
こいつでC++コードを生成すればいいだろ
www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt


958 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 18:05:36.22 ]
最近meta circular evaluator絡みでは、
Javascript/SpiderMonkeyのRiverTrail拡張が面白かった。
Lisp, Schemeの言語拡張だと、Racketの#langがアドホックだけど面白いね。
このスレではRacketを酷評する人もいるけどw

959 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:05:59.20 ]
>>958
Racketは独自の道を歩んでいる感がなぁ(大抵のlisp族はそうだけどさ)


960 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 21:15:04.79 ]
Racketって日本語の扱いはどんな具合なの?

961 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 23:40:50.41 ]
>>960
データの処理はUnicodeの範囲で標準でサポート。iconvを利用できるので、
エンコーディングの変換もほぼ問題ない。

docs.racket-lang.org/guide/encodings.html
docs.racket-lang.org/reference/bytestrings.html

UIについては全部英語だったと思うけど、Racketになってからは触ってないので知らん。

聞くよりは試した方が手っ取り早いと思う。

962 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 09:24:20.85 ]
愛昆布

963 名前:デフォルトの名無しさん [2012/01/28(土) 11:52:11.03 ]
Schemeでclisp位の機能を持った処理系は有りますか?
Racketは高機能すぎてもう少しシンプルなのがよいのですが・・・
guileやgausheはタブコンプリーションや矢印キーが使えなくて使い難いです。


964 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 12:23:14.04 ]
>>963
それは処理系の機能というより環境の話だなあ。
gaucheなら、Emacsで誰かが補完つきのgauche-modeってのを書いてた気がする。
矢印のヒストリならコマンドラインでrlwrap使ってもいいし。
swankは誰か書いてたっけ?
まあ、そういうのを自分で揃えなくちゃならないのが面倒ってのはわかる。


965 名前:963 [2012/01/28(土) 13:22:32.06 ]
rlwrapをインストールしてみましたがこれは便利です!
有り難う御座いました。

emacsだと便利な機能は豊富そうですがemacsは使っていませんし、此れだけの為にインストールしたくありません。


966 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 14:11:04.32 ]
>>963
guile1系とgaucheを使えばいいいんだよ。




967 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 14:46:34.09 ]
readlineをwrapすればいいんだよ

968 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 15:04:53.75 ]
windowsでschemeのパーサー機能を利用したプログラムを配布したいです
clispならこうするようですが
stackoverflow.com/questions/25046/lisp-executable
schemeでexe化できるのはありますか?

969 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 15:22:44.60 ]
Chickenかbiglooが便利。
gaucheでもgauche-statifierを使えば一応は出来る。

970 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 16:24:19.87 ]
>>965
rlwrap gauche でぐぐれば、gaucheの関数名補完できるようにする方法も出てくるよ。


971 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/01/28(土) 17:03:30.76 ]
>>968
exe って言うからには Windows での話ってことでいいのかな。
Gauche のソースコードの中にある mingw-exify が使えると思う。
これは見ればわかる通りコードを文字列のまま埋め込むだけのものなので期待しているものかどうか。
gauche.git.sourceforge.net/git/gitweb.cgi?p=gauche/Gauche;a=blob_plain;f=src/mingw-exify;hb=HEAD
Windows では gauche-install や gauche-config 等が exe になってないと使い勝手が悪いので用意したということみたい。

ライブラリをプリコンパイルするための機構である precomp を使う方法もある。
gauche.git.sourceforge.net/git/gitweb.cgi?p=gauche/Gauche;a=blob_plain;f=src/precomp;hb=HEAD
これは C のコードを生成するのでそのまま gcc 等でコンパイルすることは出来る。
(C のコードと言っても Gauche VM 用のバイトコードが形式として C になるだけ。)

どちらの方法でも VM やライブラリの結合までは面倒見てくれない。
exe 化というのがどの程度のことを期待しているかにもよるけど、
今のところコマンドひとつ、関数ひとつで全工程をやってくれるような都合の良いものは無い。
Gauche のソースコード自体をいじることも含めればどんなことでも出来る可能性はあるわけだけど、
それが出来るくらいならこんなところで訊きもしないだろうしなぁ。

自分が作ったプログラムに必要な部分をピックアップして同梱するのが手っ取り早い配布方法じゃないかな。

972 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:21:13.49 ]
>>969
ありがとうございます。
gnupackのcygwin経由でchickenをインストールし
www.h7.dion.ne.jp/~samwyn/ChickenDoc/Getting%20started.html
にしたがってcsc -o palindrome palindrome.scmとしたら実行バイナリができました

ですが、chickenを入れていないパソコン用に
静的リンクしたスタンドアロン型実行バイナリを作ろうとして
csc -o palindrome -static palindrome.scm
とすると gcc: /usr/bin/libchicken.a: no such file or directoryとなります
調べたら/usr/lib/libchicken.aがあったのでこれを使うようchickenのコンパイラに伝えたいのですが
www.h7.dion.ne.jp/~samwyn/ChickenDoc/Using%20the%20compiler.html
を見てもどう設定するかわかりませんでした
どうすればよいでしょうか

973 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:27:11.38 ]
>>971
はい。windowsを想定してました。
そうなるとcのコードで書き出してgccでexe化することが
無難かと思うようになりました。


974 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:38:20.72 ]
>>972
マニュアルの「コンパイラの使い方」の中の「生成された C ファイルを配布する」の節。
Cのソースを吐かせて、gccでコンパイル。

975 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:41:53.68 ]
>>974
そうするしかなさそうですね。ありがとうございました。

976 名前:963 [2012/01/28(土) 17:44:10.34 ]
>>970
関数名補完も出来る様になり凄く便利に成りました。
有り難う御座いました!




977 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 18:21:35.65 ]
>>975
ごめん、-L<DIR> でcscに直接渡せるっぽい。
www.h7.dion.ne.jp/~samwyn/ChickenDoc/csc.html
chickenはドキュメントがそれなりに揃っているのに、リンクや参照が悪いんだよな。
マニュアルもチュートリアルで検索に不便だから、何とかならないものか。

978 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:05:24.39 ]
slimeみたいにタグジャンプをschemeでもしたい

979 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:20:52.13 ]
gambit-c もcを生成してくれるな

980 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:37:17.44 ]

Lisp Scheme Part34
toro.2ch.net/test/read.cgi/tech/1327819028/

981 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 15:39:53.88 ]
大儀であった

982 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 23:24:23.00 ]
racketもバイナリ吐いてくれるな

983 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 09:50:35.68 ]
>>977
キーワード site:wiki.call-cc.org/manでググる

984 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 10:42:52.41 ]
gaucheって日本語も普通に使えるけど、日本語のsymbolもeq?で判定出来ますよね?

985 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 11:14:16.69 ]
>>983
ググれば出るけど、マニュアルはもっと構造的に作るべき。
無いと思って調べなかった機能が別のページで見つかったりする。

986 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 16:13:42.46 ]
ここじゃなくて開発者の目の届く場所で指摘するべき



987 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 00:47:34.95 ]
SICPの時代は Pascal < Scheme だったようだが結局両方駄目になりそうだ
争いは同じレベルの者同士なんだな

988 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 01:06:59.30 ]
>>987
くわしく

989 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 01:40:00.84 ]
易しくするのが教育だと思ってるような教育用言語は駄目だ

990 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 02:23:12.02 ]
>>987にはPascalのどこが駄目だったかわかるまいな

991 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 03:29:24.98 ]
どこがダメだったかと言われると、
なかなか難しいかもしれない

992 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 03:40:50.07 ]
C言語に似せればPascalはまだまだいけるよ

993 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 06:24:04.59 ]
プリプロセッサマクロを駆使した、Pascal に似ている C言語なら、見たことがあるなぁ…。

994 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 11:44:42.80 ]
>>993
それをCだからメンテしてっていわれたときは死んだわw

995 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 12:57:36.93 ]
ようやっとLisp慣れしてきたらxml系のマークアップが苦痛になってもうた
なんであんなめんどくさい書式なんじゃー!

;;;と絶叫したくなったので書いた、ちょっとだけ反省している

996 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 13:04:56.69 ]
VisualStudioみたいな自動補完環境がないとxmlみたいなものは無理




997 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 13:59:32.26 ]
マークアップが多いのではなく
少ない生データを無駄に水増しするマークアップが苦痛だ

998 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 14:09:17.74 ]
sxmlで書いて変換するんだ。何バレやしないさ。

999 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 14:42:31.08 ]
((lambda(x)(x x))(lambda(x)(x x)))

1000 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 14:44:19.45 ]
その後のメンテを考えるとねぇ……

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<245KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef