Lisp Scheme Part18 ..
[2ch|▼Menu]
314:デフォルトの名無しさん
07/10/04 00:23:01
KiczalesだってAMOPの中の人だもんなあ

315:デフォルトの名無しさん
07/10/04 00:25:49
最初気になった括弧が、段々ただの「紙の端」くらいにしか思わなくなってくるから不思議だ。

昔の自分は何故、閉じ括弧が連続している部分をあんなに不安げに見つめていたのか、
もううまく思い出せないよ。あんな箇所、全然見る必要無いのにな。

316:デフォルトの名無しさん
07/10/04 00:26:26
>>313
エディタの設定で括弧の色を薄くするという、なんともチープなハックもあるがw


317:デフォルトの名無しさん
07/10/04 00:29:33
ところで括弧の話が出たついでにおまえらに聞くが、R6RSの [ ] ってどう思う?
Lisp慣れてる人は「そんなの要らん」だろうけど、これで少しでも慣れない人に
わかりやすくなるならアリなのかな、とも思うのだが。

318:308
07/10/04 00:30:52
あら、ちょっと探している間にずいぶんと流れてる…
>>307
URLリンク(practical-scheme.net)

って探すのに15分以上かかったのね…

319:デフォルトの名無しさん
07/10/04 00:32:28
工学の為の工学か

320:デフォルトの名無しさん
07/10/04 00:32:39
>>317
おれは関数適用以外の括弧に[]つかうのはアリだと思うけど、
R6RSの投票結果ページにあった反対意見の中には、
処理系独自の拡張用に[]をとっておいて欲しい、というのもあった。
なるほどなあとも思った。

321:デフォルトの名無しさん
07/10/04 00:33:45
独自拡張は#〜使えよ。

322:デフォルトの名無しさん
07/10/04 00:34:28
>>315
その不安感分かるw
そして慣れると段々とカッコが見えなくなってくる。脳での処理方法が変わるんだろうね。
>>317
初心者に何の助けにもならないと思う>>[]
別に()の数が減るわけじゃないし。「異様」なカッコだらけのLispプログラムに、
ちょっと違うカッコ付けたって、普通のプログラムになるわけじゃないし。

323:デフォルトの名無しさん
07/10/04 00:35:35
>>320
確か CLtL にも [ ] を(デフォルトでは)定義しない理由でそんなことが書いてあったな

324:デフォルトの名無しさん
07/10/04 00:35:51
>>317
最小にこだわってたんじゃなかったか?とツッコミたくなるね。[ ] をユーザーに解放しないなんてとんでもない。

つうか define-syntax もよー。チューリング完全ならいいってもんじゃねーだろ。
パターンマッチ + 実用上十分な衝突の回避を defmacro の上に実装してよって思うね。

325:デフォルトの名無しさん
07/10/04 00:38:16
KOKUBANに書ければどうだっていいんだよ

326:デフォルトの名無しさん
07/10/04 00:38:52
>>316
括弧の良さというのは表現の“軽さ”だと思うんだよね。あれ以上シンプルな記号はあまりない。
これが begin 〜 end とか、XMLみたいな表記だったら、仮に論理的に同じこと書けても使い物にならんと思う。

327:デフォルトの名無しさん
07/10/04 00:39:35
その昔スーパー括弧閉じってのがあってですね。


328:デフォルトの名無しさん
07/10/04 00:40:53
>>327
パンチカードでは重宝であったw

329:デフォルトの名無しさん
07/10/04 00:43:13
支援機能つきエディタの発展とともに消えたんだよな >スーパー括弧

330:デフォルトの名無しさん
07/10/04 00:45:52
どんなことがあってもXSLTの再帰関数よりは簡潔です

331:デフォルトの名無しさん
07/10/04 01:25:55
vimですら、対応する括弧が常にハイライト表示なのに、
今時、括弧羅列が見にくいなんてあり得ないわ。

332:デフォルトの名無しさん
07/10/04 02:17:29
本とかで習うとそういう印象なのかもね

333:デフォルトの名無しさん
07/10/04 07:47:34
適切にインデントされてるのとインデントの部分に薄い縦線引いてくれるといいんだけどなぁ。>本


334:デフォルトの名無しさん
07/10/04 10:43:55
>>318
R6RSでそのへんの意味論が決定されたってことは、
R6RS的には後者もOKってことでいいのかな?

335:デフォルトの名無しさん
07/10/04 10:45:33
S式に対する意味論だからそうだね。
まあ以前でも . 使えない実装の方が珍しかっただろうけど。

336:デフォルトの名無しさん
07/10/04 12:56:53
C系から来た人間には、閉じ括弧を纏めちゃうのも疑問だったよ。
閉じ括弧は一つ一つ書いた方が判りやすいのに、って。
実際最初はそうやって書いてた。
今は閉じるのが楽だし慣れたけど。

