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


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

Lisp Scheme Part17



1 名前:デフォルトの名無しさん [2007/04/20(金) 19:41:39 ]
Lisp全般のスレです

過去スレ
Part16: pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/

http://が多すぎるらしいので分割

404 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:55:41 ]
Ruby信者はいつも元気だな

405 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:18:17 ]
Common Lispは山羊の毛の毛筆
Schemeは馬の尾の毛だな

406 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:46:39 ]
>>405
どう違うの?

407 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:55:05 ]
山羊の毛は(()())で
馬の尾の毛は(().())

408 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:58:49 ]
俺様Lispはあそこの毛で作りました

409 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:04:42 ]

 )

 )

410 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:18:54 ]

 )

 )


411 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:19:36 ]
λ
(())

412 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 12:48:02 ]
黒板偉大なり



413 名前:デフォルトの名無しさん [2007/05/22(火) 14:22:56 ]
今、ウェブ・サービスの多くが、
Javaや.NETベースのアプリケーションサーバや、
Perl/Ruby/PHP/Python等のLightweight Languageの上に構築されていますが、
なぜそこにLispが含まれていないのでしょうか?

414 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 14:36:04 ]
これはひどい一本釣りですね

415 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:42:36 ]
(lambda

416 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:08:35 ]
らんぶだ!

417 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:07:15 ]
lambda! と申したか
酷い仕様だな

418 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:42:35 ]
(lambada () '石井明美)

419 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:03:47 ]
>>418
それはラマダン!

420 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:04:44 ]
>>419
むしろラバンバ。

421 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:09:05 ]
lamborghini

422 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:21:41 ]
俺ははじめてlambdaを見たとき
ふつーにランバダってよんでたな。



423 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:36:40 ]
俺は脳内でラムブダとつぶやきながら書いてる。

424 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 01:01:47 ]
馬鹿が多くてちょっとほっとした

425 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 02:13:32 ]
ホッとするのは底なしに危険だぜ

426 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 02:22:37 ]
底なしなど幻想だ

427 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 05:59:23 ]
「実質的に無限」というのは「有限」という意味だからね。
なんかこう、Lisperは特にそう考えたがりそうだね。

428 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:48:16 ]
lispは見なす事が自然と身に付く
それができない頭硬いバカチンに使いこなすのは無理

429 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:21:39 ]
迷惑だから Ruby スレで暴れているヤツ引き取ってくれ

430 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:26:26 ]
実際そうしたい

431 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:31:47 ]
>>429
暴れてるのはお前だろ

432 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 23:26:53 ]
そもそも「引き取る」という概念がおかしいな。
スレッドと訪問者の関係を、チームと選手の関係みたいに思ってるんじゃないのか。



433 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 23:30:54 ]
ゴミはGCへ

434 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 23:42:04 ]
クロージャー体操
はっじまっるよーーーーーー

435 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:24:50 ]
>>428
>...バチカンに使いこなすのは無理 に見えた。
言語論争の次は宗教論争かと思った。

436 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 09:10:00 ]
オーソドックスなネタですね。


437 名前:デフォルトの名無しさん [2007/05/26(土) 09:22:46 ]
ウェブ技術系のブログを見ると、
「やっぱPHP最強だわ」などの表現が見当たりますが、
Lispはどうなのでしょうか。

438 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 09:50:39 ]
括弧の数なら負ける気がしないぜ!

439 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 10:06:29 ]
少しはカッコを減らす努力をしないと
ポール・グレアムに嘲笑われるぞ

440 名前:ジュリー mailto:sage [2007/05/26(土) 10:14:38 ]
勝手にしやがれ( ゜∀゜)

441 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 13:00:49 ]
>>438-439
srfi.schemers.org/srfi-49/srfi-49.html

442 名前:ジュリー mailto:sage [2007/05/26(土) 13:03:34 ]
♪せめて〜 少しはカッコ付けさせてくれ〜



