Lisp Scheme Part18 ..
[2ch|▼Menu]
360:デフォルトの名無しさん
07/10/07 08:37:11
(define x '#1=(a b . #2#))
(define y '#2=(c d . #1#))
の間違いです。
参照先が全部確定するまでread-with-shared-structureは結果を
保留する必要があるし、write〜も一度に関係するリストを全て渡すか
しないと無理だから、このサンプルみたいなインターフェースじゃ無理ですね。


361:デフォルトの名無しさん
07/10/07 11:47:08
Lisper&Schemerの誰か、異論・反論よろしく

スレリンク(prog板:311番)
311 名前: 仕様書無しさん [sage] 投稿日: 2007/10/07(日) 02:56:19
> ではメッセージをちゃんとメッセージ(オブジェクト)として実装している言語はないか
> というとそんなこともなくて、古くは、メッセージングのOOの影響を受けて作られた
                   〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
> ACTOR という言語(これは、メッセージングのOOから派生したアクター理論に基づいて
 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
> 作られました)では、メッセージもちゃんとオブジェクト(ACTOR ではアクターと呼ぶ)で
 〜〜〜〜〜〜
> 表わされていましたし、最近の言語なら Io という言語で、同じくメッセージは
> 実体のあるオブジェクトとして内部的にも表現されている、という例があります。でも希有です。



362:デフォルトの名無しさん
07/10/07 11:57:52
Racter懐かしいな。「警官の髭は完成半ば」だっけ?

363:デフォルトの名無しさん
07/10/07 12:04:14
昔は「OOを思想からマスターしてオッサン技術者共を超えてやるぜ!」
とか思ってた。
で、CLOS勉強したら結局OOって単なるメソッドディスパッチなのね、
と思って萎えた…。


364:デフォルトの名無しさん
07/10/07 14:11:37
CLOS の記法は即物的で夢が無い

365:デフォルトの名無しさん
07/10/07 14:27:34
マルチプルディスパッチの夢は見ないのか?

366:デフォルトの名無しさん
07/10/07 14:36:43
>>364
だが、そこがいい

367:デフォルトの名無しさん
07/10/07 14:54:14
夢は無くとも簡潔さがある!効率がある!自由度がある!
…なんかLispが人気にならない理由が分かった気がする。

368:デフォルトの名無しさん
07/10/07 15:13:32
>>365
夜は:around methodに包まれて寝る。

369:デフォルトの名無しさん
07/10/07 16:19:38
人気がないのは新しくないからじゃね?

370:デフォルトの名無しさん
07/10/07 17:19:05
>>238

371:デフォルトの名無しさん
07/10/07 19:47:44
関数名で処理内容がわかりづらいのはどうにかしてほしいな
○○*とかprincとかprin1とか


372:デフォルトの名無しさん
07/10/07 19:54:56
まあそこらへんは……歴史が長い言語だからねぇ

373:デフォルトの名無しさん
07/10/07 19:58:52
OOは、実用的には呼び出し元の再利用と考えると良いと思う。

374:デフォルトの名無しさん
07/10/07 21:07:49
実用的には特に何も考えなくて良いだろう。

375:デフォルトの名無しさん
07/10/07 23:46:23
Lisp使えるからってオブジェクト指向がばっちりなわけでも無ければ、
SICPをちゃんと読んだわけでも無さそうだね。


376:デフォルトの名無しさん
07/10/08 00:01:47
>>375
おれはオブジェクト指向バッチグーだけど、
SICPにオブジェクト指向なんてあったっけ?抽象化はあったけど。

377:デフォルトの名無しさん
07/10/08 00:17:14
>>376
「〜でもなければ〜でもない」の意味も分からないのか

378:デフォルトの名無しさん
07/10/08 00:38:54
>>377
自分の句読点の位置を見直しましょう。

379:デフォルトの名無しさん
07/10/08 00:45:04
、< もうやめて!わたしの為に争わないで!

380:デフォルトの名無しさん
07/10/08 08:18:46
このタイミングでSICPを持ってくるのか
schemeキチガイは黒板と現実の区別がつかないのな

381:デフォルトの名無しさん
07/10/08 09:01:58
高度に発達した黒板は現実と区別がつかない。

382:デフォルトの名無しさん
07/10/08 09:35:14
オーオー、お前等楽しそうじゃん#AA略

383:デフォルトの名無しさん
07/10/08 10:25:39
>>380はLisp>schemeって考えてんのか?

384:デフォルトの名無しさん
07/10/08 10:28:45
不等号キター!

385:デフォルトの名無しさん
07/10/08 10:50:05
schemeとLispはイスラム教とキリスト教の関係なのか?

386:デフォルトの名無しさん
07/10/08 10:57:37
>>383
コンピュータで動かすことを考えればね。
黒板上なら別にそんなことはないと思う。

387:デフォルトの名無しさん
07/10/08 11:47:26
>>383
中置記法か。お前Lisperじゃないな

388:デフォルトの名無しさん
07/10/08 12:12:42
なんかこういう
URLリンク(www.prescod.net)
事を言っている人が居るみたいなんですが、
どうも的外れな気がするんですが…
皆さんどう思われますか?


389:デフォルトの名無しさん
07/10/08 13:28:54
CommonLispは土方専用だろ
洗練された知的階級の為のSchemeと同じスレで扱う事自体がおかしい

390:デフォルトの名無しさん
07/10/08 13:30:57
schemeはpythonとかと同じで教育用っつーかお試し用っつーかそういうもんだろ

391:デフォルトの名無しさん
07/10/08 13:33:41
↑土方乙。しかもPythonすら理解できてないのかwwwww

392:デフォルトの名無しさん
07/10/08 13:36:58
Common Lisp: 土方歳三
Scheme: 原田左之助

393:デフォルトの名無しさん
07/10/08 13:38:58
洗練された知的階級なんて言葉で自己言及した時点で洗練された知的階級じゃないよ!

ってことを身をもって明らかにするschemerならではの反面教師的教育なのです

394:デフォルトの名無しさん
07/10/08 13:40:05
教育用の言語使ってる割には頭悪そうだな

395:デフォルトの名無しさん
07/10/08 13:43:36
これから教育を受ける段階にある奴ってことだからね。

396:デフォルトの名無しさん
07/10/08 13:45:45
教育すら受けられない中卒Common Lisper

397:デフォルトの名無しさん
07/10/08 13:52:34
そもそも >>389 は Common Lisp も Scheme も使った事が無いんだから
放っといたら良いじゃん

398:デフォルトの名無しさん
07/10/08 15:13:52
つれないこというなよ

399:デフォルトの名無しさん
07/10/08 15:45:11
>383
仕様のサイズ的には合ってね?

400:デフォルトの名無しさん
07/10/08 15:49:15
SchemeはR6RSでかなり分厚くなったと聞いたが

401:デフォルトの名無しさん
07/10/08 16:51:33
それだけ不純になったのよ

402:デフォルトの名無しさん
07/10/08 17:19:43
>>388
斜め読みしただけだけど、やってることは S 式の標準的な書式の見た目を
XML 文書と比較してるだけなのかな。
だとすると
> XML is not S-Expressions
このタイトルは不適切だな。

403:デフォルトの名無しさん
07/10/08 17:33:39
S式はCSVみたいにRFCに定義されたりしないの?

404:デフォルトの名無しさん
07/10/08 17:37:24
ISLISPがRFCになってなかったっけ?

405:デフォルトの名無しさん
07/10/08 17:59:10
ISLISPって全然はやってないんだなw

406:デフォルトの名無しさん
07/10/08 19:11:14
>>392
Mormon Lisp (Ruby): まつもと ゆきひろ

407:デフォルトの名無しさん
07/10/08 20:28:44
CommonLisp+末尾最適化+継続 = 大方のSchemerは文句いわない
Scheme - 末尾最適化 - 継続 = 粗大ゴミ



408:デフォルトの名無しさん
07/10/08 20:42:00
つまり素のLISPはゴミって事?

409:デフォルトの名無しさん
07/10/08 20:42:29
CL = RedHat Linux
Scheme = Plan9

てな感じ

410:デフォルトの名無しさん
07/10/08 20:44:23
今となっては RHL はあんまりw

411:デフォルトの名無しさん
07/10/08 20:46:58
>>408
そりゃCommonLisp以前に戻るんだからしょうがないべよ
その他大勢の方言の一つでしかないんだもの。

412:デフォルトの名無しさん
07/10/08 21:06:18
CommonLISPは分別ゴミ


413:デフォルトの名無しさん
07/10/08 21:11:16
>>408
素のLispはただの理論だからなぁ。
道具として便利であるためには、当然肉付けが必要になるよ。

414:デフォルトの名無しさん
07/10/08 21:26:50
クロージャすらないようではゴミと言われてもしかたあるまい

415:デフォルトの名無しさん
07/10/08 21:28:27
>>414


416:デフォルトの名無しさん
07/10/08 21:35:07
>>414
つ FUNARG

417:デフォルトの名無しさん
07/10/08 21:43:34
CL = スイスアーミーナイフ
Scheme = 肥後の守

418:デフォルトの名無しさん
07/10/08 21:49:56
Lispとかけてイケメンととく。

419:デフォルトの名無しさん
07/10/08 22:03:51
その心は、


「かっこが大変よろしゅうございますw」

とかヌカスつもりじゃないだろーな?

420:デフォルトの名無しさん
07/10/08 22:12:48
あーそれ俺が言おうと思ってたやつなのに・・・ひどい

421:デフォルトの名無しさん
07/10/08 22:23:18
むしろ「カッコばかりで中身がありません」じゃないのか?

422:デフォルトの名無しさん
07/10/08 22:25:16
でも簡単にペアになれるんだぜ?

423:デフォルトの名無しさん
07/10/08 23:37:14
少数点以下多数ある数値少数第1位までにして、切り上げして出力する方法ってある?
20.767841011743453→20.8
処理系はgaucheで。

424:デフォルトの名無しさん
07/10/09 00:09:52
ほんとにそれだけしたいなら(10進で)10倍してceiling(かな?)でいいんとちゃう?
単純でわかりやすいし。

425:デフォルトの名無しさん
07/10/09 00:29:55
>>422
うまいこと言うなあ

426:デフォルトの名無しさん
07/10/09 21:15:28
>>422
ウホッ

427:デフォルトの名無しさん
07/10/09 23:32:08
>>424
ありがとうございます。出来ました。
もうひとつ同じような内容ですが、
例えば、-1.0という答えを-1.000という回答に小数点以下第3位まで出す場合はどうすればよろしいですか?
やはりgaucheで

428:デフォルトの名無しさん
07/10/10 00:10:43
URLリンク(www.premiumtv.12gbfree.com)

429:デフォルトの名無しさん
07/10/10 00:17:47
>>406
Moron Lispだと思った。

430:デフォルトの名無しさん
07/10/10 00:25:30
どうでもいいけど、S式でXML表現するときって名前空間はどうすんの?

431:デフォルトの名無しさん
07/10/10 00:27:11
>>429
それも正解。

432:デフォルトの名無しさん
07/10/10 00:49:07
>>427
かなり無理やりっぽいが…

(define (hoge kazu keta)
(let ((b (exact->inexact kazu))
(c (string-length
(number->string
(inexact->exact (round kazu))))))
(format #f "~v,,,'0,a" (+ c keta 1) b)))

(hoge 1 3)

もっとまっとうな方法がありそうな気がする


433:デフォルトの名無しさん
07/10/10 00:51:38
それってformatでパッとできないの?

434:デフォルトの名無しさん
07/10/10 01:18:31
>>430
コモンリスプならパッケージで桶

435:デフォルトの名無しさん
07/10/10 01:34:06
>>434
返信ありがとう。
URNとかも平気なのかな。
まあ、完全な同値変換はできないだろうけど。勉強してみる。

436:デフォルトの名無しさん
07/10/10 02:06:07
こんな表現にすればぁ
(tag :namespace (...) :attribute (...) :nodes (...))


437:デフォルトの名無しさん
07/10/10 05:10:29
>>430
A Lisp Based XML Parser
・LXML parse output format
URLリンク(franz.com)

438:デフォルトの名無しさん
07/10/10 05:14:27
追加
URLリンク(opensource.franz.com)

439:デフォルトの名無しさん
07/10/11 12:19:10
このスレを見ている人はこんなスレも見ています。(ver 0.20)
Bart's PE Builder スレッド 5枚目 [Windows]
懲りずに騙されて花火板にまで飛ばされたわけだが3 [花火]
【CFNM】ちんちん見〜ちゃった☆Part14【えっ〜!】 [game12tr]
uim スレッド 7 [Linux]
2ch特化型サーバ・ロケーション構築作戦 Part26 [2ch運用情報]

440:デフォルトの名無しさん
07/10/11 18:12:43
>>19
> Schemeで書かれた正規表現ライブラリ
> URLリンク(www.cs.rice.edu)

URLリンク(www.ccs.neu.edu)

441:デフォルトの名無しさん
07/10/14 21:19:32
gaucheのGauche-mingw-0.8.11+meadow使ってるんですが、日本語の扱いが上手くいきません。
(print "こんにちは")
だと
縺薙s縺ォ縺。縺ッ
って出てしまう。
どのようにすればよろしいでしょうか?


442:デフォルトの名無しさん
07/10/14 21:59:28
文字コード

443:デフォルトの名無しさん
07/10/14 23:04:31
>>441
set-buffer-file-coding-systemとset-buffer-process-coding-systemで設定。
どっちかっていうとemacsの設定の話だな。

444:デフォルトの名無しさん
07/10/15 18:23:55
文字列が定義されてるとき、その文字列の組み合わせを列挙して、その数も表示する関数(com k seq)を作ってます。(setq abcd (list 'A 'B 'C 'D))として、たとえば(com 3 abcd)を評価すると、
(ABC)
(ABD)
(ACD)
(BCD)
4
となります。
先頭を選んで残りからk-1個選ぶ。先頭を選ばず残りからk個選ぶ。というのを再帰で書けば出来そうというのは考えたんですが、うまくかけません。習ってるのはdefun cond if cons car cdr print list null setqとかで、これだけで書きたいです。
また要素のi番目を調べる関数(ith seq i)と、2つのリストを結合する関数(merg seq1 seq2)、リストに一つの要素を加える関数appは以前に作ってて、これは使えます。
どなたか教えてくれませんか?

445:デフォルトの名無しさん
07/10/15 20:27:47
>>444
Common Lisp 入門スレにヒントがでてたよ。どのくらいまで自力でできたの?

446:デフォルトの名無しさん
07/10/15 21:44:49
うーん。いろいろ書いてみたんですが、うまく書けなくて…

447:444
07/10/15 23:46:07
(defun top (seq tmp)
(print (app tmp (car seq)))
(cond ((null (cdr seq)) )
(T (top (cdr seq) tmp)))
(setq tmp NIL)
)
(defun comb (seq k)



(cond ((= k 1) (top seq tmp) )
((null (cdr seq)) )
(T (setq tmp (list (car seq))) (comb (cdr seq) (- k 1)) (comb (cdr seq) k)
)))




>(comb abcd 2)

(A B)
(A C)
(A D)
(B C)
(B D)
(C D)

K=2のときはうまくいくんですが、3以上のときがうまくいかなくて・・・
どうしたらいいのか・・・・



448:デフォルトの名無しさん
07/10/16 00:05:16
(defun comb (seq k)
(setq tmp NIL)
(comb2 seq k tmp)
)

(defun top (seq tmp)
(print (app tmp (car seq)))
(cond ((null (cdr seq)) )
(T (top (cdr seq) tmp)))

)
(defun comb2 (seq k tmp)



(cond ((= k 1) (top seq tmp) )
((null (cdr seq)) )
(T (setq tmp (app tmp (car seq))) (comb2 (cdr seq) (- k 1) tmp)
)))
こうしたら
(ABC)
(ABD)はでるようになりました。
先頭を選ばず残りからk個選ぶ部分がうまくできません。

449:デフォルトの名無しさん
07/10/16 00:22:15
(comb '(a b c d) 3)
=> ((a b c) (a b d) (a c d) (b c d))
みたいな関数を作って表示は別にしたほうがいいかもしれんね

450:デフォルトの名無しさん
07/10/16 00:26:24
>>449
一応表示は top関数で表示してます。

(defun comb (seq k)
(setq tmp NIL)
(comb2 seq k tmp)
)

(defun top (seq tmp)
  (print (app tmp (car seq)))
  (cond ((null (cdr seq)) )
   (T (top (cdr seq) tmp)))
)

(defun comb2 (seq k tmp)

(cond ((= k 1) (top seq tmp) )
    ((null (cdr seq)) )
    (T (setq tmp (app tmp (car seq))) (comb2 (cdr seq) (- k 1) tmp) (comb2 (cdr seq) k NIL)
))
としました。


451:デフォルトの名無しさん
07/10/16 00:26:55
結果は

[37]> (comb abcd 3)

(A B C)
(A B D)
(C D)
(B C D)
T
[38]> (comb abcde 3)

(A B C)
(A B D)
(A B E)
(C D)
(C E)
(D E)
(B C D)
(B C E)
(D E)
(C D E)
T
ここまでなんとかなりました。 あと先頭要素が加わってないやつに加えられれば良いんですが・・・・

452:デフォルトの名無しさん
07/10/16 00:27:48
comb2定義の最後の括弧が抜けました・・・

453:デフォルトの名無しさん
07/10/16 00:44:01
>>449
読み違いました。そういう手もありですね。
しかしどうやるのか・・・

454:デフォルトの名無しさん
07/10/16 01:02:20
まず紙にでも書いて整理しろよ
頭で想像できてない事をプログラムできるわけないだろ

455:デフォルトの名無しさん
07/10/16 01:05:14
紙にも書いてみましたが>>450のやつから進みません・・・

456:デフォルトの名無しさん
07/10/16 01:15:28
紙に書いても判らんなら、もう一度単純ケースの把握からやってみれば?
ABC 2のケースとか。
あと、リスト処理と考えるより単純な集合の比較の問題って思った方がいいぞ。
carとかnullとかリストオペレーターをそのまま使うんじゃなくて
問題に適合するように抽象化してみるとか。

457:デフォルトの名無しさん
07/10/16 01:28:25
ABC 2 だったら
A選ぶ場合
B選ぶ場合
AB
B選ばない場合
AC
A選ばない場合
B選ぶ場合
BC
B選ばない場合
なし
って感じですよね?でもプログラムだとうまくいかないんですよねぇ。

458:デフォルトの名無しさん
07/10/16 01:36:47
プログラム的に考えてみろよ
例えばビットの組み合わせ問題として解く

1) 記号が3種類なので3ビットで表す
A 001
B 010
C 100

2) 重複に注目しながら全パターンを列挙してみる
AB 011
AC 101
BA 011 x 重複
BC 110
CA 101 x 重複
CB 110 x 重複

答え 110 101 110 すなわち AB AC BC

459:デフォルトの名無しさん
07/10/16 01:44:52
ごめん
答え011 101 110 すなわち AB AC BC
ね。

ABCD 3のケースならビット1が3つあるパターン
A 0001
B 0010
C 0100
D 1000
ならば
ACD 1101
ABD 1011
ABC 0111
BCD 1110


460:デフォルトの名無しさん
07/10/16 03:10:09
>>450
再帰関数についてもうちょっと勉強しないと…

(defun comb (seq k)
(top (comb2 seq k))
) としておいて、comb2は、
kが0でなければ、
 seqから一つxを抜き出して、
 (comb2 (seqからxを除いたもの) (- k 1))の先頭にxを付け足すしたリスト
 を全てのxに対して行って、皆listして返す。
k=0ならNILを返す。

k-1の時の結果から、kの時の結果を作り出す部分と
k=0の時の結果から再帰関数を構成する。


461:デフォルトの名無しさん
07/10/16 08:10:19
>>458
それはわかるんですが。うーん
>>460
先頭にxをつけ加えたリストをすべてのxに対して行うって言うのが書けないんです。正直、言うと誰か書いてもらいたいです。一旦答えわかったら理解できるかもしれないです

462:デフォルトの名無しさん
07/10/16 10:55:02
再帰で書く。
(car seq)に対して行った結果を、(cdr seq)についてやった結果に付け加える。
nilになるまでやる。

463:デフォルトの名無しさん
07/10/16 14:20:44
やっぱりできないんで、答えお願いしてもいいですか

464:デフォルトの名無しさん
07/10/16 14:25:18
やっぱりできないんで、答えお願いしてもいいですか

465:デフォルトの名無しさん
07/10/16 14:31:04
>>258
r6rsでは、
> Characters are objects that represent Unicode scalar values.

ちょっと困ったのが、stringはseqence of characterだから、
サロゲートペアを含めるには、stringじゃなくてbytevectorにしないと、
r6rs準拠にならない。

466:デフォルトの名無しさん
07/10/16 14:31:59
>>463>>464
宿題スレに行け。

467:デフォルトの名無しさん
07/10/16 16:27:15
>>465
なんで?
文字を素直に UCS-4 にしてしまえばいいじゃないか。

468:デフォルトの名無しさん
07/10/16 17:08:54
それじゃ「Unicode scalar values」じゃなくなってしまう。


> (integer->char sv) procedure
>
> Sv must be a Unicode scalar value,
> i.e., a non-negative exact integer object
> in [0, #xD7FF] ∪ [#xE000, #x10FFFF].

469:デフォルトの名無しさん
07/10/16 17:31:53
いや、サロゲートペアなんてのが出てくるのは UTF-16 をそのまま 16bit 値として
扱った場合だけでしょ。
string の内部形式として UTF-32 を使ってればそもそも気にする必要はないし、
内部形式に UTF-16 を使っていたとしても、char アクセス時にそれなりに変換
すればいい。
内部形式を UTF-16 にした string で、それをナイーブに char の配列として
実装しちゃいかんというだけのように読めるけどなあ。

470:デフォルトの名無しさん
07/10/16 18:05:26
UTF-16とかUTF-32とか関係ないです。
R6RSの文字は"Unicode scalar value"を表現します。
またR6RSに従うならそれしかできません。
"Unicode scalar value"はちゃんとした定義のある言葉です。

471:デフォルトの名無しさん
07/10/16 20:10:07
サロゲートペアってのは UTF-16 でしか使われないんだから、UTF-16 と無関係
なわけないじゃないか。
たとえば、U+2000B は UTF-16 で 0xD840 0xDC0B というサロゲートペアで
表されるけど、U+D840 や U+DC0B なんて文字があるわけではない。

あんたが (string (integer->char #xD840) (integer->char #xDC0B)) ができないって
言ってるみたいだから、俺は (string (integer->char #x2000B)) すればいいって
言ってるんだけど、何か勘違いしてる?

472:デフォルトの名無しさん
07/10/17 02:12:21
468で既に自分が何言ってるのかわかってないことを暴露している奴に、
そんな親切につきあわなくても……。もはやスレ違い同然。

473:デフォルトの名無しさん
07/10/17 12:30:18
Schemeのリスト操作関数について質問です。
Webでサンプルコードとかを検索すると、n番目のリストを参照するための
オペレーターとしてlist-refという名前の関数がよく使われてるっぽいんですが、
これに対応するlist-set!がみつかりませんでした。
ペアに対してのオペレーター(car cdr set-car! set-cdr!)は標準でありますが、
リストに対しては整備されてないんでしょうか。
↓みたいなのがSRFIとかで定義されていればそれを使いたいのですが。

;n番目以降の部分リストを返す
(define (list-tail l n) (if (zero? n) l (list-tail (cdr l) (- n 1))))
;n番目の要素を返す
(define (list-ref l n) (car (list-tail l n)))
; 破壊版 set
(define (list-set! l n obj) (set-car! (list-tail l n) obj) l)
; 非破壊版 set (list-replace?)
(define (list-set l n obj)
(let loop ((i 0) (x l) (r '()))
(if (pair? x)
(if (= i n)
(loop (+ i 1) (cdr x) (cons obj r))
(loop (+ i 1) (cdr x) (cons (car x) r)))
(reverse r))))

474:473
07/10/17 12:40:14
ちょっと今調べたらlist-tailとlist-refはR5RSにあるみたいですが
list-set!やlist-set相当はありませんでした。

475:デフォルトの名無しさん
07/10/17 14:01:40
そんな操作を使いまくるようならベクタを使う気がする。

476:デフォルトの名無しさん
07/10/17 19:55:25
魔法言語リリカル☆Lispフリーウェア化
URLリンク(blog.bugyo.tk)


477:473
07/10/18 00:18:00
効率の話はともかくとして、list-setみたいなパターンはよく使うと思うんですが。
インターフェースを揃えておく利点として、他のコンテナに簡単に移行できる
という今更語るまでもなくCLや他の言語でも証明されてる事ですし。
takeやdropはSRFIで定義されてるのに不思議ですね。

478:デフォルトの名無しさん
07/10/18 00:23:43
欲しいと思ったことないけどな。
ランダムアクセスするなら >>475 の言うようにベクタを使うべきなんじゃないの?

479:デフォルトの名無しさん
07/10/18 01:17:33
>>478
〜するべき、とかの話はおいといて、
例えばプロトタイピグとかでコンテナをいちいち決めたくないと思いませんか。
list-set相当の処理は入るけど大部分が副作用なしのリスト処理の場合とか。



480:デフォルトの名無しさん
07/10/18 01:22:37
正直言って思わない。1分で作れるし。

481:デフォルトの名無しさん
07/10/18 01:23:49
setfみたいのならいいけど、
〜-set!が、コンテナの数だけあるのも、なんだかな。

やっぱOOが必要なんだろうけど、
プログラミング業界で一番OOに盛り上がりがないからな。
CLOSの頃と違って。

482:デフォルトの名無しさん
07/10/18 01:29:42
とりあえずlist-set相当は無いらしいという事は判ったので
この話は終わりますね。

>>481
OOというよりイディオムとしてのインターフェースは統一した方が
判りやすいと考えてるんですが。(今のところOOは必要と思ったことないです)

483:デフォルトの名無しさん
07/10/18 01:32:39
>>480みたいな人が多くて、
方言上等!みたいなのがこの世界です。

484:デフォルトの名無しさん
07/10/18 04:11:35
君が思ってるほどよく使われるイディオムでは無いってこと。ベクタってものがあるから。

485:デフォルトの名無しさん
07/10/18 05:03:08
>>481
setf 的な set! だったら srfi にあるね。
URLリンク(srfi.schemers.org)

486:デフォルトの名無しさん
07/10/18 09:39:14
>>482
> (今のところOOは必要と思ったことないです)

今のところlist-set!は必要と思ったことないです



487:デフォルトの名無しさん
07/10/18 17:45:40
クラス作ってどうこうのOOじゃなくて、MP的な意味でのOOじゃだめなの?

488:デフォルトの名無しさん
07/10/18 17:53:16
MPってなんや

489:デフォルトの名無しさん
07/10/18 18:20:21
Meta Programmingちゃいまっか?

490:デフォルトの名無しさん
07/10/18 19:15:23
MP = Message Passing

491:デフォルトの名無しさん
07/10/18 19:46:49
Magic Point

492:デフォルトの名無しさん
07/10/18 20:33:35
もっとぷにぷにして

493:デフォルトの名無しさん
07/10/18 20:34:45
マッスルパワーだろ、常考

494:デフォルトの名無しさん
07/10/18 20:56:36
『みじめな ポインター』じゃねーの?

495:デフォルトの名無しさん
07/10/18 21:30:32
もぷー

496:デフォルトの名無しさん
07/10/18 21:38:49
お前ら何言ってるんだ。
「Mですか?」の略だろ。LISP的に考えて。

497:デフォルトの名無しさん
07/10/19 00:17:01
My Program?

498:oWlyiBCrkzVQNj
07/10/19 04:20:45
KXW9XK <a href="URLリンク(nycokewromgk.com) [url=URLリンク(bezgtedzkmkl.com) [link=URLリンク(ckqlcozchtel.com) URLリンク(mtedzghiaczp.com)

499:デフォルトの名無しさん
07/10/19 16:40:57
バカな流れになるとこれが沸いてくるのはなんでだ

500:デフォルトの名無しさん
07/10/19 21:58:19
偶然です

501:デフォルトの名無しさん
07/10/20 01:49:22
以前、このスレ(だっけ)でも話題になった、eclipse用のslimeの様なもの。
swank backend を使った、開発環境が、取り上げられています。

URLリンク(www.ibm.com)

screen shotを見る限りでは、現時点でも、ずいぶんイケてるっぽいです。

わたしは、eclipse環境を使ってないので、今すぐに試す気はしませんが、
補完候補が、GUIで縦に表示されるのを、そのうち味わってみたいです。

502:デフォルトの名無しさん
07/10/22 14:23:53
Schemeってなんか使いやすくないですか?

503:デフォルトの名無しさん
07/10/22 23:05:43
そうですね

504:デフォルトの名無しさん
07/10/22 23:49:33
だよね

505:デフォルトの名無しさん
07/10/23 00:30:44
やっぱりね

506:デフォルトの名無しさん
07/10/23 01:03:12
でもそんなの関係ねー

507:デフォルトの名無しさん
07/10/23 20:39:42
はい、おっぱっぴー

508:デフォルトの名無しさん
07/10/23 23:30:00
前にもそういう一発系のネタあったよね。
どんなだったか忘れちゃったけど。
LISPの永続性と真逆の関係だね。

509:デフォルトの名無しさん
07/10/24 22:16:11
YコンビネータってなんでY ?
「ワイはコンビネーターや」ってことかい?

510:デフォルトの名無しさん
07/10/24 23:57:15
そんなあほな

511:デフォルトの名無しさん
07/10/25 03:00:23
「ワイは猿や!コンビネーター猿や!」
「必殺、包み包み!」

512:デフォルトの名無しさん
07/10/25 12:20:54
なにゆうてまんねん

513:デフォルトの名無しさん
07/10/25 18:13:59
ポール・グレアムが耳だけ出した覆面かぶってるって話

514:デフォルトの名無しさん
07/10/26 01:41:26
>>513
それはポール大好きグラハム・ちゃっぷまん@世界の料理ショーじゃまいか?

515:デフォルトの名無しさん
07/10/26 13:57:51
グラハム・カー@世界の料理ショー
ビリー・グラハム@テレビ宣教師

516:デフォルトの名無しさん
07/10/26 15:37:32
このスレは勉強になります

517:デフォルトの名無しさん
07/10/28 11:46:07
うそをつかないでください

518:デフォルトの名無しさん
07/10/28 12:25:45
グラハム・ボネット@横山やすし

519:デフォルトの名無しさん
07/10/29 20:31:26
r6rsってスタンダードになれなさそうだよねぇ
後始末が面倒くさそう

520:デフォルトの名無しさん
07/10/29 22:28:03
Cltl3はまだですか?

521:デフォルトの名無しさん
07/10/30 00:05:28
君が書くんだ

522:デフォルトの名無しさん
07/10/30 07:33:45
電話帳なみにぶ厚い仕様書を頼む

523:デフォルトの名無しさん
07/10/30 10:32:29
黒板に書けば1枚でも分厚いよ

524:デフォルトの名無しさん
07/10/30 12:31:12
うちの村の電話帳は薄いよ

525:デフォルトの名無しさん
07/10/30 17:33:45
>>520
アレをかける人で執筆時間がとれる人いるんだろうか。


526:デフォルトの名無しさん
07/10/30 19:22:26
GLSを拉致して・・・

527:デフォルトの名無しさん
07/11/04 23:24:20
3冊ほどLisp本キボン


528:デフォルトの名無しさん
07/11/05 01:08:37
Common Lisp the Language, 2nd Edition
On Lisp
Practical Common Lisp

529:デフォルトの名無しさん
07/11/05 04:27:03
入門書がないのはナゼ。

530:デフォルトの名無しさん
07/11/05 07:48:55
始めるならschemeがいいよ
CLはつまんない制約ばっかりで最初は滅入るから

531:デフォルトの名無しさん
07/11/05 12:53:03
>>529
入門は一生に一度だけだから、比較的マイナーな分野だと言えよう

532:デフォルトの名無しさん
07/11/05 12:53:34
>>530
そんなこたあない

533:デフォルトの名無しさん
07/11/05 14:09:03
>>531
そんなこたあない


534:デフォルトの名無しさん
07/11/05 14:28:16
>>528
thx
>>534-
他の皆さんは?(・∀・ )っ/凵 ⌒☆チンチン


535:デフォルトの名無しさん
07/11/05 22:25:23
>>531
BSD類のインストーラに凝ったものが無い、というのと同じような気がする

536:デフォルトの名無しさん
07/11/05 23:23:43
URLリンク(www.hi-ho.ne.jp)

・マクロ(schemeインタプリタ)を実装

だって。


537:デフォルトの名無しさん
07/11/06 05:04:00
>>535
浦島かよ。
PC-BSDのインストーラはLinuxみたいに凝ってるし、
FreeBSDも7からGUIインストーラが用意される予定。

538:デフォルトの名無しさん
07/11/06 09:16:35
予定に過ぎないのであれば大筋合ってるじゃん

539:デフォルトの名無しさん
07/11/06 09:35:42
>>537
OpenBSDのインストーラは最後の砦だw

540:デフォルトの名無しさん
07/11/06 12:11:48
>>537
浦島かよ。
FreeBSDのGUIインストーラは7に入らないことが決定済み。

541:デフォルトの名無しさん
07/11/06 12:20:59
もまえら、Unix板に返れ。


542:デフォルトの名無しさん
07/11/06 16:33:01
もまえら、Unix板に変えれ。

543:デフォルトの名無しさん
07/11/06 22:29:14
SFUが.NETみたいに標準搭載になればいいのにねえ。
WinFXでWin32を順次置き換えていくらしいから、
もう既にWin32で囲い込みする必要もないだろうに。
サポートの手間がメンドクサイからまあ、なさそうだけど。


544:デフォルトの名無しさん
07/11/06 22:45:05
マイクロカーネルだって事を M$ 自身が忘れてしまっている

545:デフォルトの名無しさん
07/11/07 00:20:35
>>543
なぜこのスレで書いてるのか知らんが、Windows Vista では
Enterprise、Ultimate 版に SFU の後継である SUA が載ってるよ。

546:デフォルトの名無しさん
07/11/07 14:26:53
slime専用sbcl coreをmake一発で作りたいとおもい、
sbcl-core:
rm -f ${SBCL_CORE}
sbcl <<EOF
(load "${SRC_DIR}/${PACKAGE_NAME}/swank-loader.lisp")
(save-lisp-and-die "${SBCL_CORE}")
EOF
としてみたのですがうまくいきません
どうしたらよいでしょうか。

547:デフォルトの名無しさん
07/11/07 18:49:20
エラーメッセージは?

makeの継続行は最後に\
here documentでは必要ないが、
makeは一行で1 shell script。行継続しないと。ってことかな?

548:デフォルトの名無しさん
07/11/08 02:50:15
schemeで
common lispの
(let ((count 0))
 (defun increment ..
 (defun decrement ..

のような処理をしたい場合はどうすればいいのでしょうか?

549:デフォルトの名無しさん
07/11/08 04:32:17
>>548
(define inc #f)
(define dec #f)
(let ((count 0))
  (set! inc (lambda ...))
  (set! dec (lambda ...)))

550:デフォルトの名無しさん
07/11/08 20:42:17
>>549
schemeの理論をそれほどちゃんと理解しているわけじゃないが、
厳密に言えばincrementをlambdaに束縛するのがincrementを呼ぶ前に
行われるとは限らないんじゃないか?

551:デフォルトの名無しさん
07/11/08 21:52:25
(let ((count 0))
 (define inc (lambda ...))
 (define dec (lambda ...)))
ってできないの?

552:デフォルトの名無しさん
07/11/08 23:42:14
最近勉強始めたんだけどschemeで作るプログラムのアーキテクチャが全然想像できない
オブジェクト指向だったらMMVCとかあるけどschemeでオブジェクト指向やってもうれしくもなんともないし

553:デフォルトの名無しさん
07/11/09 01:06:31
うれしくなければやらなければいい。

>>551
r5rs - 5.2.2 Interanal Definition

554:デフォルトの名無しさん
07/11/09 01:12:47
初心者で質問なんだけど、手続きが可変長引数を取るとき、
その全てを引数として他の可変長引数を取る手続きに渡すにはどうすれば良い?

(define (f1 . x)
x)
(define (f2 . x)
(f1 x))
(f2 1 2 3 4 5 6) ; ((1 2 3 4 5 6))になっちゃう(1 2 3 4 5 6)にしたい


555:デフォルトの名無しさん
07/11/09 01:20:39
(apply f1 x)

556:デフォルトの名無しさん
07/11/09 01:24:09
>>555
ありがとー

557:デフォルトの名無しさん
07/11/09 01:27:48
>>552
scheme とか lisp には言語を自由に拡張できるマクロが...
なので
> プログラムのアーキテクチャ
てなものを考えてもしょうがないと思うけど...

「特定の言語とかモデルに捕らわれないで問題領域解決用の専用言語を作る」
のが lisp 系言語の流儀だと思う.



558:デフォルトの名無しさん
07/11/09 01:38:39
Lisp : 粘土
Java : 煉瓦
Ruby : 絵の具

559:デフォルトの名無しさん
07/11/09 01:42:26
俺言語とかDSLを作らなくても最終目的に向かう途中で実行系自体がDSLみたいな状態になる。
プログラムを作るというより実行系の環境を最終目的物に書き換えていくみたいな感じ。

粘土細工作るときの作業台全体みたいな物だと思ってるんだけどどうなんだろう。


560:デフォルトの名無しさん
07/11/09 01:42:57
うわ、くだらねぇもの書いている間にシンプルなお答えが orz


561:デフォルトの名無しさん
07/11/09 02:20:03
その点、haskellとかocamlとかどー考えてんだろ

562:デフォルトの名無しさん
07/11/09 02:44:35
Haskell 実行する前に問題解決

563:デフォルトの名無しさん
07/11/09 07:59:36
>>551
出来る
けど内部定義のdefineだから
グローバルな束縛にならない

一方set!なら可視な束縛の変更だから
グローバルな環境の変更もできる

553がシンプルな答えだけど

564:デフォルトの名無しさん
07/11/09 08:42:26
>>563 の言うようにset!がシンプルだけど,
let環境の値としてinc, dec(を含むリスト)を返し,それを外部でinc, decで束縛すれば...

(define tmp
 (let1 count 0
  (define (inc) ...)
  (define (dec) ...)
  (list inc dec)))

(define inc (car tmp))
(define dec (cadr tmp))

;; 自分では動くか試してない(ぉ

565:デフォルトの名無しさん
07/11/09 10:18:36
それなら、defineせんでも、lambda式返せばいい。

566:546
07/11/09 12:24:49
>547
ありがとうございます

make sbcl-core
rm -f /home/hoge/.sbcl/sbcl.core-with-slime
sbcl <<EOF
This is SBCL 0.9.17, an implementation of ANSI Common Lisp.
More information about SBCL is available at <URLリンク(www.sbcl.org)

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (load "../src//slime-cvs/swank-loader.lisp")
load: not found
*** Error code 127

というメッセージが出ているので、makeの問題では無いと思うんですが…


567:デフォルトの名無しさん
07/11/09 12:35:36
Scheme も internal define なんて導入せず、それ以前の Lisp みたいに
define は top level をいじることにしとけばよかったのにな。
そうすれば begin の
5.1 Programs
> At the top level of a program (begin <form1> ...,) is equivalent
> to the sequence of expressions, definitions, and syntax
> definitions that form the body of the begin.
5.2.2 Internal definitions
> Wherever an internal definition may occur (begin <definition1>
> ...,) is equivalent to the sequence of definitions that form the
> body of the begin.
みたいな特別扱いも不要だし
(define x 10)
(define y x)
y => 10
(let ()
  (define x 10)
  (define y x)
  y) --> error
なんてわかりづらいこともなくなったのに。

568:デフォルトの名無しさん
07/11/09 14:36:31
beginのその特別扱いってなんであるんだ?
処理系書くとき邪魔だよねえ。

しかしdefineで内部関数を書けるのは便利。
labelsとかfsetとかは醜い。書きづらいし読みづらい。

569:デフォルトの名無しさん
07/11/09 15:16:43
二つ目の方が、
(begin <form1> ...)じゃないから、
(begin (begin <definition1> ...))を機械的に、
<definition1> ...とsplicingするわけにいかないのがきつい…

こっちはR6RSではないんでしょ。
・Internal definitions are now defined in term of letrec*.

トップレベルの方はライブラリがらみでまた気にするところ増えたけど。



570:デフォルトの名無しさん
07/11/09 15:48:37
(begin (begin <definition1> ...))が
(begin <definition1> ...)になって、次は、
<definition1> ...でいいんじゃないのかなあ?

その辺り、R6RSの方が解釈しやすい書き方だけど。
<body> <library body> <top-level body>と、
構文上のノンターミナル使って定義してあるから。
R5RSは文章での説明が多くて理解するのに頭を使う。



571:デフォルトの名無しさん
07/11/09 21:44:17
The Little Shemerを簡単じゃないかと思衣ながら読んでいたら、
8章の途中から泣きそうになった(高階関数のあたり)。

何とか理屈はわかったけれど、身に付くかどうか・・・
がんばってみます。


572:デフォルトの名無しさん
07/11/09 23:47:21
>>571
おお仲間だ!
multiremberEcoとかcontinuationとか出てきたあたりで学習速度がすっごいダウンするよね

573:デフォルトの名無しさん
07/11/10 00:50:26
The Little Shemerは、
曖昧に理解せず、身に付けさせるための本だから、
ちゃんと読み終わったら身に付くよ。

574:デフォルトの名無しさん
07/11/10 00:56:59
seasonedとかreasonedはどうだった?

575:デフォルトの名無しさん
07/11/10 12:38:29
lisp で並列分散処理プログラムを実際に書いている人は居ます?
どういった処理系もしくはライブラリを使ってますか?
やっぱりほとんどいないのかな。。

576:デフォルトの名無しさん
07/11/10 12:57:24
3行目があるせいで釣りにしか見えん。

577:575
07/11/10 13:40:41
まじめに自分もその環境でコーディングしたいと考えています。
並列プログラミングの話ってほとんど語られていないと思ったんで。

578:デフォルトの名無しさん
07/11/10 14:08:27
Erlisp は期待してたんだけど、どうなったのだろう

579:デフォルトの名無しさん
07/11/10 14:09:17
cmlisp とか, *lispとかの話かい???



580:デフォルトの名無しさん
07/11/10 14:36:44
CL のライブラリだよ

581:デフォルトの名無しさん
07/11/10 22:16:14
アナルlisp?

582:デフォルトの名無しさん
07/11/11 00:04:04
Schemeの入門はLittle Schemerしかないのかな。
手習いや湯浅先生の入門本は入手しづらいし。

583:デフォルトの名無しさん
07/11/11 02:55:56
あなりすぷ・・・

584:デフォルトの名無しさん
07/11/11 12:23:59
(cons 'ちんぽ 'アナル)

585:デフォルトの名無しさん
07/11/12 07:54:12
`(ちんぽ . アナル)

586:デフォルトの名無しさん
07/11/12 09:50:01
Python実装だけど並列処理の記述はLispでやる予定の俺がいますよ


587:デフォルトの名無しさん
07/11/12 22:13:04
みんなschemeの処理系なに使ってんの?
みんな自作?

588:デフォルトの名無しさん
07/11/12 22:21:59
ごうしゅをつかってまつ

589:デフォルトの名無しさん
07/11/12 22:49:07
Gauche 時々 MIT

590:デフォルトの名無しさん
07/11/12 23:10:25
587 じゃないけど...

MIT 使ってる人は初めてだ。もし良かったら、
どんな時に Gauche じゃなくて MIT を使うか
教えて下さい。

591:デフォルトの名無しさん
07/11/12 23:26:12
MITしか入ってない環境で作業するとき・・・。

592:591
07/11/12 23:50:57
職場で借りてるファイルサーバになぜか入ってて時々使ってるって程度の話ね。

593:デフォルトの名無しさん
07/11/12 23:58:55
多くのディストリとかcygwinに、わりとデフォで入っているという理由で guile を使うことがある

594:デフォルトの名無しさん
07/11/13 00:16:13
>>591,592
どうもありがとう。何か拘りがあって使ってらっしゃるのかと思いました。

595:デフォルトの名無しさん
07/11/13 00:46:26
>>587
slang

596:デフォルトの名無しさん
07/11/13 01:25:24
リストの中からある要素を探して、その要素の前にあるオブジェクトを破壊的に挿入する
にはどうしたらいいでしょう。例えば、3 の前に 'a を挿入したいです。
(let ((x 3))
(let ((ls (list 1 2 3 4 5)))
;; ここ
ls))
=>(1 2 'a 3 4 5)


597:デフォルトの名無しさん
07/11/13 02:27:53
俺初心者で悪いけど、こういうこと?

(define (find-insert lst fnd val)
(define (find-cdr lst f)
(if (equal? (cadr lst) f)
lst
(find-cdr (cdr lst) f)))
(let ((l (find-cdr lst fnd)))
(set! (cdr l) (cons val (cdr l)))))

(define ls '(1 2 3 4 5))
(define x 3)
(find-insert ls x 'a)
(write ls)

598:デフォルトの名無しさん
07/11/13 04:01:03
>>597
お付き合いいただいてどうもです。ヒントになりました。
setf を使えば良かったみたいです。3 の後になってしまいますが、
次善の策としてこれでも良いです。
(let ((x 3))
(let ((ls (list 1 2 3 4 5)))
(let ((place (member x ls)))
(setf (cdr place) (cons 'a (cdr place))))
ls))
=>(1 2 3 a 4 5)

599:デフォルトの名無しさん
07/11/13 12:00:26
>>587
俺はPLTだな…IDEが付いてくるからって理由だけだが。

600:デフォルトの名無しさん
07/11/13 12:14:47
gaucheとscm。
scmはdefaultでreadlineがあるからちょこちょこ書くときはこっち。

601:デフォルトの名無しさん
07/11/13 18:00:34
scheme48(とguile)
有理数が使えていろんな環境で使えるのはこれくらいしかない(と思う)
ocsなんかも面白そうだけどまだあんまり使ったことない

602:デフォルトの名無しさん
07/11/13 18:05:51
一度どれか使っちゃうと、
独自仕様部分のポーティングが面倒になる。

603:デフォルトの名無しさん
07/11/13 18:51:27
つまりスキームなんてどれも使うな、コモンリスプ最強ってことか?

604:デフォルトの名無しさん
07/11/13 20:17:53
>>603
Common Lispの処理系が動かない環境もあるんでつ(´・ω・`)

605:デフォルトの名無しさん
07/11/14 01:05:28
どんな環境?

606:デフォルトの名無しさん
07/11/14 06:55:03
zaurus-openbsdとか

607:デフォルトの名無しさん
07/11/14 13:22:12
clispくらい動きそうだけどな

608:デフォルトの名無しさん
07/11/14 13:58:42
つPalmOS

609:デフォルトの名無しさん
07/11/14 18:19:10
>>607
動きそうだけど動かないですねぇ
clispもGCLもGaucheもMzSchemeもGambit-Cも

Gambit-Cはビルドは成功するけどリーダがいかれてて
3 -> 0
8 -> unbound error
とかになります
ソースが機械翻訳のCだから追う気になれないけど
規則性のあるバグだから見つかればつぶせそうです

scheme48は依存ライブラリもなく、GCも多倍長計算も有理数も自前なのにi386 onlyでポーティングされてるのが疑問
だから自分でパッケージ作っていれてます

610:デフォルトの名無しさん
07/11/15 15:48:16
Linuxならi386以外にもportされてるけどな
URLリンク(packages.debian.org)

611:デフォルトの名無しさん
07/11/16 01:12:44
というかzaurusなら普通にscheme48のパッケージが流通しているわけであるが。

感度の悪いアンテナ持ってるやつってどうよ?

612:デフォルトの名無しさん
07/11/16 06:53:05
>>611
zaurus-"OpenBSD"の話です
i386のみにportingされているのは事実です
i386じゃなくても動くのも事実ですけどね

613:デフォルトの名無しさん
07/11/16 07:42:01
好きで使っているOSへの愚痴は、そのOSの板でやってくれ。

614:デフォルトの名無しさん
07/11/16 23:20:53
そう、ここは好きじゃないのに使わされている OS への愚痴を書き込む場所です

615:デフォルトの名無しさん
07/11/16 23:48:10
好きでも嫌いでもないOSの愚痴はどこに書き込んでもいいです

616:デフォルトの名無しさん
07/11/16 23:51:51
押忍

617:デフォルトの名無しさん
07/11/16 23:58:29
OCS ってこれか。

URLリンク(will.iki.fi)

618:デフォルトの名無しさん
07/11/17 01:17:35
御意

619:デフォルトの名無しさん
07/11/20 13:14:54
>>600
ledit使えばいいんじゃね? > readline

$ ledit gosh -i

$ alias gau='ledit gosh -i'してる。


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

5096日前に更新/189 KB
担当:undef