Lisp Scheme Part22 ..
[2ch|▼Menu]
263:デフォルトの名無しさん
08/06/01 03:53:30
>>262
動作を理解しても「こんなのいらね」で終わることもあるからな。良い例が欲しいな。

264:デフォルトの名無しさん
08/06/01 04:16:01
グダグダうるせーんだよ。乞食は氏ね。

265:デフォルトの名無しさん
08/06/01 07:28:43
ambは再帰で書くと分かりにくいが、これならどうだ

(define-syntax amb
 (syntax-rules ()
  ((_ x ...)
   (let/cc yield
    (let/cc fallthrough
     (push! stack fallthrough)
     (yield x))
    ...
    ((pop! stack))))))

266:デフォルトの名無しさん
08/06/01 09:39:35
>>265
そんな動きもしない中途半端な例より過去スレ嫁。
不思議の国のアリスをやってた連中がambを使ってたハズ。

267:デフォルトの名無しさん
08/06/01 10:51:03
Gauche使ってる奴は独自機能を使って煙に巻きたがるんだよなw
push!とpop!の説明しないのかよ?

268:デフォルトの名無しさん
08/06/01 10:53:39
(define-syntax amb
(syntax-rules ()
((_) (fail))
((_ a) a)
((_ a b ...)
(let ((fail0 fail))
(call/cc
(lambda (cc)
(set! fail
(lambda ()
(set! fail fail0)
(cc (amb b ...))))
(cc a)))))))

(define call/cc call-with-current-continuation)

(define fail #f)

(define (require pred)
(or pred (amb)))

(call/cc
(lambda (cc)
(set! fail
(lambda ()
(cc 'no-choise)))))

269:デフォルトの名無しさん
08/06/01 11:22:04
このスレも人増えてなにより

270:デフォルトの名無しさん
08/06/01 11:49:40
(define call/cc call-with-current-continuation)

(define fail #f)

(call/cc
(lambda (cc)
(set! fail
(lambda ()
(cc 'no-choise)))))

(fail) ; => no-choise

271:デフォルトの名無しさん
08/06/01 12:02:19
>>196-197と比較するとambがやってることがわかると思う。

(amb 1 2 3 4 5) ; => 1
(fail) ; => 2
(fail) ; => 3
(fail) ; => 4
(fail) ; => 5
(fail) ; => no-choise

272:デフォルトの名無しさん
08/06/01 12:07:54
>>246
うほっ、これいいね!
出典があるなら教えて〜

273:デフォルトの名無しさん
08/06/01 12:17:57
>>272
それ前スレにも出てた。有名なのかも。

274:デフォルトの名無しさん
08/06/01 12:41:12
>>272
おそらく出典はGuy Steele御大です。
URLリンク(lib.store.yahoo.net)


275:272
08/06/01 12:41:45
ありがと^^

276:デフォルトの名無しさん
08/06/01 12:54:41
#define d define
#d a include
#a <stdio.h>
#a <string.h>
#a <ctype.h>
#d p char*
#d P ,(p)
#d T(E) !strcmp(E,"()")
#d U return
#d W while
#d X sbrk(199)
#d z atof
#d e isspace
#d D A(_)
#d E S(C(_))
#d B(y) p y(_)p _;{
#d G(y,V) B(y)p i;U sprintf(i=X,"%lf",z(E)V z(S(C(D)))),i;}p sbrk(),*S(),*j(),*O,*H;K,Y,M=14;double z();Q(_)p _;{int V=0;W(e(*_))_++;H=_;W(V|!(e
(*H)|*H==')'||(*H=='('&&H-_)))V+=(*H=='(')-(*H== ')'),H++;U H-_;}B(C)U _++,Y=Q(_),_=strncpy(X,_,Y),_[Y]=0,_;}B(A)_++,_+=Q(_);W(e(*_))_++;U O=X,*O='(',strcpy(
O+1,_),O;}B(Z)U _;}B(c)U C(E);}B(q)U A(E);}B(t)p i=E;U H=S(C (D)),sprintf(O=X,T(H)?"(%s)":"(%s %s",i,H+1),O;}B(F)U S(C(A(T(E)?D:_)));}L(i,s)p
i,*s;{U isdigit(*i)?z(i)!=z(s):strcmp(i,s);}B(b)U L(E,S(C(D)))?"()":"t";}B(R)U E;}B(o)U z(E)<z(S(C(D)))?"t":"()";}G(f,+)G(g,-)G(h,*)p r[4][2]={"function" P R,
"quote"P C,"lambda"P Z,"defun"P j};B(j)U r[M][1]=D,*r[M++]=C(_);}p not[99][2]={"if"P F,"equal"P b,"<"P o,"+"P f,"-"P g,"*"P h,"car"P c,"cdr"P q,
"cons"P t,"t","t"};B(S)int Li,s;p u;if(isdigit(*_)|T(_))U _;for(Y=M;Y--;)if(!strcmp(_,*r[Y]))U r[Y][1];u=E,_=D;if(*u-'(')U(*((p(*)())u))(_);s=Li=M;W(!T(_))r[M][1]=E,*r[M++]
="",_=D;O=C(u);W(!T(O))*r[Li++]=C(O),O=A(O);U O=S(C(A(u))),M=s,O;}main(){H=O=X,Y=0;W(Y|!e(K=getchar()))K==EOF?exit(0):0,Y+=(K=='(')-(K==')'),*H++=K;*H=0,puts(S(O))
,main();{printf("XLISP 4.0\n");}}

277:デフォルトの名無しさん
08/06/01 13:04:34
call/ccが名前つきブロックにもなるletrecを内側に持つとgotoできるのか。
letrecをループに使うのは良くみかけるけどね。
(define (count-chars)
(letrec ((loop (lambda (ch count)
(if (eof-object? ch)
count
(loop (read-char) (+ count 1))))))
(loop (read-char) 0)))

278:デフォルトの名無しさん
08/06/02 20:30:36
好みの問題ですけど
相互再帰じゃない場合はnamed letの方が見やすいですね。