443 名前:デフォルトの名無しさん [2007/05/26(土) 21:50:17 ]
>>441
それめっちゃ気持ち悪い。dylan? やっぱりかっこがいい。
かっこいいの!

444 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 22:10:11 ]
>>442 藁。

445 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 22:33:45 ]
curlってどうなったの?

446 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 23:41:43 ]
>>441
なんかスカスカで見た目にかっこわるい

447 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:39:40 ]
>>441
python 以上にキモい……

448 名前:デフォルトの名無しさん [2007/05/27(日) 15:07:27 ]
なんかMLみたいになっちゃってるね。

449 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:33:48 ]
これがそんなにキモイか?

 define (fac x)
  if (= x 0) 1
  * x
   fac (- x 1)

じゃあこうしよう

 define (fac x)
 {
  if (= x 0)
  {
   1 (* x)
  }
  {
   fac (- x 1)
  }
 }

450 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:40:56 ]
K&R派なオレはそのifの書き方見るとイライラしてくるんだよねw

451 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:44:10 ]
>>449
{ } の代わりに ( ) にしてみてもいいかも

452 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:47:59 ]
>>449
どうでもいいが式が間違ってるぞ
まあ前者はインデントが浅すぎでキモく見えるだけじゃないのか?



453 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:52:20 ]
インデント文法で一番有名なPythonは20年後はもう衰退していると思うが、
この手法はSchemeと一緒に30年後も生き残っていそう。
それで、インデント文法はSchemeが元ネタだ! と騒ぐ信者が出現

454 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:55:51 ]
>>442
山口百恵のロックンロールウィドウもよろしく

455 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:28:34 ]
Schemeのマクロについてなんですけど、
本体の展開よりも引数の評価を先にするようなトリックってありませんかね?
構造体を定義するマクロを自分でも書いてみようと思ったんですけど、
構造体名structure-nameを与えられてmake-structure-nameという名前の関数を定義する事さえ難しいという現実に直面してしまいました。
グローバル定義だけならevalでお茶を濁す手もあるんですが…

R6RSで導入予定というsyntax-caseもちょっと使ってみたんですが、
まだ標準化されていないせいか、処理系によって違いが結構あるので
今は乗り換えるのを見送ろうと思ってます。

456 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:59:32 ]
よく思うことなんだが、言葉でくどくど説明されてもよくわからん。
簡単なテストケースを書いてくれ

457 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:10:37 ]
;(define-syntax my-define-structure
; (syntax-rules () ((my-define-structure name slot ...)
;                    (define (string->symbol (string-append "make-" (symbol->string name))) (lambda (…
などとして、新しいシンボルを作ってそれを束縛したいのです。
defineは第1引数に式はおろか、準引用すら許しませんから困ってます。
そこで、マクロに展開されてdefineが評価される前に引数がシンボルに展開されれば、と考えました。
これは黒田氏が指摘している問題の一つな気がします。
Shiro氏も
・せめてシンボルの生成くらいはr5rs内で出来て欲しいってのはありますね。
とおっしゃってますし、正攻法ではどうも解決できない気がします。
プリプロセサを書くしかないのでしょうか?

458 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:14:04 ]
混乱してるからクドクドとなるんであって、
簡単にはテストケースを書けないんだろ。

459 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:15:44 ]
defineは第一引数に関数呼び出しはおろか、特別式すら、が正しかったですね

460 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:18:21 ]
>>457
前スレ172みたいなのをコンパイル時にやりたいっつーことだな。
それならやっぱsyntax-case必要だろう。

461 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:29:23 ]
define-macroでできるだろ

462 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:30:37 ]
>>460
うわぁ、古い方の過去ログは読んだのですが、最近のは読んでませんでした。
全く同じですね。
syntax-case使うなら、やっぱりchezでしょうか?
私は主にmzschemeかscheme48かGambit-Cなので、syntax-caseはmzschemeしか使えないし、
chezのものとは少し違うようなので、
ポータビリティを考えたらCL的マクロに逃げるのがベターか、などと考えてます。

あまり関係ありませんが、Gambit-Cのsyntax-rulesを使えるようにするファイルは、syntax-caseが使えないのになんでsyntax-case.scmなのでしょうね。



463 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:31:31 ]
>>461
もちろん、CL的アプローチでは簡単です。
標準仕様の範囲でできるかどうか、という問題です。

464 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:49:36 ]
syntax-caseで書くならこんなカンジか?

(define-syntax define&
(lambda(x)
(syntax-case x ()
((k sym obj)
(with-syntax
((s
(datum->syntax-object (syntax k)
(eval (syntax-object->datum (syntax sym))
(interaction-environment)))))
(syntax (define s obj)))))))

petite chez schemeで試してみたが、こういうテストケースでは動くことを確認した。

(define& (string->symbol (string-append "a" "b")) 1)
ab ;-> 1

結局のところ、今はschemeに足りないところがあるのはそのとおりだと思う。
でもな、完成されたものを使うだけってつまらないと思うわけ。
マクロに関しても色んな提案があってそれぞれ細かい部分で利点も問題点もかかえてて、
それがどう収束していくかってなかなか面白いことじゃないか。
ま、仕事で使うならそうもいってられんのだろうが。

465 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:05:51 ]
仕事で Scheme 使っている人ってここにいるんですかね

466 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:10:20 ]
使ってた。納品物ではなく自家ツール用だけど。最近はCommon Lispのほうが多い。

467 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:11:34 ]
>>464
あなたのプログラムを見て初めて私のsyntax-caseがうまく動かなかった理由が分かりました!
ありがとうございました。

IBMにあるメタプログラミング技法を読んでsyntax-caseを勉強したのですが、
datum->syntax-objectの第1引数の(syntax k)のkはマクロ名にマッチする識別子だったんですね。
syntax-rulesではマクロ名にマッチした識別子は特に使い道がなかったので気がつきませんでした。

468 名前:464 ◆3.JjF77I26 mailto:sage [2007/05/28(月) 00:26:11 ]
>>467
ここにsrfi-93の日本語訳があるぞ。
www.katch.ne.jp/~leque/translations/srfi-93/srfi-93j.html

> 手続き datum->syntax は引き数として、
> テンプレート識別子 template-id と任意の値 datum のふたつをとる。
>
> (datum->syntax template-id datum)
>
> この手続きは template-id と同一の文脈情報をもつ、
> datum の構文オブジェクト表現を返す。 このとき、
> この構文オブジェクトは datum (訳注: template-id か)が
> 挿入されたのと同時にコードに挿入されたかのようにあつかわれる。

schemeのマクロではただシンボルを置き換えればいいってもんじゃなく、
文脈がからんでくるってこと。
ところでこの文書ではdatum->syntaxってなってるけど、
chez schemeを含むいくつかの系ではdatum->syntax-objectって名前なので注意。

469 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:05:53 ]
>>468
ありがとうございます。
読んでみました。
いろいろ勘違いしているところもありました。
しばらくsyntax-caseの勉強に励もうと思います。

470 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:38:52 ]
462でGambit-Cはsyntax-caseが使えないと書きましたけど
ちゃんと使えますね。
なぜか勘違いしてたみたいです。

471 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 18:02:01 ]
syntax-caseて処理系に依存するの?

472 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:38:39 ]
syntax-case 面倒臭すぎる
阿呆な質問なんだが scheme にも cl のパッケージの概念導入
できないものなんだろうか…?何か問題でもあるの?



473 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:39:19 ]
srfi を書いて提案しましょう

474 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 01:05:37 ]
Mona OS が関数型言語 Scheme のシェルを搭載してリリース
slashdot.jp/articles/07/05/28/1225254.shtml

475 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 01:41:35 ]
>>472
schemeでは名前空間を分離しない(?)原則みたいなのがあるとかなんとか言ってなかっったっけ?

476 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:30:57 ]
R6RSに入るんじゃなかった?>パッケージもどき

477 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 09:42:05 ]
R6RSって出ないんじゃなかったっけ?

478 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 09:48:50 ]
じゃR7RSで

479 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:22:37 ]
もうR2D2でいいよ。

480 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:29:12 ]
むしろR2D2の方がいいよ

481 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:34:26 ]
100万言語に対応してるんだっけ?

482 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:34:41 ]
schemeから派生した言語って何かありますか?
luaがそれっぽいですが




483 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:56:26 ]
Tとか

484 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 23:14:15 ]
4/1にc.l.lでr7rsは発布されとったよ。w
groups.google.co.jp/group/comp.lang.scheme/browse_thread/thread/8fa8814b5c16eae4/b14cda30a53bc8f7

485 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:29:39 ]
luaはべつにschemeと関係ないよ


486 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:02:59 ]
このスレ住人としてluaの存在ってどうよ
末尾再帰とかゲームで採用されたりとかむかつかね?
しめとくか?

487 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:14:07 ]
schemeも採用すればよかんべ。

488 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:21:59 ]
schemeがシェルに採用されたMonaOSが話題にならない件

489 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:52:53 ]
Scheme流行りの昨今

490 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 06:00:40 ]
Schemeは黒板専用言語のくせになまいきだな

491 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 08:54:57 ]
確かにリリカルLispは黒板使ってたなww

492 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:59:04 ]
>>486
むかつく理由が理解できない



493 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 15:20:35 ]
>>486 は常に敵を探しているタイプ

494 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 17:36:51 ]
小鳥みたいですね

495 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 19:36:20 ]
歌が好きだったりしますか?

496 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 20:33:49 ]
>>495
俺が好きなのは君だけさ

497 名前:デフォルトの名無しさん [2007/05/31(木) 11:09:22 ]
read-from-stringは多値を返すのですが、
それぞれを別の変数に入れる方法はありますか?

(read-from-string "459")
459
3

たとえば xとyに 459と3を入れる方法が知りたいです。


498 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 11:27:35 ]
>>497
multiple-value-bind

499 名前:デフォルトの名無しさん [2007/05/31(木) 11:32:57 ]
>>498
ありがとう

失礼ですが、LISP暦は何年でしょうか?


500 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 11:35:49 ]
multiple-value-bind とか multiple-value-setq とか。

CL-USER> (multiple-value-bind (x y) (read-from-string "459") (list x y))
(459 3)
CL-USER> (multiple-value-setq (x y) (read-from-string "459"))
459
CL-USER> x
459
CL-USER> y
3


501 名前:デフォルトの名無しさん [2007/05/31(木) 12:55:18 ]
letでレキシカル変数(LISPでは何?)として定義したhyoを成功のパターンで試すと正しくできますが、
失敗パターンのように要素?を""で囲むと正しく取得できません。
要素を""で囲っても正しく表引きしたいのですがLISPではどうするのでしょうか?

;=== 成功 ===
(let (
(hyo '((A 80) (B 70) (C 100))))
(print (assoc 'A hyo))
"OK"
)

○結果
(A 80)
"OK"

;=== 失敗 ===
(let (
(hyo '(("A" 80) ("B" 70) ("C" 100))))
(print (assoc "A" hyo))
"OUT"
)

×結果
nil
"OUT"

まだよくわかっていないのですが、
""とすると文字列限定される?ということでしょうか?

502 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 13:13:22 ]
(assoc "A" hyo :test 'equal)



503 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 13:16:53 ]
assocは普通はequal比較だから同じ文字列なら見つかると思うのだが、
数あるlisp方言の中にはそうでないのもあるのかな?

ちなみにemacs lispで実行してみたらこうなった。

(let (
(hyo '(("A" 80) ("B" 70) ("C" 100))))
(print (assoc "A" hyo))
"OUT"
)

("A" 80)
"OUT"

使ってる処理系が何かを示せばより的確な回答を返せる人がいるかもね。


504 名前:デフォルトの名無しさん [2007/05/31(木) 13:16:56 ]
>>502
ありがとう

皆さん、簡単に答えますね。
うらやましいです。







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

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

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