Lisp Scheme Part21at TECH
Lisp Scheme Part21 - 暇つぶし2ch262:デフォルトの名無しさん
08/04/16 22:09:15
>>259
Gauche-win32-0.8.13.exeじゃだめなの?


263:デフォルトの名無しさん
08/04/16 22:16:20
exeがつくれないとプログラムをしている気にならないんじゃないかな?
Windowsしか知らなかったころはexeをつくれて一人前の開発環境というイメージだった。

264:デフォルトの名無しさん
08/04/16 22:21:32
>>263
自分で使うコードなら別にexeにする必要ないんだけど、ちょいと配布したりするのに実行環境必要とか言うと困るからじゃないの?

どんなプログラムだかしらないけど。


265:233
08/04/16 22:28:13
>>260
理由1、VCの便利な機能が使いたい
理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
というのが本音です。

>>261
> IntelliSenseが使いたいのか
どちらかというとこっちです。
でも後者の方が面白いので、できればこっちを強弁したいですねw

>>262
すみません、書いてませんでしたが自分は>>233です。
C++に組み込むので、別途インストールというのはちょっと考えられないのです。

266:デフォルトの名無しさん
08/04/16 22:33:41
>>260
MinGWはMSYSが要るのか要らないのかはっきりしてほしいw

267:デフォルトの名無しさん
08/04/16 22:39:02
POSIX べったりという表現が面白かった
確かに逆から見たらそう感じても不思議じゃないね

268:デフォルトの名無しさん
08/04/16 22:47:21
>>266
実行だけなら要らない。ランタイムのDLLさえも要らない場合が多い。
最近のVCはRuntime(もちろん自由に再配布できるが)を入れないといけないことが多い。
VCじゃなきゃ嫌んの人はMinGWをよく知らないだけではないかと思う。

269:デフォルトの名無しさん
08/04/16 22:51:25
Schemeは実はC及びC++(のスタックフレーム)とは相性が悪い。
ファーストクラスの継続があるため
関数からreturnする時に
単純にスタックフレームを開放できない。
また、末尾呼び出しの最適化は
C及びC++では行えない。
(だからSchemeの場合はバイトコードインタプリタの方が
効率が良かったりする。)
これらの理由により、ネイティヴコードをポータブルに吐く方法がない為
GCC用のソースは手を入れない限り他の処理系でコンパイルできない場合が多い。

270:デフォルトの名無しさん
08/04/16 22:58:01
>>265
> 理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
> 仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
君がScheme処理系を書けば良いのでは?


271:デフォルトの名無しさん
08/04/16 23:43:31
ちなみにschemeは仕様がすっきりしているだけで、
実行環境はさほど小さくない。処理系もけっこう大きい。


272:デフォルトの名無しさん
08/04/17 00:18:53
書けねえよ

273:233
08/04/17 00:22:42
>>268
自分のプログラムでは外部ランタイムは無用です。
あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。

>>269
・ネイティブスタックを使わず、自前のスタックかメモリを確保すれば
 継続でもコルーチンでもポータブルに作れます(作れるはずです)
・バイトコードを採用すれば、処理系のコードは自然とポータブルになります
・ネイティブコードをポータブルに吐く方法なんて自分は一つも知りません

って、あまり面白くないツッコミですみません。
あと、schemeがポータブルに実装できないわけではですよ。
実際、明らかにwindowsのようなマイナーな環境(?)を無視した作りのgaucheでも、
コア部分はコンパイルできるわけですし。

>>270
今までは、あまり実用にならなそうなマイ言語を作っている人を、
内心バカにしたりもしていたのですが(すみません)
schemeでも他の言語でも、自作の処理系が一つあると意外なところで使えたりするのかもしれませんね。
scheme作るのも面白そうなので、時間があれば是非やってみたいです。

274:デフォルトの名無しさん
08/04/17 00:27:05
スキルないのが丸分かりの自己紹介ありがとう。

275:デフォルトの名無しさん
08/04/17 00:44:29
漏れも学生時代はMacではHyperCardを必要とするスタックは軟弱物。Pascal or Cで実行形式をつくるのがカコイイだと思っていたし、
Win32でもランタイムを必要とするVBを見下し、CをつかってもMSVCRTの依存すら排除しようとしていた経験のある俺には233の気持がわかる気がする。

276:デフォルトの名無しさん
08/04/17 01:44:38
ゲーム作るときはマシン語モニタをBASICで自作することから始める時代の話だな。
そんなMSXが許されるのは小学生までだよねー

277:デフォルトの名無しさん
08/04/17 01:49:42
>>273
GaucheはWindowsを無視はしてないよ。
多少なりともVC++を意識した変更が入っていたはず。

URLリンク(practical-scheme.net)

を参照するといいと思う。マンパワーが足りないから進捗が遅いだけで。

成果をフィードバックしてくれるなら、向こうにとっても渡りに船だろうし、
本気でやる気があるなら、WiLiKiに書き込んでみればいいんじゃない?
上手く協力できれば、双方にとって良い結果になると思うけど。

278:デフォルトの名無しさん
08/04/17 02:12:31
スキームの質問

今、手元にThe Little Schemerがあるんだけど
この本に書いてある例題は全部
Dr.schemeで実行できるの?

279:デフォルトの名無しさん
08/04/17 03:33:26
1行で全部の処理をするんでなくて、
まずcdrする
次にcarする、
最後にcdrする、
と3段階に分けて処理をしたいんだけど、
どうすればいいの?
BASICみたいに
a=(a,b,c)
みたいにリストを変数に代入して、
ってできるの?