279:デフォルトの名無しさん
08/06/02 21:02:33
>>278
こんなとこで言ってないで国際会議の場でGuy Steeleに意見しろよ。

280:デフォルトの名無しさん
08/06/02 22:18:39
先月caltechのカンファで直接言ったんだけど、Fortressの後始末でそれどころじゃないみたい。

281:デフォルトの名無しさん
08/06/02 22:29:13
この間スペックが出たばかりなのに後始末って何するの?

282:デフォルトの名無しさん
08/06/02 23:06:44
スペックが出ちゃえばあとは後始末だけだな

283:デフォルトの名無しさん
08/06/02 23:22:31
Fortressの教科書書いてくれないのかな。

284:デフォルトの名無しさん
08/06/03 00:23:36
>>280はオトコだが、>>279は根性無しの引きもりと言うことですね。


285:デフォルトの名無しさん
08/06/03 00:57:55
>>284
顔真っ赤にして見苦しいよw

286:デフォルトの名無しさん
08/06/03 01:03:13
>>283
Steele って教科書書いた事あるの?

287:デフォルトの名無しさん
08/06/03 01:19:35
>>286
Cの本、Common Lispの本は?Javaのもあるし、もう1冊The High Performance Fortran Handbookもあるけど。
あと、本じゃないけどジャーゴンファイル。
PDFで結構いろいろなマニュアルも見つかる。
このスレでは "The History of Scheme" が有名かな。

絶対に外せないのがコレかな
URLリンク(dspace.mit.edu)

288:デフォルトの名無しさん
08/06/03 01:35:16
サンクス。もっと入門的な書き物の事だと思ってた。
理論的なペーパーならここにあるのじゃダメかな。

URLリンク(research.sun.com)

289:デフォルトの名無しさん
08/06/03 01:50:15
>>288
d。だめってことはないよ。こちらの勝手な希望なのでw
URLリンク(research.sun.com)
こんな感じで200〜400ページぐらいの分量があると全貌が見えるからいいかなと。
Guy Steeleはマニュアル書くと面白い例を出してくれるから期待したいな。
Cの本なんてすごく良かったのに和訳が絶版になって残念だなぁと思う。

290:デフォルトの名無しさん
08/06/03 02:55:58
>>285が痛すぎる件について。

まぁ不問にしてやろうw


291:デフォルトの名無しさん
08/06/03 05:11:11
くだらないやりとり引っ張る奴が一番見苦しい

292:デフォルトの名無しさん
08/06/03 09:08:32
本当に「この話題を引っ張って欲しくない」人は、見苦しいとか煽って余計終わりにくくしたりしません。

ま、勢いで書き残しちゃった自分の痛いレスに触れて欲しくない>>285が、正論のフリして終結を促したものの、
自意識が邪魔してつい余計な「反撃」をしちゃって、終わらせることにも第三者のフリにも失敗、というとこでしょうかw

293:デフォルトの名無しさん
08/06/03 10:23:26
>>286
ない。

294:デフォルトの名無しさん
08/06/03 10:24:15
AI MEMO は Lambda the Ultimate シリーズもだな

295:デフォルトの名無しさん
08/06/03 18:30:30
URLリンク(library.readscheme.org)

296:デフォルトの名無しさん
08/06/03 20:31:19
parser generator を探してみた。さすがは実験言語。ぞろぞろ出てきますw

URLリンク(www.iro.umontreal.ca)
URLリンク(www.informatik.uni-freiburg.de)
URLリンク(www.cs.cmu.edu)

297:デフォルトの名無しさん
08/06/03 20:35:32
>>292
おまえ等クダスレ逝って喧嘩しろ。邪魔。

298:デフォルトの名無しさん
08/06/03 20:40:48
>>296こんなのあるYO!
URLリンク(www.cs.indiana.edu)

299:デフォルトの名無しさん
08/06/03 20:50:11
>>296
エッセンスが好き。

300:デフォルトの名無しさん
08/06/03 21:03:09
遺伝的プログラミング
URLリンク(codepad.org)

301:デフォルトの名無しさん
08/06/03 21:07:21
essenceってLL(1)のSLLGENと比べて敷居が高そうw
そんなこと無さ気に書いてあるけどさw

302:デフォルトの名無しさん
08/06/03 21:09:05
>>298
激しくd。凄いね。

303:デフォルトの名無しさん
08/06/03 21:41:37
>>301
使うの簡単だよ。
開発は大変だったろうけど。
汎用のパーザの部分計算でパーザを生成するから。

304:デフォルトの名無しさん
08/06/03 21:41:58
>>300
なんじゃそりゃ!
(define (equ x) (* 2 (^ x 4)))
という式の微分を求めてるらしいけど。普通の記号処理と違うのに
(* 8 (^ x 3))
と同じ式がちゃんと求まってるw

305:デフォルトの名無しさん
08/06/03 22:14:37
>>300,>>304
URLリンク(www.genetic-programming.org)

306:デフォルトの名無しさん
08/06/03 22:17:13
遺伝的プログラミングで最適化したコードを吐くパーザとかw

307:デフォルトの名無しさん
08/06/03 22:32:33
essenceはScheme48用のpggというProgram Generator Generatorを使うのね。
作られたessenceはProgram Generatorなんだから、できたスキームはプログラムなわけ。
でもスキーム用のpggというProgram Generator Generatorを使うと・・・

308:デフォルトの名無しさん
08/06/03 22:55:01
>>297
本当にそう思ってる人は、
(ごく一部の、目的の為に衝動を抑えるという人類なら大抵できることができないクズを除いて)
そういう喧嘩腰の追っ払い方を試みません。バレバレですw

309:デフォルトの名無しさん
08/06/03 22:56:11
>>307
その再帰の不動点プログラムはいったいなんなんだ。

310:デフォルトの名無しさん
08/06/03 23:05:10
遺伝的プログラミングで関数が収束しているのは一様収束?

311:デフォルトの名無しさん
08/06/03 23:10:05
>>309
Schemeなんじゃないかな。

312:デフォルトの名無しさん
08/06/03 23:26:01
初めてYコンビネータとかambとかGPを見たとき魔法を使ってるみたいだって思った。

313:デフォルトの名無しさん
08/06/04 00:08:36
>>308
本当にそう思っている人も居るからそろそろ察してね。

314:デフォルトの名無しさん
08/06/04 17:58:16
>>309
不動点として処理系を求めることなんてできるのかな?

>>310
世代を増やしてやれば一様収束に近いかな?
世代数より、使える要素の数に対する候補数や木構造の複雑さの許容範囲の方が
解に対して大きく影響を与えるようだよ。
その辺のパラメータを上手に与えないとGPが正しい解を返してくれない。
理論的なことはよくわからないんだけど。

315:デフォルトの名無しさん
08/06/04 20:28:22
>>312
GPは未だに魔法みたいに見える
Yコンビネータとambは解説読むと目から鱗だった(ガッテンボタンいっぱい押す感じ)



316:デフォルトの名無しさん
08/06/04 20:56:57

∩ヘ〜

317:デフォルトの名無しさん
08/06/04 21:07:13
best score of generationが0.001以下なら安心できる解が得られてるというのを目安に使ってる。
理屈抜きにw

318:デフォルトの名無しさん
08/06/04 21:32:08
URLリンク(codepad.org)
この例だと3番目で0.001以下なので正しいと考える。
伊庭研HPにもそう書いてあるw

319:デフォルトの名無しさん
08/06/04 21:42:20
試しにcos x の微分を解かせてみた。一発回答だった。スゲーw
URLリンク(codepad.org)

320:デフォルトの名無しさん
08/06/05 02:17:01
GPってなんすか?

321:320
08/06/05 02:18:48
>>319を見て解決しました
> ; Genetic Programming with Scheme

322:デフォルトの名無しさん
08/06/05 08:19:19
>>314
表示的意味論では、表示関数は不動点。

323:デフォルトの名無しさん
08/06/05 09:58:56
GP=Graham,Paul

324:デフォルトの名無しさん
08/06/05 15:47:07
Little Schemerって何が言いたいのかよくわからないところが多々あるのですが、
ものまね鳥やSICPやいろいろ読んだらありがたみがわかるようになるの?

325:デフォルトの名無しさん
08/06/05 16:51:54
hogehoge schemerシリーズを買おうと思ったら
近くの本屋だとsicpとsimply schemeしか置いてねぇ・・・

326:デフォルトの名無しさん
08/06/05 16:54:50
>>325
それだけ置いてありゃ立派なもんだよ

327:デフォルトの名無しさん
08/06/05 18:06:39
>>325
都会はええのう。うちの近所じゃエクセル本しかないw

328:デフォルトの名無しさん
08/06/05 18:23:27
>>324
シリーズ3冊読んで初めて意味がわかる。
微積とかの数学を知らない人向けのSICPだったのかと。
だから数学が得意な大学生は最初からSICPでいいと思う。
CSを専攻しようか迷ってるならシリーズ3冊を読んだ後ものまね鳥を読んでみると自分の適性が判断できるよ。

ありがたみっていう意味をどう使ってるかによるけど、CSとはどういうものかを知るという意味ではいい本。
何が言いたいのかわかるというのは、CSとはどんなことがらに興味の対象をもっている分野かを理解すること。
それがわからなくてもプログラムは作れる。
けど、バグが入りこまないような理論的裏づけとか、論理プログラミングが欲しいときがそのうちクルと思う。
そのときが来る前の先行投資と思えば安いもんだと思うよ。
悩んで考える時間は若いときにしか持ち得ないからガンガレ。


329:デフォルトの名無しさん
08/06/05 20:12:01
javascriptしかいじったことのないゆとりがSICP読んでるんですけど、
schemeは無名関数内で再帰呼び出しって出来ないんですか?

lambdaの中でそのlambdaを呼び出すみたいな。

javascriptだと
(function(x){return (x)?x+arguments.callee(x-1):0; })(10);
とかやって使うやつなんですけど…

高階演算のとこで使いたいんですが、調べてもうまく見つからなかったです。



330:デフォルトの名無しさん
08/06/05 20:22:55
>>329

(((lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))))
(lambda (func-arg)
(lambda (n)
(if (zero? n)
1
(* n (func-arg (- n 1)))))))
5)

Yコンビネータの雛形が内蔵されている階乗関数になってます。

331:デフォルトの名無しさん
08/06/05 20:23:00
↑みたいなFAQネタ誰かまとめろ

332:デフォルトの名無しさん
08/06/05 20:29:38
(((lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))))
(lambda (func-arg)
(lambda (l)
(if (null? l)
'no-list
(if (null? (cdr l))
(car l)
(max (car l) (func-arg (cdr l))))))))
'(4 5 6 3 4 8 6 2))

333:329
08/06/05 20:29:43
>>330
どうも、ありがとうございます。
なにやら複雑ですね。

>>331
既出でしたか。失礼しましたー


334:デフォルトの名無しさん
08/06/05 20:34:32
(define Y
(lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg)))))))

335:デフォルトの名無しさん
08/06/05 20:35:29
>>330はこう書いてもよい。

(define F*
(lambda (func-arg)
(lambda (n)
(if (zero? n)
1
(* n (func-arg (- n 1)))))))

((Y F*) 5)

336:デフォルトの名無しさん
08/06/05 20:36:15
>>332はこう書いてもよい。

(define M*
(lambda (func-arg)
(lambda (l)
(if (null? l)
'no-list
(if (null? (cdr l))
(car l)
(max (car l) (func-arg (cdr l))))))))