337:デフォルトの名無しさん
07/10/04 13:57:22
まっとうなインデントの為されたソースなら、何がどう書いてあっても
(hoge (fuga ...
    (hage (higii 10 ...
      (ahya ...
    (pugera ...
このあたりの形で「骨組みの把握」は済んじゃうんだよね。「右っかわ」は殆どディテール専門。
だから閉じ括弧を纏めたほうがスッキリなんだろうな。
もちろん極論だけど、閉じ括弧はリーダが構造を捉える為のものであって、人間が構造を捉える為の
ものではない、という感じ。

これ、Pythonソースの見方に近いのかな? Python触ったことないけど。
少なくともC系のソースは、同じ「骨組みの把握」をするにも、もうちょっとこう、文のアタマ側とケツ側、
両方からじわじわ捉えていく感覚が必要になる。俺の場合は。

338:デフォルトの名無しさん
07/10/04 14:29:27
パイソンは;等を省略すると、
構文構造を追うものがインデントしかない。
だから構文解析から得た情報で、
正しいインデント処理をエディタに任せる書き方慣れていると、
いろいろと面倒な時もある。
インデントは人間が明示的に行う場面が多くなる。
行末で)や}や;の代りに、次の行でのインデント上げを行う。


339:デフォルトの名無しさん
07/10/04 22:36:18
それが良いんだよ。

340:デフォルトの名無しさん
07/10/05 02:31:10
工学のための工学とか頭悪すぎて笑った。


341:デフォルトの名無しさん
07/10/05 02:51:44
自演乙

342:デフォルトの名無しさん
07/10/05 17:26:29
Lisper/Schemerオナニー見せ合いきめえwwwwwwwwwwwwwwwww


343:デフォルトの名無しさん
07/10/05 19:22:42
オナニーすら出来ない技術者以前の厨が喚いてます

344:デフォルトの名無しさん
07/10/05 22:29:28
R6RSの日本語訳マダー?

345:デフォルトの名無しさん
07/10/06 18:33:04
Common LispでもSchemeでもない俺様Lispって今どれぐらいあるのかな
どこかに一覧無い?

346:デフォルトの名無しさん
07/10/06 18:36:11
いったいどうやってそんな一覧を作るんだよ。

347:デフォルトの名無しさん
07/10/06 18:43:56
そのオレ様リスプ使用者が集まってくれないと作りようがないんだがw

348:デフォルトの名無しさん
07/10/06 19:34:59
俺様リスプをつくるような奴が、一覧をつくるとか、そんな無駄なことをする人間だと思うのか?

349:デフォルトの名無しさん
07/10/06 19:44:43
"俺様"抽出は他の人で
URLリンク(www.dmoz.org)
URLリンク(www.dmoz.org)

350:デフォルトの名無しさん
07/10/06 21:38:29
Lisp処理系の作成って情報系じゃ普通に宿題で出るらしいね

351:デフォルトの名無しさん
07/10/06 21:47:01
たしかにMLで作った気がするなあ。しょぼいやつだったけど。

352:デフォルトの名無しさん
07/10/07 00:03:07
設定ファイルが必要になった->XMLで->なんか項目が増えすぎ->動的変更したくなった->なんかLispみたいになった->どうせならLispでいいじゃん->そのまま製品に

こういう事なら2度あった


353:デフォルトの名無しさん
07/10/07 00:15:29
Lisp使って仕事させてくれるなんて羨ましいな。
俺の会社じゃ絶対無理だ。「Lisp?何それ?それで書くと何人月減るのか証明しろよ」って言われる。
…やっぱschemeで仕事できる会社探すわ。

354:デフォルトの名無しさん
07/10/07 00:55:02
馬鹿だな、こっそり使うんだよ。とんがり頭の上司にバレた頃にはもう手遅れなのだ。

355:デフォルトの名無しさん
07/10/07 02:50:19
見付かったら
「これはXMLファイルですよ。<>の変わりに()を使うのがWeb2.0なんですよ?」
と言えばおk。

356:デフォルトの名無しさん
07/10/07 04:33:50
巡回構造のS式の印字表現(read/writeできる)てありますか?
なんかGaucheでは#なんとか#みたいなのを見た事ありますが、
一般的なんでしょうか。

357:デフォルトの名無しさん
07/10/07 04:35:21
すいません
巡回じゃなくて循環ですた


358:デフォルトの名無しさん
07/10/07 05:55:18
>>356
srfi なので一般的って言っていいんじゃないでしょうか。
URLリンク(srfi.schemers.org)

common lisp 由来ですね。
URLリンク(www.lispworks.com)


359:デフォルトの名無しさん
07/10/07 08:28:49
あ、SRFIにあるんすね。
こういうのって、相互参照してる場合どうなるのかなと。
(define x (list 'a 'b))
(define y (list 'c 'd))
(begin (set-cdr! (cdr x) y) #t)
(begin (set-cdr! (cdr y) x) #t)
(write-with-shared-structure x)
#1=(a b c d . #1#)
(write-with-shared-structure y)
#1=(c d a b . #1#)

やっぱこうなるか。
write-with-shared-structureで各々の変数を保存して、
後でread〜で取り出せるかなと思ったんですが、
共有関係が消えてしまいますね。
(define x '#1=(a b #2#))
(define y '#2=(c d #1#))
みたいな事は可能なのかな。
完全に構造を保存する場合はセルをダンプするしかない?


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の問題では無いと思うんですが…



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

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