280:デフォルトの名無しさん
08/04/17 04:21:40
(let* ((a '(a b c))
(a (cdr a))
(a (car a))
(a (cdr a)))
a)

281:デフォルトの名無しさん
08/04/17 04:27:41
(progn
(setq a '(a b c))
(setq a (cdr a))
(setq a (car a))
(setq a (cdr a))
)
Lispならこんなのでいいんでないの

282:デフォルトの名無しさん
08/04/17 06:53:06
CL全然知らないんだけど手続きぽく書きやすいのかな。

283:デフォルトの名無しさん
08/04/17 07:11:22
端っこに括弧がいるから慣れない人は書きにくいと思う。
Lisp脳が育つと括弧を空気のように感じるようになる。

284:デフォルトの名無しさん
08/04/17 07:41:53
いや、Schemeにくらべてってこと。

285:デフォルトの名無しさん
08/04/17 07:43:50
再帰じゃなくloop使うと手続き型っぽくなるよ。(カッコだらけだけど)

286:デフォルトの名無しさん
08/04/17 08:00:11
>>273
> あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。
いずれEmacs+Schemeに慣れればVisual Studioには戻りたくなくなる。
そうでなければそもそもSchemeには縁がない。

287:デフォルトの名無しさん
08/04/17 08:21:30
>>284
SICPやSchemerシリーズやっている人は、
schemeが手続き型っぽく書けないと思い込んでいる人が多い。
ただそれらのテキストが関数型っぽく書いているというだけなのに。
Common Lispとさほど変わらない。

288:デフォルトの名無しさん
08/04/17 08:57:25
>>287
本当?かなり違うと思ってた。

例外とかgotoとかを手続型と
さほどかわらないように書くにはどうするの?


289:デフォルトの名無しさん
08/04/17 09:32:52
手続き型っぽいのがgoto?

290:デフォルトの名無しさん
08/04/17 09:34:13
つ loopマクロ

291:デフォルトの名無しさん
08/04/17 09:43:41
つ 継続

292:デフォルトの名無しさん
08/04/17 10:06:59
; f(g(h(x)))
(apply (fcompose f g x) x)
みたいなものができる筈なんで>>279の処理も
(fcompose-and-apply cdr car cdr a)
みたいにできるfcompose-and-apply(仮)が書ける気がせんでもない



293:デフォルトの名無しさん
08/04/17 10:08:35
tagbody は?

294:デフォルトの名無しさん
08/04/17 10:13:13
emacs lispならconditon-case(try..catch)とかsignall, error(throw)とか
unwind-protect(finally)とかあるから殆んど手続き型と同じように書けるよ
R6RSにも似たようなものがあるはず

295:デフォルトの名無しさん
08/04/17 11:43:51
>>288
例外はr6rsに入ってただろ。手軽にやりたいなら継続呼べばいいし。
goto相当のジャンプも継続が使えるけど、
継続はラベルじゃなくてオブジェクトなので使い勝手をgotoみたいにしたいなら
自前でラップしなきゃ駄目かもな。

296:デフォルトの名無しさん
08/04/17 13:01:50
S式でいいならマクロでなんでもできる。CLならCインタープリタの実装まであるくらいだ。

297:デフォルトの名無しさん
08/04/17 14:51:41
Google Apps APIs をlispから使う方法ないのでしょうか?

298:デフォルトの名無しさん
08/04/17 17:02:27
>>297
使えよ

299:デフォルトの名無しさん
08/04/17 17:08:01
ないならnilを、あるなら使い方を返していただきたいのですが。

300:デフォルトの名無しさん
08/04/17 17:32:41
>>299
(values nil
"URLリンク(www.cliki.net)"
"Clikiにはズバリはないみたいだけど、
cl-ajaxとかでできるのかな。"
"よくわからない。")

301:デフォルトの名無しさん
08/04/17 21:12:46
>>247
㌧。miniKANRENは徐々に進化しているようでした。
leanTAP⇒KANREN⇒miniKANREN⇒alphaKANREN
URLリンク(www.cs.indiana.edu)
URLリンク(kanren.sourceforge.net)

ParentheCというパーサー(c⇒scheme)を見つけました。
パターンマッチはolegのものを流用してます。
URLリンク(www.cs.indiana.edu)
URLリンク(www.cs.indiana.edu)

Prologもどきと軽く思ってたけどReasoned Schemerって意外に深いのかな。
型推論のHindley-Milner type inferenceとかOCAMLみたいw

302:デフォルトの名無しさん
08/04/17 21:27:16
CPSによるパターンマッチのマクロ by Oleg Kiselyov.
URLリンク(www.cs.indiana.edu)

303:277
08/04/17 23:07:24
>>233の人ー、WiLiKiで、VC++の項目とか、
Windows向けインストーラの話とか、
色々更新されたから行っといでー。

釣りじゃないなら、話し合う絶好の機会だよー。

304:デフォルトの名無しさん
08/04/17 23:33:37
>>286
schemeの処理系を書く環境と
schemeを書く環境はちょっと違うと思うぞ。

305:デフォルトの名無しさん
08/04/17 23:35:06
>>304
SchemeでSchemeを書けばいいジャマイカ

306:デフォルトの名無しさん
08/04/17 23:42:20
いまおれいいこといった
と思ってるに違いない
空気読めない奴の発言は反吐が出る

307:デフォルトの名無しさん
08/04/17 23:49:17
>>306
何でそんな事でいきなりヒートアップするんだよ。

まあ、元の話題はC++にSchemeを組み込みたい、って話だったから、
>>286のレスが明後日の方向を向いてるとは、俺も思うけどさ。

308:デフォルトの名無しさん
08/04/18 00:21:32
>>307
きっと胃が悪いんだよ<反吐が出る

309:デフォルトの名無しさん
08/04/18 00:53:51
SchemeでSchemeの処理系を書いてParentheCでCにポートすればC++にSchemeを組み込めるな。
Cで書かれたTinySchemeをマージするほうが簡単かもしれないがw

310:デフォルトの名無しさん
08/04/18 00:59:13
SchemeでSchemeの処理系を書くならLisp in Small Piecesのサポートページに色々情報がある。
URLリンク(pagesperso-systeme.lip6.fr)

311:デフォルトの名無しさん
08/04/18 01:12:59
なんか知らんが1人イラついてる人が居るな。
本当に自分の方がレベルが高いなら、
別に同じレベルと思われても構わないという態度で
淡々としてれば良いのさ。

あるいはそんなものスルーして自分の興味のある別の、
レベルの高い話を振ればいいよ。

312:デフォルトの名無しさん
08/04/18 01:15:14
(eval (read))ですね、わかります

313:デフォルトの名無しさん
08/04/18 01:16:33
>>278
本の中に動かない例があるけどw
それ以外は全部動くよ。当然だけど。


DrSchemeのライブラリって面白いのが結構あるなぁ
URLリンク(planet.plt-scheme.org)

HtDPやEOPLだけじゃなくSICPやSimplyのためのpltがちゃんとある。
でもLittle用はない。なくても動くから。

314:sage
08/04/18 11:25:53
MOP レシピ集みたいなページはありませんか?

315:デフォルトの名無しさん
08/04/18 12:00:39
XML-MOPのコードはどうよ?

316:デフォルトの名無しさん
08/04/18 17:50:13
ソケット関係で挫折しそうなんだけど、苦労するといいことあるのかな
同じ内容のpythonのプログラムは動くこと確認したんだけど

317:デフォルトの名無しさん
08/04/18 18:04:18
仕事じゃないなら好きにすればいい。

318:デフォルトの名無しさん
08/04/18 18:36:08
>>316
pythonでやれば?

319:デフォルトの名無しさん
08/04/19 01:40:56
URLリンク(www.cs.indiana.edu)
ここのpmatchを、define-macroで書き直すとどうなるでしょうか。
syntax-rules内の'...'の展開のされ方がよく判らんのです。
1つのパターン内に'...'が複数使われているのがあって、
これは残りの同一のパターンにマッチするという事なんでしょうか。

例えばこの部分とか
((_ (rator rand ...) cs ...)
(let ((v (rator rand ...)))
(pmatch v cs ...)))


320:デフォルトの名無しさん
08/04/19 01:53:38
それぞれに(別々に)マッチするって感じだね。
これだから衛生的なマクロは嫌いなのだ。

321:デフォルトの名無しさん
08/04/19 01:54:12
質問が判りにくいですね。つまり上のrandの後の ...と、
csの後の ... の中身は違っててもいいのかどうか?
ってことです。
'...'はその文脈の残り((car . cdr)のcdr)という意味しかない
と考えてよいのでしょうか?

322:デフォルトの名無しさん
08/04/19 01:54:44
>>320
やはりそうですか。
だとするとまぎらわしいですね。

323:デフォルトの名無しさん
08/04/19 02:00:14
あと1つ確認したいのですが、>>319の意味を変えずに
((_ (rator rand . rest1) cs . rest2)
(let ((v (rator rand . rest1)))
(pmatch v cs . rest2)))
こういう風に書き直す事は可能でしょうか?
リストじゃないからできないとか昔どこかで見たような気がするのですが。


324:デフォルトの名無しさん
08/04/19 02:21:56
rand ... の部分は0個でもマッチする
rand . rest1 と書くと1個以上になるから意味が変わってしまう

325:デフォルトの名無しさん
08/04/19 02:30:39
そうだったんか…
キモイなそれ

326:デフォルトの名無しさん
08/04/19 02:53:15
>>324
つまり書き直すなら
((_ (rator . rand) . cs)
(let ((v (rator . rand)))
(pmatch v . cs)))
という事でしょうか?

327:デフォルトの名無しさん
08/04/19 03:00:02
そうだけど実際に使って確認するのが一番いいね

(define-syntax hoge
(syntax-rules ()
((_ x ...) (list x ... x ...))))
デフォルトで ,@ がついてるようなイメージ

(defmacro hoge (&rest x)
`(list ,@x ,@x))

328:デフォルトの名無しさん
08/04/19 03:15:54
((_ ((symbol value) ...) . body)
((lambda (symbol ...) . body) (+ value 1) ...))

とか、すごい展開をするんだよね、 ... って。

329:デフォルトの名無しさん
08/04/19 11:00:44
Commom LISPの方はSchemeのそういうコードを移植したい時
どうしてます?defmacroに変換するようなのないかな。

330:デフォルトの名無しさん
08/04/19 13:00:59
これですね
Scheme Macros for Common Lisp
URLリンク(www.ccs.neu.edu)

331:デフォルトの名無しさん
08/04/19 22:50:21
TinyScheme
URLリンク(tinyscheme.sourceforge.net)

TinyScheme Extensions
URLリンク(heras-gilsanz.com)

OOPS Tiny Scheme Extension
URLリンク(aladdin.sourceforge.net)

TinyScheme for Zaurus
URLリンク(www.alphageeksinc.com)

332:デフォルトの名無しさん
08/04/19 22:53:44
>>309
ParentheCってlambdaすら処理できないみたいだよ。
これでCにポートしろなんて詐欺もいいとこ。

333:デフォルトの名無しさん
08/04/19 23:29:28
使い方を理解しないで使うからジャマイカ?

334:デフォルトの名無しさん
08/04/19 23:56:39
トランスレータに使い方も糞もあるか

335:デフォルトの名無しさん
08/04/20 00:29:25
Scheme処理系は腐るほどある
ライブラリも (C/C++なら) たくさんある
後はそれを組み合わせることを考えよう

336:デフォルトの名無しさん
08/04/20 00:34:22
コイツ>>334、なんでこう喧嘩腰なんだろな。氏ね。


337:デフォルトの名無しさん
08/04/20 00:36:49
糞チョンとシナチク氏ね。

338:デフォルトの名無しさん
08/04/20 01:09:37
ジャマイカ発言の後は荒れるんだよ。

339:デフォルトの名無しさん
08/04/20 01:32:46
とりあえず>>334はいっぺん氏ね

340:デフォルトの名無しさん
08/04/20 03:36:46
>>333
あれって使い方でどうにかなるもんなの?

341:デフォルトの名無しさん
08/04/20 09:17:16
DRAKMAがubuntu 7.10 sbclのasdf-installでこけて止まる

342:デフォルトの名無しさん
08/04/20 12:11:37
>>341
SBCL 1.0.16
DRAKMA 0.11.5
ubuntu 7.10
で今試したけど大丈夫だった。

343:デフォルトの名無しさん
08/04/20 18:55:28
psyntaxがGaucheでも使えるって書いてあるけど、使い方わかんねー。
と思ってたら一発で使えるように同梱されたビルドがあった。
URLリンク(saito.s4.xrea.com)
psyntax.exeってのがそうみたい。
exeにするのってどうやったんだろ?

344:デフォルトの名無しさん
08/04/20 20:35:00
どうでもいい

345:デフォルトの名無しさん
08/04/20 20:42:29
またexe厨か…

346:デフォルトの名無しさん
08/04/20 21:38:38
schemeでなくてlispでexe作ったら?
newlispなんかだと簡単だよ
SBClやCormanLispなんてのもあるけど

347:デフォルトの名無しさん
08/04/20 22:05:06
別に言語まで変える必要もないと思うけど。
処理系のソースがあるんならschemeのソースを埋め込んで
スタートアップで呼び出すようにすれば完成でしょ。
VMで動くようなのはコンパイル後のやつ入れとく。
これだからオプソって意味ないんだよな。

348:デフォルトの名無しさん
08/04/20 22:10:07
>>343
Gaucheのtarball落としたら中にgencompってのがある。
それでVM用コードにして適当なmainだけ書いてgccでコンパイル。

349:デフォルトの名無しさん
08/04/20 22:24:02
「プログラミングGauche」でSchemeデビューしようとしていきなりつまずいてます。
(define 'a #f)
(set! a 1)
(display a)

これは

gosh> quote
gosh> 1
gosh> 1#<undef>

となって動くんですが

(define 'line #f)
(set! line "foo\n")
(display line)

と変えるとエラーになります。

gosh> quote
gosh> *** ERROR: symbol not defined: #<id 0x80eb100 user::line>
Stack Trace:
_______________________________________
gosh> *** ERROR: unbound variable: line
Stack Trace:
_______________________________________

どこが間違ってるんでしょうか?


350:デフォルトの名無しさん
08/04/20 22:32:39
ワロタ
(define 'a
(define 'line
ここが間違ってる。それぞれ
(define a
(define line
が意図するものだと思う。

(define 'a

(define quote (lambda(a)~
と解釈される。

351:デフォルトの名無しさん
08/04/20 22:38:57
>>350
多分 *scheme* バッファの中で一度 (define a なんとか) を
実行してたから、a が定義されていたんですね。
*scheme* バッファを再起動してたら両方とも動かなくなって
気付いたと思うのですが。

ありがとうございました。


352:デフォルトの名無しさん
08/04/20 22:46:14
こういう記述間違いは処理系作者からは斜め上で予測不可能なんだよな。
quoteを再定義したいなんて思わんし、エラーにすべきか。

353:デフォルトの名無しさん
08/04/20 23:51:39
Gauche scheme interpreter, version 0.8.3 [utf-8,pthreads]
という環境で、
#!/usr/bin/gosh
(define (main args)
  (while (not (eof-object? (set! line (read-line))))
  (print line))
  0)
というスクリプトを書いて euc-jp なテキストファイルを読み込ませたら
~$ gosh test.scm <text.txt
*** READ-ERROR: Read error at "(stdin)":line 2: read-line: encountered illegal byte sequence: #*"\xc1\xcf\xc0\xa4\xb5\xad\t1\t1\t"
Stack Trace:
_______________________________________
  0 (read-line)
  At line 3 of "./test.scm"
  1 (letrec ((do (lambda () (if (not (not (eof-object? (set! line (rea ...
  [unknown location]
というエラーになりました。
euc-jpなままで読んでeuc-jpのまま書き出すにはどうすればいいのでしょうか?

354:デフォルトの名無しさん
08/04/21 00:20:03
>>353 gauche.charconv

355:デフォルトの名無しさん
08/04/21 00:46:50
こうなりました。with-ports を使おうとしたら、
*** ERROR: unbound variable: with-ports
となりました。何故?

#!/usr/bin/gosh
(use gauche.charconv)

(define raw-in (current-input-port))
(define raw-out (current-output-port))
(define in (wrap-with-input-conversion raw-in "eucjp"))
(define out (wrap-with-output-conversion raw-out "eucjp"))

(define line #f)

(define (main args)
  (while (not (eof-object? (set! line (read-line in))))
  (display (string-append line "\n") out))
  0)


356:デフォルトの名無しさん
08/04/21 03:59:58
何故?とか言う前にフォルダ内検索しろよ

357:デフォルトの名無しさん
08/04/21 05:06:07
slimeで対応する() に自動で色がつかなくなることがあるのだけど
どうすればもどるの?
他に開いてるlispのバッファーを全部kill bufferすれば直るけど
buff殺さないで直したい

358:デフォルトの名無しさん
08/04/21 05:38:24
>>357
どういう環境だとそうなるの?
漏れはそんな現象に遭遇したことない。
show-paren-modeがなんらかのタイミングでoffになったとか?

359:デフォルトの名無しさん
08/04/21 06:30:08
C-c C-p
を何度もしてるといつのまにかなる

360:デフォルトの名無しさん
08/04/21 08:21:48
>>356のヒントをもとに検索してみた。
/usr/share/gauche/0.8.3/lib$ find . -type f | xargs grep with-ports
/usr/share/gauche/0.8.3/lib$
なにもみつからなかった。


361:デフォルトの名無しさん
08/04/21 13:05:06
lispの場合、どのぐらいの大きさのprogramになったらファイルを分けるの?


362:デフォルトの名無しさん
08/04/21 14:45:07
大きさを基準にしては分けない

363:デフォルトの名無しさん
08/04/21 16:52:39
>>361
package毎に分割しない?

364:デフォルトの名無しさん
08/04/21 19:36:23
日本語の正規表現処理はできないと思っていいのでしょうか?
sbclなのですがどの日本語コードを使うのがお勧めなのでしょうか?

365:デフォルトの名無しさん
08/04/21 20:48:56
cp932と言ってみるテスト

366:デフォルトの名無しさん
08/04/21 21:02:05
Schemeのオブジェクト指向

BOS (Bryan's Object System)
MEROON ・・・Christian Queinnecによる。情報があまり無いけど有限要素法とかつかえるらしい。runge-kutta-4にあきたらやってみる。
SCOOPS (Scheme Object Oriented Programming System)
Tiny CLOS ・・・なんとたったの850行!"The Art of the Metaobject Protocol"に出てくるsimple CLOSよりコンパクトな学習用。
YASOS (Yet Another Scheme Object System)

367:デフォルトの名無しさん
08/04/21 21:16:55
>>364
UTF-8で普通に使える処理系が多い(または増える)と思う

368:デフォルトの名無しさん
08/04/21 21:26:01
>>367
BOMあり?8Nでおk?

369:デフォルトの名無しさん
08/04/21 21:29:06
処理系によるんじゃね?

370:デフォルトの名無しさん
08/04/21 21:49:45
>>355
with-portsは組み込み手続きだから見つからないって変だな。
プラットフォームは何? インストールはどうやった?


371:デフォルトの名無しさん
08/04/21 22:38:45
一方exe厨はバイナリを配った

372:355
08/04/21 22:53:03
>>370
Debian sarge(3.1)で、aptitudeからインストールしました。
Gaucheのバージョン(0.8.3)が古過ぎるんでしょうか。

~$ aptitude show gauche
パッケージ: gauche
ステータス: インストール済み
自動的にインストールされる: no
バージョン: 0.8.3-3
優先度: 任意
分類: interpreters
保守担当者: Hatta Shuzo <hattas@debian.org>
展開サイズ: 4096k
依存: libc6 (>= 2.3.2.ds1-4)
提案: slib
推奨: r5rs-doc, gauche-doc
詳細: A Scheme implementation designed for script writing
Gauche is a Scheme implementation developed to be a handy script interpreter, which
allows programmers and system administrators to write small to large scripts for their
daily chores. Quick startup, built-in system interface, native multilingual support are
some of the author's goals.
~$ gosh -V
Gauche scheme interpreter, version 0.8.3 [utf-8,pthreads]
~$ gosh -i
gosh> with-input-from-port
#<subr with-input-from-port>
gosh> with-ports
*** ERROR: unbound variable: with-ports
Stack Trace:
_______________________________________



373:デフォルトの名無しさん
08/04/22 00:09:50
Gaucheスレ別に立てて関係者がサポート汁。

374:デフォルトの名無しさん
08/04/22 00:28:56
0.8.13のtypoかと思ってたらほんとに0.8.3か。古すぎるだけだと思う。

>>373 ごもっとも。WiLiKiの初心者の質問箱とかの方がふさわしい。


375:デフォルトの名無しさん
08/04/22 01:22:53
よくあるまとめwikiサイトみたいなの作れば良いのに。

376:デフォルトの名無しさん
08/04/22 01:25:54
Schemeのループの構文がわからないので教えてください。
下に書いたコードのbreakがうまく動かないのですがどう書いたら正しいのでしょうか?
大元はRnRSに載っているrunge-kutta-4の計算で、元々は無限ループです。

(letrec (
(n 100)
(ls '())
(loop (lambda (s)
(if (not (= n 0))
((set! n (- n 1))
(newline)
(write (head s))
(loop (tail s))))
(break the-states))))
(loop the-states))

377:デフォルトの名無しさん
08/04/22 01:45:25
((set!
こんな使い方はない
(break
breakはどこにも定義されてない

378:デフォルトの名無しさん
08/04/22 03:11:42
そのbreakはどこを参考にして持ち出してきたの?

379:364
08/04/22 10:06:06
CL-PPCREで日本語を含むパターンを見つけたかった

( scan [ホゲ(プログラム中に直接書いた日本語)]+   , ホゲ(ファイルから読み込んだ日本語) )

同じ ホゲ という単語が入ってるのに認識しなかった

380:364
08/04/22 10:10:58
(print ホゲ(ファイルから読み込んだ日本語))

をslimeでC-C C-P すると動くが C-C C-Cすると動かない(sbcl)

sbcl --load nihongo.lisp
でも動かない


381:デフォルトの名無しさん
08/04/22 10:28:40
>>379
sbclはエンコーディング設定が良くわからないけど、
CLispではCL-PPCREで日本語が問題なく使えた。

382:デフォルトの名無しさん
08/04/22 14:23:17
最近, あちこち SICP だらけなのは SICP の邦訳だ出たせい?
こんなん有り難がって読むくらいだったら, ファイン万物理学読めよorz


383:デフォルトの名無しさん
08/04/22 14:36:12
最近?

384:デフォルトの名無しさん
08/04/22 14:42:04
両方読めばいいじゃん。

385:デフォルトの名無しさん
08/04/22 14:44:21
>>380
ファイルのエンコーディングもsbclの設定もどうなっているか分からないけど、
漏れの手元のutf-8に対応している処理系なら軒並みできている。
設定は各処理系のマニュアルを参照するのが一番確実。

386:デフォルトの名無しさん
08/04/22 16:13:01
Expected class definition, found ( which may not be written here
ってどういうエラー?

387:デフォルトの名無しさん
08/04/22 16:14:33
>>386
エラー原因書いてあるじゃん。


388:デフォルトの名無しさん
08/04/22 16:17:25
教科書もなくはじめて実行してるのでわからないのです。
どっかのサイトからコピペしたらこういうエラーが

389:デフォルトの名無しさん
08/04/22 16:19:56
何の処理系とかどういうコードかとかどのサイトからとかを書かないのは何故?

390:デフォルトの名無しさん
08/04/22 16:24:40
例えばこういうのだったら
(define my-abs
(lambda (x)
(cond ((< x 0) (-x))
((= x 0) 0)
(else x))))

一番前の(にマーカがついててエラーメッセージがでます
どのプログラムはってもこういうメッセージがでるんですけど

391:デフォルトの名無しさん
08/04/22 18:00:25
>>390
君の場合は、もう少し他人とのコミュニケーションの取り方から
勉強した方が良いよ。


392:デフォルトの名無しさん
08/04/22 18:00:35
>>389
人の善意を当てにしてるんじゃない?
なんかそういう質問の仕方増えてきたよね。
ここ親切だからなー。

393:デフォルトの名無しさん
08/04/22 18:06:07
>>386
それただの英語だと思って読んでみな。

394:デフォルトの名無しさん
08/04/22 18:32:46
>>376-378
Schemeでbreakを使ってる例:
URLリンク(www.geocities.co.jp)
URLリンク(www.cs.grinnell.edu)
URLリンク(merd.sourceforge.net)

(letrec (
(n 100)
(loop (lambda (s)
(if (not (= n 0))
(begin (set! n (- n 1))
(newline)
(write (head s))
(loop (tail s)))))))
(loop the-states))

これで動くでしょう。breakいらないよ。

395:デフォルトの名無しさん
08/04/22 18:43:09
>>376-378

URLリンク(practical-scheme.net)

SRFI-1にもbreakは入っている。

396:デフォルトの名無しさん
08/04/22 18:44:59
でも、Schemeでbreakなんて使わないよなJK。www

397:デフォルトの名無しさん
08/04/22 18:45:02
まあ、紛らわしいよなw

398:デフォルトの名無しさん
08/04/22 20:28:16
runge-kutta-4を実際に走らせた。

URLリンク(codepad.org)

399:デフォルトの名無しさん
08/04/22 22:10:25
>>382
Feynman Lectures on Computationも読んだけどけど何か?
SICPにはrunge-kuttaが載ってるけどFeynmanには載ってない。
Feynman厨ウザ

400:デフォルトの名無しさん
08/04/22 22:45:12
「Lisp文化にはLisp 1.5 → MacLisp → CommonLisp の『MIT系Lisp文化』・・・」という文書に出会った。
ほかの系統にはどんなのがあるのでしょうか?GNU系とかかな?w


401:デフォルトの名無しさん
08/04/22 22:51:50
それと対比するならInterlispで代表されるXerox系Lisp文化じゃね?
GNUとか出てくるよりずっと前の話だよ

402:デフォルトの名無しさん
08/04/22 22:56:39
>>400
文化じゃなくて処理系のダイアグラムならあるよ
URLリンク(www.softwarepreservation.org)
URLリンク(www.dreamsongs.com)

文化って意味だと PARC が別系統の最有力なのかな?
良く知らんけど。

403:デフォルトの名無しさん
08/04/22 23:27:15
Lisp 1.5 Programmers Manual
URLリンク(www.softwarepreservation.org)

404:デフォルトの名無しさん
08/04/23 02:43:06
GNUなんてただのパクリ集団じゃん

405:デフォルトの名無しさん
08/04/23 02:46:52
よくわからないなら書かないほうがいいよ

406:デフォルトの名無しさん
08/04/23 03:22:16
いや、本質をよくとらえている。

407:デフォルトの名無しさん
08/04/23 03:24:13
自画自賛乙

408:デフォルトの名無しさん
08/04/23 03:45:33
GNUを擁護したがるのは都合の良い解釈ばっかり見てる
最近知ったやつだけだろ

409:デフォルトの名無しさん
08/04/23 04:06:16
どうしてもGNUが叩きたいという奴以外にとってはどうでもいいだろ。

410:デフォルトの名無しさん
08/04/23 04:14:24
まぁ、GNU知りたての学生さんは
「GNUを叩いてる俺って、なんてわかってる奴なんだろう♪」
ってなもんだわな。

411:デフォルトの名無しさん
08/04/23 05:21:09
>>408
都合の良い解釈もなにも、GNUのポリシーは単純だし、
嫌ならGNUのソフトは使うべきじゃないってくらい単純な話だと思うんだよね。
スレ違だから、他んとこ行って欲しいんだけどw

412:デフォルトの名無しさん
08/04/23 05:25:58
なあ、既成の言語の機能をlispやschemeで
実装してしまうスレ立てないか?

413:デフォルトの名無しさん
08/04/23 06:30:06
>>412
lisp発祥でない機能で、面白いのってどういう機能があるんだろうね。
昔にlispでやってたら駄目なわけだよね?

414:デフォルトの名無しさん
08/04/23 07:27:59
なんで?
多分スレの目的は既成の言語を馬鹿にして諭す事だから
lisp視点で面白いのかは判らないけど

415:デフォルトの名無しさん
08/04/23 08:00:15
>>412
こういうのか?
(define alias define)


416:デフォルトの名無しさん
08/04/23 08:03:33
>>414
なんで、って言われても、そうなの? >413
まあ、なんらかの確信があるんだろうなwww

417:デフォルトの名無しさん
08/04/23 08:10:20
人を見下したかのような人しかいないから、ぴったりだと思って

418:デフォルトの名無しさん
08/04/23 08:37:36
回りくどいスレタイより「lisperが他の言語を馬鹿にして諭すスレ」
でいいよ。

419:デフォルトの名無しさん
08/04/23 09:18:52
…春だなあ。

420:デフォルトの名無しさん
08/04/23 09:20:04
逆に馬鹿にされるのがオチ。

421:デフォルトの名無しさん
08/04/23 09:25:07
>>413
他言語の構文をread macroでやらかすスレとかならおもしろいかもね


422:デフォルトの名無しさん
08/04/23 09:38:51
>>417
コンプレックスがひどいと、そう見えるらしいよ。

423:デフォルトの名無しさん
08/04/23 09:41:28
>>404
元々、プロプラの物をオプンで代替する活動だからね
新規性が売りじゃないから GPL のラベルを付ければ何でもオケ

424:デフォルトの名無しさん
08/04/23 09:45:56
>>421
そいういうんだったら逆になんでもS式に変換してみてほしい。
S式Rubyなunacceptable acceptable lispとか見てみたい。

425:デフォルトの名無しさん
08/04/23 11:08:09
>>424
たしかRuby1.8では、ソースから変換した構文木を直接evalしてたはずだから
それを括弧で囲めばS式になるんじゃないか?

426:デフォルトの名無しさん
08/04/23 13:16:50
今のところRubyは食わず嫌いだが、ソースがS式になるなら使ってやってもいいな

427:デフォルトの名無しさん
08/04/23 14:29:05
RubyはMatzLispでPythonはGuidoLispなんだよ!とかなんとか

428:デフォルトの名無しさん
08/04/23 15:46:41
lispuser.netだかどこかで見せてくれた最高にキモイlispコードってのがまさにそれじゃないの?>> read macroでホゲ


429:デフォルトの名無しさん
08/04/23 18:13:54
春めいた流れになってきたなw

430:グラハム
08/04/23 19:14:42
君達、LispとRubyのいいとこ取りの言語があるのを知らないのかい?

431:デフォルトの名無しさん
08/04/23 19:26:13
>>430
ポールグレアムなら知ってるが、あんた誰?w
スレリンク(tech板)

432:デフォルトの名無しさん
08/04/23 19:32:06
>>431
チャップマンかカーかどっちかじゃね?


433:デフォルトの名無しさん
08/04/23 19:40:11
ろくなライブラリーも無いうちからLispとRubyのいいとこ取りの言語を名乗るから評判悪いんだよなw
むしろGaucheがArcのいいとこ取りすれば解決しそうだ。

434:グラハム
08/04/23 19:58:23
思い出せば私のエッセイもいつも最初は不評だったものだ。

435:デフォルトの名無しさん
08/04/23 20:04:33
世界の料理ショーの人頑張ってライブラリ作れよw

436:デフォルトの名無しさん
08/04/23 20:05:27
ふーむ、、、何故あなたはそう確信するのですか?

437:デフォルトの名無しさん
08/04/23 20:07:01
ニヤニヤ

438:デフォルトの名無しさん
08/04/23 20:11:02
Matz>Graham だな。Lisp厨涙目w

439:デフォルトの名無しさん
08/04/23 20:12:05
何の話だ

440:デフォルトの名無しさん
08/04/23 20:16:10
他の言語にいちゃもんつけるお仕事、ご苦労様です
Ruby厨の人も大変だな

441:デフォルトの名無しさん
08/04/23 20:18:03
Ruby厨さえ居なけりゃ、Rubyも良い言語なのにな。w

442:デフォルトの名無しさん
08/04/23 20:20:28
Lisp On Railsってあるの?

443:デフォルトの名無しさん
08/04/23 20:24:55
それなんて Kahua

444:デフォルトの名無しさん
08/04/23 21:04:35
Kent Dybvigの本と迷ったが一番定評があるコッチをやることにした。

Programmation fonctionnelle en scheme
by Jean-Michel Hufflen, Masson, Paris, 1996
EUR 26.13

日本語版があればDybvigのを読みたかった。
読み終わったらStruktur und Interpretation von Computerprogrammenを読む予定。
でもLittleが流行ってるから先に読みたいな。でも英語がちょっと orz

445:デフォルトの名無しさん
08/04/23 21:11:00
仏蘭西語と独逸語が堪能なら英語くらいなんとかなるだろ

446:デフォルトの名無しさん
08/04/23 21:34:28
独仏国境だから二ヶ国語は馬鹿でも生活の中で自然に覚える。
英語は勉強が必要。でも勉強するならProgrammationの方が楽しい。

447:デフォルトの名無しさん
08/04/23 21:38:34
このスレに常駐したらLispとSchemeが堪能になるようなもんかw

448:デフォルトの名無しさん
08/04/23 21:42:12
>>441
厨が集まる言語の条件:
・誰でも演習レベルまでは直ぐいける。
・ハイレベルに移行するには何らかのセンスor適切なガイドが必要
・エキスパートによって成果が出ている。


449:デフォルトの名無しさん
08/04/23 21:42:51
(* 164.042160 26.13)
⇒4286.421640799999

ぐは、結構高い!

450:デフォルトの名無しさん
08/04/23 22:41:47
>>400-402
Lispには大きく分けて東のMACLISP系と西のInterlisp系の二つの主流が存在。
MACLISP系:Lisp 1.5 → MacLisp → CommonLisp の『MIT系Lisp文化』
Interlisp系 :Interlisp-10→Interlisp-Dの対話型環境の『Xerox PARC系Lisp文化』
GNU EmacsはMacLispから分かれて来てるからMACLISP系に入れる。

451:デフォルトの名無しさん
08/04/23 22:59:22
schemeはその流れに入ってないの?

452:デフォルトの名無しさん
08/04/23 23:39:39
>>451
schemeは当初maclispで実装されたし、影響もそれなりにあるからmaclisp系っていえば
そうとも言えるんじゃないかな。
MIT系であるのは確かだよね。


453:デフォルトの名無しさん
08/04/24 00:12:24
πの計算をストリームを使ってやってみた。
けど、なぜかあまり近づかない。なんでだろ。教えて。

URLリンク(codepad.org)

454:デフォルトの名無しさん
08/04/24 00:13:28
収束の遅い公式を使うからでしょ

455:デフォルトの名無しさん
08/04/24 00:16:33
>>454
ここでは10ぐらいでかなり近くなってる。どして?
URLリンク(www.aomori-u.ac.jp)

456:デフォルトの名無しさん
08/04/24 00:27:29
わかった方教えてください。あしたまた来ます。お願いします。

457:デフォルトの名無しさん
08/04/24 01:00:10
最後の行ですね、わかります

458:デフォルトの名無しさん
08/04/24 01:21:21
>>457
有り難う御座いました。そのヒントで見つかりました。
URLリンク(codepad.org)

でも微妙に値が違ってるようです。3つ目の末尾から。
まだ、他にも間違いがあるんでしょうか?
それとも精度の問題なんでしょうか。

459:デフォルトの名無しさん
08/04/24 01:31:18
write時の問題かな。2進的には同じ数値になってるんじゃないか?

460:デフォルトの名無しさん
08/04/24 01:33:38
3.14159265358979 までは合ってる。
どう見ても問題ありません ><

461:デフォルトの名無しさん
08/04/24 01:40:10
やっぱり合ってそうですか。
計算以外のところが原因なのかな?
ますます原因不明ですが今日のところは落ちます。
有り難う御座いました。またあした。


462:デフォルトの名無しさん
08/04/24 01:42:36
11個目から+nan.0なのか。ストリームの意味無いじゃん。ちょっとワロタ。

463:デフォルトの名無しさん
08/04/24 01:58:14
眠いしよく見てないんで直感だけで書くけど、
euler加速の計算のdenominatorが0になってるんじゃないの?

464:デフォルトの名無しさん
08/04/24 03:00:40
無限ストリームでスマートに多倍長の演算でもしてるのかと思ったら
違うのかよ


465:デフォルトの名無しさん
08/04/24 04:23:07
Amazon.co.jpのプログラミングGaucheのカスタマーレビュー書いたバカ誰よ?
On Lisp書いたの誰だかわからないようなのが何書いても信憑性ないんだけど。
折角いい本なのに余計なことしやがって(-_メ)

466:デフォルトの名無しさん
08/04/24 04:48:55
藻前が書けばいいジャマイカ。
まあ、こんなところでちくちく攻撃してるやつの書評なんか読みたくもないがww

467:デフォルトの名無しさん
08/04/24 04:51:05
Amazonの書評って、分野によらず全然アテにならん。
鋭いこと書ける人は、ブログやら何やらで幾らでも「読者」を獲得できるこの時代、
大企業の威光を借りて「ここならボクちんの鋭いヒヒョウを皆に聞いてもらえるるる~」と興奮しちゃうのは、
「自分では自分の鋭さを信じているが、どういうわけか(笑)他人にはそう思ってもらえない人」
だけになっちゃったんだ。

468:デフォルトの名無しさん
08/04/24 05:00:31
アテになるかはともかく、とっかかりぐらいにはなるぞ
Amazonに限らずネットの情報なんて大部分はそんなものだろう

469:デフォルトの名無しさん
08/04/24 05:39:45
アマゾンレビューなぞ大抵は書きっぱなしの自己満だから気にすんな。


470:デフォルトの名無しさん
08/04/24 09:59:58
GaucheはSchemeの方言(笑)
まあ尼のレビューの意義なんて内容よりも書く事自体にあるんじゃないのか。
文句があるならもっと良いレビューを書けばいいだけの話。

471:デフォルトの名無しさん
08/04/24 10:24:40
自分が思ったことレビュー蘭に書いたくらいでこんだけ叩かれるんだから
Gauche本のレビュー書くのも大変だよなwww
一体、誰が書けば納得すんだよw

472:デフォルトの名無しさん
08/04/24 10:36:43
思ったことを書いたから叩かれるのではなく、その内容がアレだから叩かれるんだよ。
誰が書けば納得するのか、じゃなくて、誰が書いても、内容がまともなら納得するんだよ。

馬鹿じゃないことがその人にとって大変なことなら、レビューを書くのは確かに大変だ。

473:デフォルトの名無しさん
08/04/24 10:41:38
perl,ruby,pythonのようなLL系やHaskellやOCamlのようなML系も独自のmakefile形式を持ってるけど
scheme版のmakeみたいなの無いの?
S式で依存関係とか生成規則をガリガリ書けるようなもの


474:デフォルトの名無しさん
08/04/24 11:52:19
うちの研究室の先輩が作って代々受け継がれているものならある。
結構便利。公開してないけど。

475:364
08/04/24 13:12:26
>>380
自分のバグでした
正規表現で文字の置き換えしようとして
全角文字の後ろ半分のバイトだけ置き換えてたみたいです

476:デフォルトの名無しさん
08/04/24 13:13:21
>>473-474
lispで動くシェルじゃだめなの?


477:デフォルトの名無しさん
08/04/24 14:22:17
>>450
elispはshallow bindingじゃないから、
MacLisp系というのには難がある。
基本関数名もあまりMacLispMacLispしてない。

478:デフォルトの名無しさん
08/04/24 14:32:10
>>477
少なくとも、InterlispよりはMaclisp系だよ。とりあえず defun だし。w

479:デフォルトの名無しさん
08/04/24 14:38:07
>>450
URLリンク(www.levenez.com) みたいに系統樹にしてみると面白いかもな

480:デフォルトの名無しさん
08/04/24 16:57:13
>>477
emacsのリファレンスにもmaclispに強く影響を受けてるって書いてるじゃん。
rmsがmaclispで育ってるんだから当然っていえば当然だと思うけど…。

481:デフォルトの名無しさん
08/04/24 18:48:35
>>479
MirandaとかErlangとかLuaとかAliceとかCgとかHyperTalkとか載ってない。 orz´

482:デフォルトの名無しさん
08/04/24 18:51:13
>>462-464
それSICPに載ってるやん

483:デフォルトの名無しさん
08/04/24 18:54:59
>>479,>>481
最近話題のOzもない。Orz

484:デフォルトの名無しさん
08/04/24 20:10:19
>>482
p.334からp.337の "3.5.3 Exploiting the Stream Paradigm" !

485:デフォルトの名無しさん
08/04/24 20:31:56
>>484
日本語版ではp.198からp.200にあった。

486:デフォルトの名無しさん
08/04/24 21:19:45
Gauche本を読んでcontinuationを理解した春の夕暮れ。
今日は良い日だった。

487:デフォルトの名無しさん
08/04/24 21:24:03
希望の精度まで計算するstream-limitを使った計算例。
>>484-485に書いてあるsqrtの計算をやってみた。πの計算にも使えるハズ。ヤッテナイケドw
URLリンク(codepad.org)

488:デフォルトの名無しさん
08/04/24 21:34:38
>>478
適当なこと言いました。やってみたら計算負荷が高いようです。timeoutしましたw
URLリンク(codepad.org)

489:デフォルトの名無しさん
08/04/24 21:36:23
ここは学坊しかいないのか?

490:デフォルトの名無しさん
08/04/24 21:55:46
いや、声が大きいだけ

491:デフォルトの名無しさん
08/04/24 22:16:21
ln2 の計算。ループ10回で精度ギリギリなのはおんなじ。
URLリンク(codepad.org)

492:デフォルトの名無しさん
08/04/25 00:24:38
今日の勉強の成果。SICP p.328-334
Ex 3.59
exp-series
cosine-series
sine-series
Ex 3.60
mul-series
Ex 3.61
invert-unit-series
Ex3.62
div-series
tan-series

URLリンク(codepad.org)

493:デフォルトの名無しさん
08/04/25 00:44:39
Exploiting the Stream Paradigm !

>>398 runge-kutta URLリンク(codepad.org)
>>458 Pi URLリンク(codepad.org)
>>491 ln2 URLリンク(codepad.org)
>>492 exp-series cosine-series sine-series tan-series URLリンク(codepad.org)


494:デフォルトの名無しさん
08/04/25 01:53:53
>>473
ASDFをGaucheに移植すればいいんジャマイカ?

495:デフォルトの名無しさん
08/04/25 01:59:21
ASDFはCLだす

496:デフォルトの名無しさん
08/04/25 02:37:36
だから移植なんじゃねーの?

497:デフォルトの名無しさん
08/04/25 02:50:04
まずGaucheでCommon Lispを書いて、その上で動かせば桶

498:デフォルトの名無しさん
08/04/25 03:09:06
よしまかせた!


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch