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


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

Lisp Scheme Part19



1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 00:14:56 ]
過去スレ
Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/
Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/
Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: ttp://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: ttp://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: ttp://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: ttp://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: ttp://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part8: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: ttp://piza2.2ch.net/tech/kako/987/987169286.html

367 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:46:26 ]
いまいち何が新しいのかよくわからんのよね>Arc

368 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:02:50 ]
ifとか劣化したcondにしか見えない。

alrefは=(≒setf)のためだと思うが、
値を返してしまうので、成否がわからない。
この問題は多値/optional型がFAだと思うのだが…

369 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:06:22 ]
Schemeでも今では大きい、もっと削ってシンプルに、という方向なのかな。
その割には(とりあえず)Schemeで実装されてるとこが本末転倒だけど。

370 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:13:41 ]
シンプルに、っていうか
とにかく記述のコンパクトさにこだわってる感じ
スクリプト言語的な志向性というか

371 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:15:36 ]
tut.txt読んだだけだと
「括弧が少なくて読みづらい」「識別子が短くて読みづらい」
だな
それとなぜかlogoが連想された

372 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:20:26 ]
彼ほどの人物でも「俺様Lisp」の誘惑から逃れることは出来なかったってことか。
あくまで、今のところは、だけど。今後の大化けに期待。

373 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:29:42 ]
もしかしたらSchemeにおける第1級の継続みたいな
画期的な武器があるのかも

374 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:31:50 ]
>>351
余計なカッコがつくのはbeta-reduceで余計なカッコがついてしまうのが原因だった。
;;β変換
(define (beta-reduce l m)
(let ((arg (caadr l))
(body (cddr l))) ;x0 -> (x0), (x y) -> ((x y))
(car (subst arg m body)))) ;(x-) -> x0,((x y)) -> (x y)
α変換の付け替えが違っていた。
(define (alfa-conversion1 f)
(cond ((and (symbol? f)(bound? f)) (bound? f))
((and (symbol? f)(not(bound? f)) f))
((number? f) f)
((null? (cdr f)) (alfa-conversion1 (car f)))
((and (eq? (car f) 'lambda)(symbol? (caadr f)))
(let ((new (genvar 'gen)))
(bound (caadr f) new)
(list 'lambda (list new) (alfa-conversion1 (caddr f)))))
(else (list (alfa-conversion1 (car f))(alfa-conversion1 (cadr f))))))


375 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:34:32 ]
β正規形、とりあえず書き直してみたがアヤシイ。
;;β正規形 β-normal-form
(define (beta-normal-form? f)
(cond ((not (lambda-term? f)) #f)
((symbol? f) #t) ; x0,x1...
((number? f) #t) ; 1,2,3...
((and (list? f)(eq? (car f) 'lambda)
(beta-normal-form? (caddr f))) #t) ;λx.x
((and (list? f)
(symbol? (car f))
(beta-normal-form? (cadr f))) #t) ;(x λx.x)
((and (list? f)(symbol? (car f))(symbol? (cadr f))) #f) ;(x0 x1)
(else #f)))



376 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:35:20 ]
結局ベターなLisp方言ってだけなの?>arc
速度的にあまり期待できないなぁ。
せめてCommonLispで実装してほしかったよ。



377 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:36:53 ]
 リダクション、書き直してみたけど、左側のネストが深くなるとアウト。
(define (reduce1 form)
(cond ((beta-normal-form? form) form) ;β-normal-form
((and (symbol? (car form))
(beta-redex? (cadr form))) ;(x0 M)
(begin (display form)(newline)
(reduce1 (list (car form) (reduce1 (cadr form))))))
((eq? (car form) 'lambda) ;λx.M
(begin (display form)(newline)
(reduce1 (list (car form)
(cadr form)
(reduce1 (caddr form))))))
((eq? (caar form) 'lambda)
(begin (display form)(newline)
(reduce1 (beta-reduce (car form) (cadr form))))) ;(λx.x)M
(else (error "Reduction error"))))


378 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:23:15 ]
>>351
ヒントください。
α変換。(lambda (x) (lambda (y) (x ((lambda (z) z) y))))だとうまくいくけど
そうすると((lambda (x) (lambda (y) x)) y)がうまくいかない。
λx.λy.λz のように深くなっていくときには一番内側のλ式から変換していくと
思うのだけどxyzを順番に変換していくのがよくわからない。


379 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:26:35 ]
>>378
pc11.2ch.net/test/read.cgi/tech/1193743693/485
イータ簡約って奴でしょ。
www.lambda-bound.com/book/lambdacalc/node21.html


380 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:24:32 ]
> Arc
よく見てないけど、グレアムのことだからマクロは使えるんだろうな。

381 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 02:50:21 ]
Arcって車輪の再発明じゃないの。ただのSchemeもどきでしょ。
何か新しいことあるの?

382 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 05:56:09 ]
>>381
知らなきゃ書けない1行目のあとに
知らない奴しか書かない2行目が続くのはどうかと。

383 名前:378 mailto:sage [2008/01/31(木) 07:20:54 ]
α変換については束縛変数のリストをスタックに積めばいいだけだった。
(define (alfa-conversion1 f)
(cond ((and (symbol? f)(bound? f)) (bound? f))
((and (symbol? f)(not(bound? f)) f))
((number? f) f)
((null? (cdr f)) (alfa-conversion1 (car f)))
((and (eq? (car f) 'lambda)(symbol? (caadr f)))
(let ((new (genvar 'gen)) (l '()))
(push-var)
(bound (caadr f) new)
(set! l (list 'lambda (list new) (alfa-conversion1 (caddr f))))
(pop-var)
l))
(else (list (alfa-conversion1 (car f))(alfa-conversion1 (cadr f))))))

(define (push-var)
(set! stack (cons var-assoc stack)))

(define (pop-var)
(set! var-assoc (car stack))
(set! stack (cdr stack)))

384 名前:378 mailto:sage [2008/01/31(木) 07:24:23 ]
多重抽象についてはβ変換を複数の項を扱えるように変更して最左戦略
すればいいみたいなので拡張する。
((lambda (x) (lambda (y) (x y))) a b)
((lambda (x y) (x y)) a b)

385 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:03:30 ]
計算論 計算可能性とラムダ計算
ttp://www.amazon.co.jp/dp/4764901846/

この本を読んでおくとschemeに対する理解は
深まりますか?



386 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:50:23 ]
>>385
理解が深まると思うよ。
Guy L. Steele, Jr.はScheme開発の初期にチャーチの論文を
読んでたらしいから。Lispはλから離れてしまったけど
Schemeはλに近いと思う。

387 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:55:58 ]
>>386
ありがとう。ページ数も少ないし読みやすそうなので
読んで見ます。

388 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:15:01 ]
正直、そういう質問が出るくらいだからまだ他に読む本があるはず。

プログラミング言語の新潮流
www.amazon.co.jp/dp/4320023773/
コンピュータサイエンス入門−論理とプログラム意味論
www.amazon.co.jp/dp/4000061909/
guppy.eng.kagawa-u.ac.jp/2005/AdvProg/
「ラムダ計算 プログラミング言語の数学モデル」
www.kurims.kyoto-u.ac.jp/~cs/csnyumon/appendix_A.pdf

>>387
> ページ数も少ないし読みやすそうなので

あれは純然たる数学の本の体裁だから、
プログラミング言語入門的な本に比べると、
十万ページくらいある感じですよ。
あのシリーズは余分な解説はほとんどなくて骨子のみだし。

389 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:38:46 ]
>>388
>十万ページくらいある感じですよ。

そうだね。

故中西先生のLispの本も同じシリーズだったと思う。
とっつきは悪いけど時間が経てば理解が深まり名著だって
思うようになるんじゃないかな。最初に中西先生のLisp本
読んだときはさっぱりわからなかったもんなぁ。

390 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:42:49 ]
>>388
>>389
そうですか。
もう少しscheme勉強してから読むことにします。
でも絶版になったら嫌なんで買っておきます。

391 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 12:53:47 ]
証明の中でβ変換を並行処理してハァハァする本、という印象があるのだが

Schemeは並行計算や遅延評価に強いわけでもないだろうに

Haskellが「遠い」ように見えるのは型があってマクロがないのが原因だな

392 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:04:05 ]
高橋さんの本を読んでSchemeに対する理解が深まるってのは詐欺に近いと思う。

393 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:30:37 ]
journal.mycom.co.jp/news/2008/01/30/022/index.html

394 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:12:29 ]
>>393
このスクリーンショットは...
journal.mycom.co.jp/photo/news/2008/01/30/022/images/001l.jpg

395 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:28:26 ]
begin ってw
Pascal みたいやな



396 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 21:38:29 ]
pascalていうより、そのまんまschemeでわ。

397 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:22:39 ]
(prn "Hello, World!")

398 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:41:32 ]
MzSchemeとどこがちがうんだ?

399 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:50:41 ]
>>394
なにを思ってこの画面を載せたんだろーか

400 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 22:54:43 ]
いやそもそも^Cでuser breakかけた後はMzSchemeでそ

401 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 23:07:11 ]
>>394
arc関係なさすぎw