((Y M*) '(4 5 6 3 4 8 6 2))

337:329
08/06/05 20:42:03
>>332
>>334
>>335
>>336

皆さんありがとうございます。なんかすみません。
どれも微妙に難しいコードですが、がんばって理解します。


338:デフォルトの名無しさん
08/06/06 02:15:18
>>328
丁寧なレスありがとうございます。
multirember&coとかアッカーマン関数とか、totalとpartialがどうしたとか、
これらを導出する事で何を言いたかったのかが今ひとつピンときませんでした。
まあ、でも一応Seasonedまでは読もうかと思っています。

339:デフォルトの名無しさん
08/06/06 06:25:04
>>328
> 微積とかの数学を知らない人向けのSICPだったのかと。
> だから数学が得意な大学生は最初からSICPでいいと思う。

これは嘘。目的が全然違う。

340:デフォルトの名無しさん
08/06/06 18:21:20
>>339
どんな本ですか?

341:デフォルトの名無しさん
08/06/06 20:34:58
SQL> SELECT COUNT(*) FROM SICPが好きな人;
----
  1

(,,゚∇゚) !!

342:デフォルトの名無しさん
08/06/06 21:23:17
(define-syntax swap
(syntax-rules ()
((swap a b) (let ((tmp b))
(set! b a)
(set! a tmp)))))

(define-syntax display-line
(syntax-rules ()
((display-line x)
(begin
(display x)
(newline)))))


(define tmp 5)
(define other 6)

(swap tmp other)

(display-line tmp)
(display-line other)

343:デフォルトの名無しさん
08/06/06 21:35:26
(define-syntax rotate
(syntax-rules ()
((rotate a) (void))
((rotate a b c ...) (begin
(swap a b)
(rotate b c ...)))))

(define x 1)
(define y 2)
(define z 3)
(define w 4)

(rotate x y z w)

(display-line x)
(display-line y)
(display-line z)
(display-line w)

344:デフォルトの名無しさん
08/06/06 21:37:26
(define-syntax rotate2
(syntax-rules ()
((rotate2 a c ...)
(shift-to (c ... a) (a c ...)))))

(define-syntax shift-to
(syntax-rules ()
((shift-to (from0 from ...) (to0 to ...))
(let ((tmp from0))
(set! to from) ...
(set! to0 tmp)) )))


(rotate2 x y z w)

345:デフォルトの名無しさん
08/06/06 23:00:40
(require (lib "time.ss" "srfi/19"))

(date->string (current-date) "~Y/~m/~d(~a) ~H:~M:~S")

346:デフォルトの名無しさん
08/06/07 02:08:30
インデント付きで見る用のアンカー

>>342-345

347:デフォルトの名無しさん
08/06/07 12:50:40
誰か教えてくれ

学校の課題で困った

点(x,y) が 傾き a 、y切片が b である 直線 の 上部にあるか、 下部にあるかを 判断する updown? 定義せよ。

ただし、

上部にあるとき #t
下部にあるとき #f

を値として返すように せよ


348:デフォルトの名無しさん
08/06/07 12:56:50
中学校からやり直せ

349:347
08/06/07 13:03:03
>>348
それは一理ありますね

1次関数の勉強をしなおしてもみましたが、ダメでした

350:デフォルトの名無しさん
08/06/07 13:05:58
>>347
ほらよ。そのまま提出しろよ
(define (updown? a b)
"直線上にあったら何を返せばいいんだよこんなクソ問題だすやつは死ね \
もちろん単位なんていらん")


351:347
08/06/07 13:12:11
>>350
ストレートな回答ありがとうございます

私の説明不足です

直線上は考慮するなとのことでした



352:デフォルトの名無しさん
08/06/07 13:18:15
こんな世界に生まれたことを呪いながら人生をリセットすべし

353:デフォルトの名無しさん
08/06/07 13:25:09
>>351
直線上を考慮しないなんてありえない。一次関数の場合、端点が
常に極値になるのだから、直線上かどうかを調べるのは最も重要なことだ。
そんな教師はそちらから願い下げなさい。

354:デフォルトの名無しさん
08/06/07 13:44:58
まずは「上部」と「下部」のテイギからはじめないとな。

355:デフォルトの名無しさん
08/06/07 14:21:14
プログラムを組めないってんならまだしも、一次関数の定義がわからんてどういうことだ?
既知のxを使って算出できる一次関数の値と対象yの値を比べれば良いってアホでもわかりそうなものだが。


356:デフォルトの名無しさん
08/06/07 14:23:56
傾きとか切片とかの意味が判ってないんじゃね?

357:デフォルトの名無しさん
08/06/07 14:25:29
Schemeの課題ってことは大学生以上だと思うけど、一次関数がわからなくても
最近は大学に入れるんだなあ。日本って本当に滅亡にむかってるのだなあ・・しみじみ。

358:デフォルトの名無しさん
08/06/07 14:31:06
大学の定員って志願者より多いらしいから誰でも入れるんじゃね?w

359:デフォルトの名無しさん
08/06/07 14:35:05
>>354
それは、地図の上と下のテイギを決めるようなもんだw

360:デフォルトの名無しさん
08/06/07 14:37:27
上下(じょうげ、うえした)とは、六方位(六方)の名称の一つで、高さ・深さを指す方位の総称。
一定方向に重力のある環境で、重力場の向かう方向、即ち物体が落ちる方向を下(した)、
その対蹠で物体が登る方向を上(うえ)という。
出典: フリー百科事典『ウィキペディア(Wikipedia)』

361:デフォルトの名無しさん
08/06/07 14:40:43
>>357
中学校の総合の時間だったりしてw

>>351
直線の式にxの値を代入してyの値を比較すればわかるだろ

362:デフォルトの名無しさん
08/06/07 14:41:47
地図の上下なら等高線で見て高いほうが上、低いほうが下ってことだな

363:デフォルトの名無しさん
08/06/07 14:44:27
>>347
 class Point
  attr :x, :y
  def initialize(x, y)
  @x, @y = x, y
  end
 
  def updown?(a, b)
  (@y > a * @x + b) ? "#t" : "#f"
  end
 end
 
 a, b = 1, 5
 p = Point.new(1, 5)
 puts p.updown?(a, b)

364:デフォルトの名無しさん
08/06/07 14:47:30
↑変な言語きたー!w

365:デフォルトの名無しさん
08/06/07 14:52:26
>>363
ちょっと見ないうちにLISPも変わったな

366:デフォルトの名無しさん
08/06/07 14:52:44
見た感じRuby?

367:デフォルトの名無しさん
08/06/07 14:59:39
(define updown? (lambda (a . b) (lambda (x . y) (cond ((> y (let ((k x)) (+ b (* a k)))) a (define t #t) t) (else (not #t))))))
(display "こうですかわかりません")

368:デフォルトの名無しさん
08/06/07 16:30:01
ルビーか。@ とか無けりゃ見やすそうなのになあ。惜しい言語だ。

369:デフォルトの名無しさん
08/06/07 17:53:13
ぐはw
釣りだよ。久々にRuby厨降臨か。

370:347
08/06/07 18:18:41
>>363
Ruby…うちの学校じゃやらないと思います

371:デフォルトの名無しさん
08/06/07 18:43:09
予想以上に'end'がキモすぎる

372:デフォルトの名無しさん
08/06/07 18:45:04
MatzLispがどうかしたか?

373:デフォルトの名無しさん
08/06/07 18:59:28
>>14

374:デフォルトの名無しさん
08/06/07 20:01:04
Ruby叩かれまくっててワロタ。
でも、Schemeで答え書いちゃったら>370の勉強にならんからな。つまらんし。

>>368
最近は継承の問題もあって、@使う人少ないよself.xとするのが主流
>>371
endぐらいなんだよ。お前なあ、fortran9xなんかend do/end if/end program
なんだぜ。それに比べりゃたかが三文字だし、
明示的にブロックの終わりを指定できてうれしいじゃん。

375:デフォルトの名無しさん
08/06/07 20:02:53
>>374
>明示的にブロックの終わりを指定できてうれしいじゃん
GuidoLispに対する挑発行為ですねわかります

376:デフォルトの名無しさん
08/06/07 20:07:11
>>374
あの syntax ならむしろ end class とかのほうが良かった。
なんかアンバランスな感じなんだよ。

377:デフォルトの名無しさん
08/06/07 20:09:09
> 明示的にブロックの終わりを指定できてうれしいじゃん。
君は数式読み上げるときに「カッコ閉じる」って言って快感を得る人かな?

378:デフォルトの名無しさん
08/06/07 20:10:32
endの対としてbeginがないのは確かに気持ち悪い
なくてもわかるけどさw

379:デフォルトの名無しさん
08/06/07 20:11:55
class

ssalc
とか

それはそうとSchemeのbeginはなんとかしてほしい

380:デフォルトの名無しさん
08/06/07 20:16:22
Ruby厨の弁解ウゼー

381:デフォルトの名無しさん
08/06/07 20:19:01
>>378
Wirthキター

ってModula-*もないとこはないよな。> BEGIN

382:デフォルトの名無しさん
08/06/07 20:20:20
Lispもcondの次の((いらねえんじゃね?

383:デフォルトの名無しさん
08/06/07 20:25:36
>>382
Paul Graham乙


384:デフォルトの名無しさん
08/06/07 20:29:09
>>377
>君は数式読み上げるときに「カッコ閉じる」って言って快感を得る人かな?
ハァ? 普通言うだろ。閉じカッコの位置が違ったら意味が変わっちゃうこと
もあるし。演算子優先順位の存在しないLisperはこれだから無頓着で困る。

385:デフォルトの名無しさん
08/06/07 20:30:27
ちなみに、Emacsのruby-modeならendはC-cC-eで自動補完してくれるので
書き手が気にする必要はない・・・・ってなんかどっかで似たような話を
聞いたことがあるようなないような。

386:デフォルトの名無しさん
08/06/07 20:31:43
「カッコ閉じる」は言うな。国家国家言う奴もいたけど。w

387:デフォルトの名無しさん
08/06/07 20:33:24
インデントで優先順位を決めるSchemeの変種を考えるやつが居そう

388:デフォルトの名無しさん
08/06/07 20:35:24
そろそろRuby厨KY

389:デフォルトの名無しさん
08/06/07 20:51:26
>>384
> 演算子優先順位の存在しないLisperはこれだから無頓着で困る。

かなりハズしたねw
)ないと困るのはLispでも一緒

390:デフォルトの名無しさん
08/06/07 21:17:07
演算子優先順位なんてまるで関係ないよなw

391:デフォルトの名無しさん
08/06/07 21:19:23
どうやらrubyさんの思考もendのようですね

392:デフォルトの名無しさん
08/06/07 21:23:13
そこでcommon lispのprognですよ

393:デフォルトの名無しさん
08/06/07 21:31:23
progn = beginなら
prog0 = begi0?

394:デフォルトの名無しさん
08/06/07 22:16:36
ANSI Common Ruby

395:デフォルトの名無しさん
08/06/07 22:43:44
漏れの出た学科では「こっか」と読んだ。)。

396:デフォルトの名無しさん
08/06/07 22:51:06
一呼吸置くだけで無問題。いちいちカッコトジルとか言わんでも分かるやろ。まさにKY

397:デフォルトの名無しさん
08/06/07 22:52:14
オッカッ

398:デフォルトの名無しさん
08/06/07 22:52:14
かっこ閉じるがデフォだったが
学校に1人はこっかと読ませる先生がいてだな

399:デフォルトの名無しさん
08/06/07 22:57:33
こっか? シェルスクリプトみたいだよ
if ....

fi

case ....

esac

400:デフォルトの名無しさん
08/06/07 23:17:51
こういうのはどうだろう?

( : かっ
) : っこ

( + 1 2 )
かっ プラ いち に っこ

401:デフォルトの名無しさん
08/06/07 23:30:58
>>396
Haskellの$みたいなのならそれでもいいけど
全部一気に閉じない場合は?

402:デフォルトの名無しさん
08/06/08 00:39:25
>>398
書籍にもあるから結構メジャーなんだと思ってるが。

403:デフォルトの名無しさん
08/06/08 04:32:00
>>400
Dirac先生まで来た!

404:デフォルトの名無しさん
08/06/08 05:23:10
竹内郁雄先生が「こっか」派だった気がする

405:デフォルトの名無しさん
08/06/08 11:41:42
「ぱー」と「れん」だってJargonか何かにあったような

406:デフォルトの名無しさん
08/06/08 13:04:47
Ex. This is Yet Another CPS. Explain it!

(define M
(lambda (f)
(lambda (ls)
(cond
((null? ls) '())
(else (cons (f (car ls)) ((M f) (cdr ls))))))))

(define (add1x) (+ 1 x))

((M add1) '(1 2 3)) ;=> '(2 3 4)

407:デフォルトの名無しさん
08/06/08 13:16:12
本物のCPSならループの途中で脱出できるはずだ

408:デフォルトの名無しさん
08/06/08 13:19:46
>>405
さすがに海外にはnerapと呼ぶ猛者はいないか。アーカードとかレッドラムみたいな。

409:デフォルトの名無しさん
08/06/08 14:07:48
>>407
人生の敗北者

410:デフォルトの名無しさん
08/06/08 15:26:30
何故そう思う?

411:デフォルトの名無しさん
08/06/08 17:32:49
ErlangでConcurrent Scheme作った人挙手ノシ

412:デフォルトの名無しさん
08/06/08 17:35:11
upyr

413:デフォルトの名無しさん
08/06/09 01:02:50
>>406
あ、出典わかって納得w

414:デフォルトの名無しさん
08/06/09 03:00:01
Gauche民もこのスレに集まるの?

415:デフォルトの名無しさん
08/06/09 07:00:06
難民呼ばわりかよ

416:デフォルトの名無しさん
08/06/09 22:34:40
最近Schemeの勉強はじめたんすけど、再帰が全く理解できない・・・orz
誰か助けてー\(*_*)/

417:デフォルトの名無しさん
08/06/09 22:41:56
再帰の何が理解できないんだてめえコラァ!

418:デフォルトの名無しさん
08/06/09 22:57:53
hogehoge lisperシリーズの出番だな

419:デフォルトの名無しさん
08/06/09 23:09:27
>>416
再帰ではなく、単なる手続き呼び出しだ、と思えば良い。
たまたま自分自身を呼んでいるだけ。

420:デフォルトの名無しさん
08/06/09 23:12:26
構造帰納法を思い出せばいい

421:デフォルトの名無しさん
08/06/09 23:12:46
>>416
他言語で再帰を使った経験は?

422:デフォルトの名無しさん
08/06/09 23:47:57
>>416
(ローカル)変数の寿命とスコープって聞いてスッと頭に入ってくる?
いや、COBOLer とかの、ローカル変数って概念がない人がいたりするので。


423:デフォルトの名無しさん
08/06/09 23:52:45
みんな親切で驚きました
もうちょっとがんばってみようと思います


424:デフォルトの名無しさん
08/06/10 07:07:26
416の人気に嫉妬

425:デフォルトの名無しさん
08/06/10 19:59:03
Gaucheのウィンドウズ版のバイナリって日本語使えない上に、
lambdaもちゃんと動作しないという認識であってますか?

426:デフォルトの名無しさん
08/06/10 20:01:32
んなあほな

427:デフォルトの名無しさん
08/06/10 20:06:56
いやマジっすマジっす
こんな感じで計算してくれない

gosh>(define test (lambda (a b) (*a b)))
gosh>test 1 5
1
5

428:デフォルトの名無しさん
08/06/10 20:20:12
>>427
(test 1 5)


429:デフォルトの名無しさん
08/06/10 20:24:49
これは流石にネタだろw

430:デフォルトの名無しさん
08/06/10 20:35:32
僕もネタに一票w

431:デフォルトの名無しさん
08/06/10 20:35:44
びっくりした

432:デフォルトの名無しさん
08/06/10 21:27:09
(define test (lambda (a b) (*a b)))
test 1 5
=>
#<procedure:test>
1
5

433:デフォルトの名無しさん
08/06/10 21:27:49
次は *a で引っかかるだろうな

434:デフォルトの名無しさん
08/06/10 21:36:34
>>428さんの言うとおりやると

(define test (lambda (a b) (*a b)))
(test 1 5)
=>
reference to undefined identifier: *a

となってしまうでしょう。2段構えの手の込んだネタw

435:427
08/06/10 23:05:55
あwwwwwwwwwwwwwwwww

436:デフォルトの名無しさん
08/06/10 23:17:47
>>435
天然キャラ乙。

437:デフォルトの名無しさん
08/06/10 23:45:38
日本語の方のネタもご披露を

438:427
08/06/10 23:50:19
gosh> (print "hello")
#<undef>
gosh> (print "こんにちは")
*** READ-ERROR: Read error at "(stdin)":line 2: EOF encountered in a string lite
ral: "ツつアツ・
Stack Trace:
_______________________________________
gosh> *** ERROR: unbound variable: ツソツ
Stack Trace:
_______________________________________
gosh> *** READ-ERROR: Read error at "(stdin)":line 2: extra close parenthesis
Stack Trace:
_______________________________________
gosh>

439:デフォルトの名無しさん
08/06/10 23:52:37
>>438
> gosh> (print "hello")
> #<undef>
> gosh>

ちょっと待て

440:デフォルトの名無しさん
08/06/11 00:07:52
ごめん
1〜3行目はこうだったw

gosh> (print "hello")
hello
#<undef>


441:デフォルトの名無しさん
08/06/11 00:42:26
Gaucheのネイティブコードと入力したエンコードを言ってみろ。

442:デフォルトの名無しさん
08/06/11 00:50:31
そんなことが判るくらいなら悩まんだろw

443:デフォルトの名無しさん
08/06/11 00:56:14
C:\>gosh -V
Gauche scheme interpreter, version 0.8.13 [utf-8]

入力したエンコードとは!?
コマンドプロンプトにもエンコードとか指定できるんですか
ちなみにテキストファイルにコード書いてShift_JISで保存・実行しても文字化けしました

444:デフォルトの名無しさん
08/06/11 01:25:28
>C:\>gosh -V
>Gauche scheme interpreter, version 0.8.13 [utf-8]

>ちなみにテキストファイルにコード書いてShift_JISで保存・実行しても文字化けしました

>>[utf-8]

445:デフォルトの名無しさん
08/06/11 01:55:19
>>444
UTF-8で保存してみたけどやっぱりダメでした

D:\>gosh test.scm
縺薙s縺ォ縺。縺ッ


あとコマンドプロンプトでそのままコード書いてもやっぱり文字化けですから
これは不具合というか実験中ということで未対応なんでしょうね

446:デフォルトの名無しさん
08/06/11 01:57:39
ちがいます

447:デフォルトの名無しさん
08/06/11 02:07:37
そうですか

448:デフォルトの名無しさん
08/06/11 02:27:03
>>445
どのWindowsを使ってるかは知らないが、コマンドプロンプトで、
UTF-8でエンコードされた日本語が、正常に表示されると思った根拠は?

449:デフォルトの名無しさん
08/06/11 02:48:12
>>445
コマンドプロンプトに、UTF-8でエンコードされた「こんにちは」を出力すると、
そう表示されるな。

(use gauche.charconv)
(print (ces-convert "こんにちは" 'utf-8 'sjis))

お前、ネイティブエンコーディングって何か理解してないだろ?

450:デフォルトの名無しさん
08/06/11 03:29:34
あっ、なるほど
449さんのコードをUTF-8で保存し、実行すると正しく表示されました
Shift_JISで保存し、実行すると文字化けしました

コマンドプロンプトは基本Shift_JISってことですね
(ちなみにVistaもXPも同じ結果になるぽ)

ネイティブエンコーディングってググってもよくわからないですけど、
言語自体の基本となる文字コードのことでしょうか?
Gaucheの場合、UTF-8ですよね

コマンドプロンプトで直接コードを入力するとShift_JISのコードになってしまう
そのコードをGaucheがUTF-8で解釈して(この時点で文字化け)、
得た結果をさらにShift_JISとして出力されるから・・・・
わけわからないことになりますが・・・

451:デフォルトの名無しさん
08/06/11 03:33:43
そこまで判ってて、なぜ「わけわからない」になるのか、わけわからないw

452:デフォルトの名無しさん
08/06/11 03:56:00
>>450
理解したみたいなので、詳しくは書かないけど、
言語自体というか、処理系が内部で使う文字コードのこと。
Gaucheの場合、EUC-JPやUTF-8、ShiftJISなどから選べる。
それで、お前さんの使ってるGaucheはUTF-8でコンパイルされてる。

確かに、Windowsのコマンドプロンプトから使うには不便だろうな。
configureに--enable-multibyte=sjisを指定してコンパイルし直すか、
Emacs経由で使った方がいいと思うぞ。

URLリンク(practical-scheme.net)

453:デフォルトの名無しさん
08/06/11 08:43:32
>>452
UTF-8でビルドした犯人は俺だ。
でもShift_JISでビルドしたものを配布すると他国の人が困るんじゃないかな。
それともGauche-mingw-0.8.13-sjis.exe とかを作る?

454:デフォルトの名無しさん
08/06/11 08:44:57
>>451
毒を出しすぎ。

455:UTF‐8はXML標準…でも日本語「だけ」苦手?(ТΤ
08/06/11 10:18:00
LISPをざっとみた感想です;

「直感的には」わかりにくかったけれど、
「印欧語話者の生成文法で言う言語本能って
 だいたいこんな感じなんじゃないか?」と思った。
(英語で隠れてるが、ドイツ語は剥き出し?)
→この「発想パターン」は何度でも「来る」。

私は参照(接続/冠詞)型主語言語話者でなくて
近傍(焦点‐集合操作)型主語言語(日本語)話者w
集合操作による構文は経路‐直線的間接参照端点:
 「静的・直線的な論理」:印欧語族の構文法とは違う。
(ドジスンの指摘したとおり論理対象空間は本来動的で、
 各所で前提が違う方が普通だから、直線化は不可能。)

=英語的言語感覚でなら「直感的に使える優秀な言語」。

英語(印欧語)センスを鍛えようw ゎぁぃ モレオワタ(AA略)

456:デフォルトの名無しさん
08/06/11 11:30:34
個人的には、Lispは「言語」ではないと思ってる。
図形、地図、表、レゴブロック、そういったもの達のほうにずっと近い。

だから>>455を読んで、日本語の話者だから戸惑うのではなく、
言語に触れるモードで触れるから戸惑うのではないか、みたいなことを感じた。

457:デフォルトの名無しさん
08/06/11 11:52:23
黒板に自然法則とか書く時はそれでいい
プログラマの意図が分かるように書きたいときは、言語っぽくないと困る

458:デフォルトの名無しさん
08/06/11 12:09:57
>>455
日本語もまともに書けないのはよくわかった。

459:デフォルトの名無しさん
08/06/11 12:50:18
>>458
自分の読解力のなさを棚にあげるのはやめようぜ

460:デフォルトの名無しさん
08/06/11 12:56:30
>>455
そんじゃ、印欧語話者の間でPy(ピー)が人気なのは何で?素朴な疑問〜


461:デフォルトの名無しさん
08/06/11 13:03:57
というか、国際的にもLisp/Schemeは日本では大人気。

462:デフォルトの名無しさん
08/06/11 13:04:09
>>469
ほう、なら455を日本語で説明してくれんか?
3行目から出てくる括弧の使い方から。
特攻の拓みたいに特殊な言語かと思ったよ。

463:デフォルトの名無しさん
08/06/11 13:04:37
ごめん459だった。

464:デフォルトの名無しさん
08/06/11 13:14:22
「直感的には」わかりにくかったけれど、
→ 直感的には判りにくいけれど、
「印欧語話者の生成文法で言う言語本能ってだいたいこんな感じなんじゃないか?」と思った。
→ 印欧語話者の生成文法で言う「言語本能」って、大体こんな感じなんじゃないか?と思った。


465:デフォルトの名無しさん
08/06/11 13:54:50
>>453
Windowsのことはよく知らないんだけど、入出力コードはカレントロケールに合わせる
みたいなことって難しいの?

466:デフォルトの名無しさん
08/06/11 13:56:52
>>459
俺も>>455が何を言いたいのか理解できなかった。
読解力無いのかなあ。

467:デフォルトの名無しさん
08/06/11 14:05:44
>>464
5行目以降もまるで判らんので、その調子で翻訳お願いしますね。>459
こんな物を読解する能力なら不要だと確信してるけど、
>>456でいきなり会話が成立した(らしい)事が、本当に不思議でしょうがない。


468:デフォルトの名無しさん
08/06/11 14:08:50
LISP使いはスノッブが多いな
GEBとかメタマジックゲーム読んで悦に入ってそう

469:デフォルトの名無しさん
08/06/11 14:23:47
コンプレクッスですか

470:デフォルトの名無しさん
08/06/11 14:24:44
>>455が理解できない一人でーす。

>>461
「国際的にも」「日本では」
国際的なのか、日本だけなのか、はっきりしる!
…みたいな日本語の乱れについての話題なのかな?今は。
外国人が一生懸命コミュニケーションしようとする試み
なのかもしれないけど、漢字ひらがな並べれば良い、って物じゃないんです。
半端に学ばれたままだと相手を不愉快にさせますよ。

471:デフォルトの名無しさん
08/06/11 14:32:23
2ちゃんの定型文だけはしっかり使うガイジンかよw
字は読めないけど日本のマンガには詳しい、みたいな。

472:デフォルトの名無しさん
08/06/11 14:43:03
いまのとこ一方的に文章吐き出す機能しかないみたいだから
受け答えは期待出来ないと思う

473:デフォルトの名無しさん
08/06/11 15:34:47
>>465
このへんに問題点が書かれている。
URLリンク(practical-scheme.net)
これはVC++の話だけどMinGWも同様と思われる。


474:デフォルトの名無しさん
08/06/11 15:37:14
>>462
俺も理解できないんだが、
>>456が回答してるんだから
理解できる文章なんだろ。
俺たちが読解力不足ってだけで。
と思っただけ。

475:デフォルトの名無しさん
08/06/11 15:40:11
文章を理解したのではなく、その他の能力(ESPなど)を用いたのではないかと思う

476:デフォルトの名無しさん
08/06/11 16:06:49
文章はともかく言葉の意味がわからない
言語学用語なのかな?
あるいはLispを齧ったばかりの455さんが戯れに組んだELIZAじゃないだろうなw

477:デフォルトの名無しさん
08/06/11 16:08:45
455、人気者だなw

478:デフォルトの名無しさん
08/06/11 16:19:09
>>450
MS-Windows使わない人なんでハズしている可能性あるが…

この端末エミュレータで解決できんかね?
実行するコマンドの文字コード指定できるみたいだが。
URLリンク(ja.poderosa.org)

Win32のコンソールAPIは最低限の依存で済ませているみたい。
Gaucheもそうだろうから、利用できるんじゃないか。

479:デフォルトの名無しさん
08/06/11 17:02:49
Lispは素晴らしい言語だと思うのですが
Lispが生き残ってるのはEmacsのおかげ
実用には耐えないが一部ハッカーの趣味で使われている
など否定的な意見のみが見られてイマイチ本気になれません
Lispで作られたアプリケーションを教えていただけないでしょうか

480:デフォルトの名無しさん
08/06/11 17:05:39
マルチかよ

481:デフォルトの名無しさん
08/06/11 17:08:28
これは酷い

482:デフォルトの名無しさん
08/06/11 17:29:13
>>455-479の人気に嫉妬


483:デフォルトの名無しさん
08/06/11 17:30:39
【入門】Common Lisp その4【質問よろず】
スレリンク(tech板:860番)

860 名前:入ってしまえば天国なんだね…。[sage] 投稿日:2008/06/11(水) 11:01:38
LISPに最初から挫折しそうになって、あちこち見ています。

使用者例が少なすぎて発想パターンを断言できないけど、
思考‐発想タイミングから言えば基本的に敷居「だけ」が
高い言語のようだし、初心者を甘やかしても良さそう。

ところで、この言語で言えば印欧語族のロシア語みたいな
性格を見て今、ぐぐってみたんだが…ちょw大当たりww
これは…すごいのはキャラが立ってるLISPだなwww

これが、印欧語族の中では英語的なC言語系だと…
ぐぐってみた…ごめん、もう何も言う事ないwwww
(英語は「敬語」を始め、高度習得が困難です。)

対照的すぐる…(もうちょいがんばれば、あるいは…?



484:デフォルトの名無しさん
08/06/11 17:30:42
>>479
無理して本気になる必要ないよ。
好きなことだけ本気でやればいい。
仕事なら話は別だけどね。

485:デフォルトの名無しさん
08/06/11 17:33:54
>>474
おいおい、弁解するのはかまわないけど、
勝手に「俺たち」で括るのはやめてくれよ。
お前みたいな言う事がコロコロ変わる幼稚な奴と
一緒にされたら気分悪いだろ。


486:デフォルトの名無しさん
08/06/11 17:36:15
ブログペットやマルチにいちいちマジレスする必要もないと思うんだ。(´・ω・`)

487:デフォルトの名無しさん
08/06/11 18:04:32
>>479
これはひどいww

488:デフォルトの名無しさん
08/06/11 18:41:12
>>485
必死すぎw

489:デフォルトの名無しさん
08/06/11 18:57:30
>>488
必死だから何だ?
マジで気持ち悪いからな。お前も含めて。
書き逃げばっかりしてないで意見があるなら書けよ。

490:デフォルトの名無しさん
08/06/11 19:32:58
URLリンク(www.inf.hs-zigr.de)

#!C:/Programme/PLT/mzscheme -r

(require (lib "cgi.ss" "net"))

(display "content-type: text/html") (newline)
(newline)

(display "<HTML>")(newline)

(display "<HEAD><TITLE>cgi-script's response</TITLE></HEAD>")(newline)

(display "<BODY>")(newline)

(display "Hello, I'm Mr. ")
(display (extract-binding/single 'surname (get-bindings)))
(display ". <BR>")(newline)
(display "Just call me ")(display (extract-binding/single "firstname" (get-bindings)))
(display ". <BR>")(newline)

(display "</BODY>")(newline)

(display "</HTML>")(newline)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4739日前に更新/247 KB
担当:undef