402 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:04:08 ]
ほんとに「人気の言語を作るには」がそのまんま形になった感じなんだね > Arc

403 名前:真人間になれ、忍 mailto:sage [2008/02/01(金) 00:10:43 ]
さらしとくw

04:07 PM shinobu@MBPro ~/Downloads/arc0
$ mzscheme -m -f as.scm
Use (quit) to quit, (tl) to return here after an interrupt.
arc> ^Cuser break

=== context ===
/Users/shinobu/Downloads/arc0/ac.scm:904:4
/Users/shinobu/Downloads/arc0/ac.scm:979:7

> (begin
     (display "Hello, World!")
     (newline))
Hello, World!
> ワラ


404 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:23:13 ]
shinobu の OS X ハッキング! にはお世話になっている俺がいる。

405 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 00:43:11 ]
arcつかえねーよっていう高度なdisだなw



406 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 01:01:55 ]
使い方わからずに試行錯誤を繰り返して、^Cしてようやく使えた気になってるのかな?

とりあえず魚拓
s04.megalodon.jp/2008-0201-0059-28/journal.mycom.co.jp/news/2008/01/30/022/index.html
s03.megalodon.jp/2008-0201-0100-52/journal.mycom.co.jp/photo/news/2008/01/30/022/images/001l.jpg

407 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:04:53 ]
なんかnewlispみたいw

408 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 07:40:31 ]
Arc、あんまり飛躍がなくてずいぶん大人しいなあ。ちょっと期待外れ。

409 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 08:37:01 ]
オブジェクトなマクロって何に使うの?>arc

410 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 11:00:14 ]
構文がファーストクラスってことかな?
なら((fn (x) (x T 'foo 'bar)) if)みたいなことができたり
(apply if '(NIL foo bar))みたいなことができるのかな?
CLみたくマクロと特別式に分かれてるのかな?
Schemeみたく構文として(プリミティブと合成の違いはあるけど)一緒くたなのかな?

411 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:01:40 ]
ラムダ式になっているだけに見えるが、
macro-expandとかしなくてもapply出来るわな、動的に。

412 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 12:09:06 ]
arc> (let for (fn () (pr "blub ")) (repeat 3 (for)))
Error: "#<procedure>: expects at least 3 arguments, given 0"

こういう時に匿名マクロが欲しい

413 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 17:32:32 ]
arc> (fn (for) (for))
Error: "#<procedure>: expects at least 3 arguments, given 0"

何か変だと思ったら束縛するより先にマクロ展開してる
マクロと同じ名前の局所変数がマクロを隠すことがない
逆にマクロが変数を隠す問題はfuncallに相当するものを使って回避できる
(リストの先頭に来なければマクロに間違われることもないから)

414 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:56:42 ]
ttp://blog.livedoor.jp/dankogai/archives/50994188.html

415 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 06:13:13 ]
>>385
その本もってるが、定理と証明ばっかりでさっぱり判らん。
1章はともかく、2章辺りから終始論理式と、「〜を仮定すると
〜を満たす〜があるとき〜は〜の〜という」みたいな口調で
うんざりした。だから何、と。書き方が数学屋さん向け。
時代的に無理だろうけど「はじめに」でLISPの基礎理論だ
とか言うなら、それで書いてくれた方が良い。
プログラマの心理は、手段みたいなものは最初どうでもよくて、
結果や効果からの興味で中身がどうなってるか、と関心が
向いてくと思うんだけど、そういうのを期待できる本じゃない。



416 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:19:47 ]
Lispの本質はマクロです
SICP読んだだけの人にはわからんのです

417 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:46:00 ]
>>413
schemeのスコープで評価してないだけじゃないかと。
schemeだと
((lambda (list) (list)) (lambda () 'うんこ))
=>うんこ
ちゃんとうんこが出てきます。

418 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:31:12 ]
ttp://d3.jpn.org/blog/2008/02/arc_source_review_1.html

419 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:16:18 ]
未完成の俺様Lispでポールが爆釣

420 名前:ポール@アークヒルズ mailto:sage [2008/02/02(土) 17:24:44 ]
沢山釣れた(@wぷ

421 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:05:26 ]
アークヒルズってどのポールだよ?

422 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:38:25 ]
arc いいんじゃない。なんか、こう、こざっぱりした感じで。

へ〜、イイ感じじゃん。


423 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:43:34 ]
>>417
これで便秘解消ですね!

424 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:46:12 ]
平方根があるのに三角関数がない?複素数はいいみたい。

arc> (sqrt 2)
1.4142135623730951
arc> (sin 3.14)
Error: "reference to undefined identifier: _sin"
arc> (acos -1)
Error: "reference to undefined identifier: _acos"
arc>
arc> (* 1+1i 1+1i)
0+2i
arc>

425 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:09:55 ]
高階関数はSchemeと同じみたい。ファーストクラス、λと同じ。

(def sum (f n)
(if (is n 0)
0
(+ (f n) (sum f (- n 1)))))
arc> (sum sqrt 10)
22.4682781862041
arc>



426 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:38:53 ]
スピードを比較するのは酷かもしれんけど...

arc> (def tak (x y z)
(if (> x y)
(tak (tak (- x 1) y z)
(tak (- y 1) z x)
(tak (- z 1) x y))
y))
#<procedure: tak>
arc> (tak 12 6 0)
12
arc> time
#3(tagged mac #<procedure>)
arc> (time (tak 12 6 0))
time: 18047 msec.
12
arc>
Schemeで書かれていることを考えれば悪くはない。

427 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:51:27 ]
CommonLisp = ベンツ
Scheme = ポルシェ
Arc = アルファロメオ

428 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:10:43 ]
なんだすぐ錆びるのか Arc

429 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:19:26 ]
また遅れるみたいですね... orz

xach.livejournal.com/156584.html

430 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:56:48 ]
きっと初心者がarcやったら混乱する
ポールは結局、前置記法に嫌気が差しただけに見える
pythonやMLみたいなのを設計した方が受けが良いと思う
頭に括弧がある限り、ただのLISP方言だよ

431 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:25:45 ]
煽りでも荒らしでも喧嘩腰でもないレスに1行も同意できないのは珍しい。

432 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:04:24 ]
Arcは予想通りというか、「Perlがこだわっているもの」を取り込んできた感じ(小飼氏の見方は半分くらい受け付けないけど)。
PaulにとってLispの価値は「美しいこと」より「現実的に強いこと」のほうにあって、
「スケッチ的に手を動かして、試行錯誤で形を作っていける力」「同じことを短く書く力」は
特に大きなウェイトを占めるから、かの言語にある程度近づくのは読めたことだろう。

ただしPerlと違うのは、Lispの構文(あるいは構文の無さ)の範疇でそれをやっているからこそ、
Perlの「しっかり覚えてもなお読みにくいという難しさ」は遠ざけることができているところかな。
「覚えなきゃ手が出せない替わりに、覚えれば物凄い速度で書き下ろせるし、混乱無く読めもする」
という所に着地するために、ArcはLispであることと、LispっぽくないことをPaul流に融合させてると思う。

>>430は「Lispである部分」を4行目、「Lispっぽくない部分」を1行目でネガティブに捉えているのだと思う。
でも、俺にはどちらも一つのヴィジョンのもとに選択され、良くまとまっているように思える・・・・・・のは多分、
俺がPaulの文章を読んでLispの世界に足を踏み入れた人間で、頭がまだちゃんと独り立ちしてないからかもしれないw

433 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:27:48 ]
arcのfnは構造化代入が使える?のね。
srv.arcに
(with ((i o ip) (socket-accept s)) 〜)
みたいな使われ方があって、withの機能かと思ったら、
with自体はarc.arcに
(mac with (parms . body)
`((fn ,(map1 car (pair parms))
,@body)
,@(map1 cadr (pair parms))))
とだけ書いてあった。つまり最初のを展開するとfnにたらい回しされる。
((fn ((i o ip)) 〜) (socket-accept s))
socket-acceptは多値相当をリストで返すんかな?
こういうのは便利のような気もするけど、つい効率の方を気にしてしまう。
名前付き引数ってわけじゃないのか。


434 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 04:18:26 ]
ac.scmに追加したら数学関数も動いた。
;;数学関数追加
(xdef 'sin sin)
(xdef 'cos cos)
(xdef 'tan tan)
(xdef 'asin asin)
(xdef 'acos acos)
(xdef 'atan atan)

arc> (cos 1)
0.5403023058681398
arc> (= pi (acos -1))
3.141592653589793
arc> pi
3.141592653589793
arc>

435 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 05:16:13 ]
文字列の扱いが楽だね。
arc> (+ "abc" "def")
"abcdef"

そういうのアリ!
arc> ("abc" 2)
#\c
あ、いいかも。

lambdaが無いのは寂しいけど
arc> ((fn (x) (* x x x)) 3)
27
arc>
さっぱりして気持ちいいな。

よし、Arc 気に入った。




436 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 06:17:56 ]
文字列を掛けるとどうなるん?
引き算すると??


437 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 06:19:04 ]
(* "a" 5)
=>"aaaaa"
(- "abcde" "bcd")
=>"ae"



な、わけねーだろ

438 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:31:39 ]
型推論によって
整数が期待されている所では
(+ "abc" "defgh" "ij") -> 10
文字列が期待されている所では
(+ "abc" "defgh" "ij") -> "abcdefghij"
リストが期待されている所では
(+ "abc" "defgh" "ij") -> ("abc" "defgh" "ij")
になるとか?

439 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:35:20 ]
>>437
俺Lispはかなり初期からそれやってるw

440 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:42:47 ]
Arcって文字列とリストを同じような感覚で操作できるみたいだ。

arc> (+ '(a b) '(c d))
(a b c d)
arc> (+ '(a b) '(c d))
(a b c d)
arc> (+ "ab" "cd")
"abcd"
arc> (rem 'b '(a b c d))
(a c d)
arc> (rem #\b "abcd")
"acd"
arc>

remはremoveかね。

441 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:45:05 ]
マッカーシー博士がLispを開発した時の気分しだいではこうだったのかもしれない。

(def test (n)
(if (> n 90) 'AA
(> n 80) 'A
(> n 70) 'B
(> n 60) 'C
'D))

シンプルなcond節でifだけで用が足りるからいいかも

442 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:54:15 ]
エディタの自動インデント規則もArc用をちゃんと作りたくなるな。
if とか with とか、2個単位でインデントしたくなる。
(if
 c1
  e1
 c2
  e2)

443 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:37:41 ]
なんかキモ系のAAにしか見えねえw

444 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:40:58 ]
ラムダ算法とかYコンピネータとかの概念を全く知らない
状態でLittle SchemerとかでSchemeを勉強しても
理解できますか?

445 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:43:17 ]
知らないことを開き直るべきではないけど、
とりあえず「知らなきゃどこにも進めない」ってものではないよ。



446 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:51:47 ]
>>>444

全く問題ないよ。
Schemerになりなさい。

447 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:57:42 ]
>>444
読めるよ。全10章中、Yコンビネータが出てくるのは第9章だけ。
これを理解するのに "To Mock A Mockingbird" が巻末で推奨されている。
"Litle Schemer" は習うより慣れろの精神で書かれているので読みやすい。

448 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:02:35 ]
Yコンビネータなんて見りゃどういう事か直感で判るだろ

449 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:03:57 ]
Arcはハッシュが標準装備か。連想リストを使わないでこれもいいかも。

arc> (= var (table))
#hash()
arc> var
#hash()
arc> (= (var 'x) 'x1)
x1
arc> (= (var 'y) 'y1)
y1
arc> var
#hash((y . y1) (x . x1))
arc> (var 'x)
x1
arc>

450 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:11:41 ]
この辺りはCommonLisp風なんだね。

arc> (cdr '())
nil
arc> (car '())
nil
arc> (is '() nil)
t
arc>

451 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:14:59 ]
こんなのもあるんだ〜。
arc> (type "a")
string
arc> (type 1)
int
arc> (type 0.1)
num
arc> (type 'a)
sym
arc> (type '(a))
cons
arc> (type 1+1i)
num
arc>

452 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:19:04 ]
>>445
>>446
>>447
>>448
アドバイスありがとうございます。
C++ばかりやっていて数学的基礎もあまりなく
どうかと思ってたのですが、まずはSchemerシリーズ
3冊を一読してから考えます。

453 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:54:10 ]
一言語を学び始めるのに入門書を3冊読む?気軽にやれよ

454 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 04:14:49 ]
The Little 〜
www.crockford.com/javascript/little.html

455 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:54:21 ]
Arcのリストと文字列って?

arc> (subst 'a '(b) '(a b c))
"aac"
arc> (subst "a" "b" "abc")
"aac"
arc>



456 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:26:47 ]
【普通のやつらの】 Arc Language 0 【上を行け】
pc11.2ch.net/test/read.cgi/tech/1202098949/

ついカッとして立ててみた。悪気はなかった。たとえスレが寂れても
後悔するつもりはない。

457 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:07:50 ]
正直サブタイトルは要らなかったと思う

458 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:15:24 ]
荒し呼んでるようなもんだもんなw


459 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:24:01 ]
ま、スレが盛り上がるのを期待してるよ。おれたちの期待の
斜め上を行ってくれ。w

460 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:29:14 ]
アルファブロガー隔離スレだろ

461 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:55:28 ]
たとえ荒氏でも廃れるよりはマシということかw

Arc自体、ちゃんとしたモノになるまでまだ何年かは時間が掛かるだろう。

462 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:06:57 ]
現役処理系で動く3-Lispの系統の実装ってありますか?
3-Schemeとか、3-Arcでもいいです。

; Smithの元の実装はMacLISPでした。

463 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:12:07 ]
HtDP (How to Design Programs) って読んだ人いる?
www.htdp.org/2003-09-26/Book/
これどんなもんなんかな?

464 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:45:46 ]
>>463
お前が読めばいいだろ。

465 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:32:49 ]
>>464
そんないじわるな事言わないで><



466 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:17:02 ]
何かと思ったら全部オンラインで読めるじゃん
読むぐらい自分でしろよ

467 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:20:38 ]
つーか読みもしないで損得勘定してるのが気に入らんな。
消え失せろ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<210KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef