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


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

Lisp Scheme Part22



1 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:58:40 ]
□過去スレ□
Part21: ttp://pc11.2ch.net/test/read.html/tech/1207300697/
Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/
Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/
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

593 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:12:54 ]
>>592
ver372までset-cdr!が使える。
pre399ぐらいでは使えなくなってた。ver4.0は400に相当してるはずで使えないと思う。
正直、不便になった。

594 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:29:46 ]
ということは、実装によってはlist?を定数時間で計算できるな

595 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:10:36 ]
処理系依存の話題で恐縮ですが、Gaucheのオブジェクトシステムについてお聞きしたいです。
スレ違い、または既出だったら申し訳ないです。

用件を言うと、Gaucheのオブジェクトシステムで
スロットに対するアクセス制御は困難でしょうか?
(アクセス制御: C++, Java等にある private / public 的な機構)

現在、「プログラミングGauche」17章のオブジェクトシステムのあたりを読んでます。
自分は、Java->Ruby->(Haskell)->Scheme
とやってきたので、どうもJava的なOOの発想があるようです。
せっかくオブジェクトシステムがあるのだから、
活用しようと思っているのですが、スロットのアクセス制御が無いと不安に思います。
method内だけ参照や変更を許すようなclassを定義したいなぁと思ったのが事の発端です。

「Gauche:スロットアクセス」で検索して出てくるページが参考になったのですが、
マクロとメタオブジェクトプロトコルを駆使してました。

やはり総称関数という機構を取り入れている以上、
単純にスロットをカプセル化はできないですかね?
長文すみませんでした。


596 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:13:54 ]
いわゆるメソッドと違って、総称関数は特定のクラスの所有物じゃないからねえ。
とりあえず、その辺を管理する(指定する)仕掛けがいるわなあ。

597 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:14:38 ]
真面目な長文かけるならこんなゴミ溜めじゃなくてWilikiにでもかきなよ


598 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:18:57 ]
>>595
アクセスコントロールはないです。

599 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:10:07 ]
整備兵 『80%?冗談じゃありません!現状でジオングの性能は100%出せます!!』
シャア  『脚は着いていない』
整備兵 『あんなの飾りです。偉い人にはそれが分からんのですよ!』

600 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:29:04 ]
javaやC++と同じにしたいなら、同じ機構を用意すればいい。
wilikiの連中は、既存のシステムしか使わずに実行時に何かやろうとしてる。
おかしな事になるのは当然。こんなのと付き合う必要はない。
>>595を含め大抵の奴はCLOSモドキなんて望んでない。
javaやC++でコンパイル後に何の情報が残るか考えれば判るはず。
さあ、やるんだ。

601 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:35:07 ]
>>599
元ネタってガンダムなの!?



602 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:47:35 ]
>>600
こうして、アプリケーションと同じ数だけのフレームワークが発明されるのであった。w
(批判ではない。むしろこのあたりがLispの良さであろう。)

603 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:07:38 ]
資産の積み重ねができないわけですね
これも数十年経ってもメジャーになれない理由の一つなのかな?

604 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:15:06 ]
ANSIに規格がある言語はマイナーとは言えないだろう

605 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 05:03:15 ]
>>595
CLOS系は「そういうもの(アクセス制御は気にしない)」だと思うのが吉。
文化の違い。
隠蔽したいなら、クロージャベースのオブジェクトシステムの方がいいんじゃないかな。


606 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 07:10:05 ]
>>595
CLOSって、Java/C++系とは文化が違いすぎて、private/public/protectの区別がなくても
さほど問題がないよ。この辺は>>605さんの意見とかぶるね。

あの系統のオブジェクトシステムを作るなら、別に作成したほうがいいけど、できればCLOS
の方を利用するように頭の発想を切り替えたほうがいいよ。CLOSのほうが柔軟な制御が
できるのでね。

607 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:00:04 ]
オブジェクトが必ずその名前のスロットを持っているとassertできる状況なら、
それを隠蔽する必要があるとは思えない。

608 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:16:27 ]
CLOS使えだなんて口が裂けても言えん。

609 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:02:11 ]
CLOSは、例えばアクセスコントロールを持つような
別の標準オブジェクトシステムのカーネルになるための
基本オブジェクトシステムとして考案されたが、
いつの間にか標準のオブジェクトシステムの座に着いている。

なんだ使ってみればCLOSのままでええやんってところか。

610 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:06:40 ]
そこでFlavorsですよ。

611 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:27:16 ]
>>609
この辺の事情はbit別冊のCLOS本に書いてある。
たしか井田さんがMLでの議論をまとめてる。

既存のCommonLoopsかFlovorsのどちらの流儀にするか揉めているところに、
汎用のカーネルを考案できないかとの提案があった。



612 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:30:26 ]
>>597
そうですね。是非、そちらの方も活用させて頂きます。
scheme系は、まだ初めてから日が浅いこともあり、
気が引けてました。

>>600
私の不勉強で、どのようにJavaなどと同じ機構を実現するか分かりませんでした。
出直します。ただ、できるだけ独自の機構は避けたいと考えてました。

>>605-607
クロージャベースのオブジェクトシステムだと内部状態は隠蔽できますね。
ただ、CLOSとの相性・一貫性に不安があり、できればGaucheに標準的にある
オブジェクトシステムだけで解決しようと思ってました.
皆さんのおっしゃるように、発想を切り替えてみようと思います。

>>596-608
最後に。皆さん、レスありがとうございました。とても参考になりました。
CLOSと、Java/C++系とは異なる発想でプログラムを設計するという事ですね。
CLOSを実際にもっと使用して、その発想の違いを考えていきたいと思います。

613 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:47:01 ]
人気の言語を作るには ---Being Popular---
practical-scheme.net/trans/being-popular-j.html
を読んで妄想した事。
Lispにシステムハッキング機能を追加したら、インスタントLispマシンの出来上がり!!
Lisp Override your Operating System...

614 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:03:12 ]
>>613
つmovitz

615 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:51:43 ]
>>592-593
LanguageをSwindleに設定したらset-cdr!が使えました。

616 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:13:16 ]
>>615
ver4.0ってR6RSに対応したんだっけ?

617 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:47:57 ]
setq 説得

set-cdr! 説得だああああ!

618 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:54:30 ]
お〜い、山田く〜ん
617の座布団全部とれ!

619 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:34:39 ]
>>616
ほぼR6RSを満たすSchemeや、独自のPLT Schemeなど複数の言語が選べる。
そして、異なる言語で書かれたモジュールをインポートできる。

620 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:41:42 ]
>>616
>ほぼR6RSを満たすSchemeや

まだR6RSに対応できてないの?言語選択はR5RSのままだし。

621 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:12:48 ]
>>620
言語選択は一番上の ``Module'' を選ぶ。
ソース (DrSchemeのウィンドウの上半分) の最初の行に
#!r6rs
次の行に
(import (rnrs))
それ以降の行に定義を書いて
Runのボタンを押す。



622 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:12:34 ]
r6rsモードだと#lang schemeの組み込み関数とかsrfiとか使えなくね?

623 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:48:02 ]
R6RSになって「R5RS用のSRFI」は使えてるの?

624 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:59:04 ]
Revised6 Report on the Algorithmic Language Scheme
www.r6rs.org/final/r6rs.pdf

Revised6 Report on the Algorithmic Language Scheme ― Standard Libraries
www.r6rs.org/final/r6rs-lib.pdf

Revised6 Report on the Algorithmic Language Scheme ― Non-Normative Appendices
www.r6rs.org/final/r6rs-app.pdf

Revised6 Report on the Algorithmic Language Scheme ― Rationale
www.r6rs.org/final/r6rs-rationale.pdf

基本的には上2つがユーザーに重要な情報。
#次のテンプレに入れてください。

625 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:05:05 ]
ちょっと聞きにくい質問なんですが、
R6RSってR5RSとかと比べてどうなんでしょうか。
まだ出たばかりで実装は少ないと思いますが、
今後、多くの処理系で実装が進むのか、
また、ユーザとしてもR6RSへの移行を意識しておくべきなのか、
そういったことです。
ちょっと漠然とした質問でうまくまとめられなくてすみません。

626 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:10:00 ]
>>621
(import (rnrs))
↓↑
(import (rnrs (6)))

どっち?

627 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:14:27 ]
>>621
補足
特殊トークン #!r6rs はソースがR6RS準拠であることを示す。コメント扱い。

628 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:19:16 ]
(import (rms)) かとおもった。

629 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:25:35 ]
slibはちゃんと使える?

630 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:44:36 ]
>>625
R6RS決定時からPLT Scheme、Chez Scheme、Scheme48は近いうちにR6RSを採用すると言われていました。
今回、PLT Schemeが出してきたので、先行していたScheme48に続いて2つ目の実装かな。
Chez Scheme v7.4は部分的にR6RSのプリミティブが使えるようになってますが「will soon support R6RS standard.」となってるので、
次のアップデートで完全対応だと思います。

自分も含めたユーザーは実装が出揃って、ある程度比較記事などを見たうえで行動してもいいと思います。
今後、色々な問題点が表面化するでしょうから。
うまくいけばR6RS対応の色々な処理系に対するポータビリティは高くなる「ハズ」ですがw

631 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:19:15 ]
>>628
Join us now and share the software;
You'll be free, hackers, you'll be free.
って超音痴で歌うのか!



632 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:20:10 ]
Scheme48ってR6RSにもう対応してましたっけ?

633 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:22:20 ]
Fmmm..... なぜあなたは超音痴だと確信したのですか?

634 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:32:05 ]
>>633
一度聴いた事あるです orz


635 名前:デフォルトの名無しさん [2008/06/15(日) 21:43:46 ]
>>631
>Join us now and share the software;
>You'll be free, hackers, you'll be free.
これか…… jp.youtube.com/watch?v=9sJUDx7iEJw&NR=1

636 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:09:42 ]
>>622
(import
(rnrs)
(prefix (scheme base) scheme:))

637 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:19:10 ]
Gauche-gl入りバージョンをリリースしました。(Gauchebox-0.8.13-box2.exe)
sourceforge.net/project/showfiles.php?group_id=25227&package_id=275266&release_id=607291


638 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:20:02 ]
ガウチェ(・∀・)

639 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:56:24 ]
OpenBSDでClispをビルドすると
なぜか実行ファイル作成機能が壊れてしまうので
ソースを追ってみたのですが
とても不思議な現象に遭遇しました。
実行ファイルを指すファイルディスクリプタから
readで読み込む部分の前に
読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと
EFAULTが起こります。
読み込み先メモリに4000バイト間隔で1バイトの読み込みOR書き込みを行ってから
readすれば正常に動作します。
なぜでしょう?
ちなみに4000バイト・EFAULTというのはi386プロセッサの場合で
armプロセッサの場合はそれぞれ3999バイト・EACCESになります。

640 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:57:20 ]
>639
まぁとりあえずスレ鯛みておちつけ

641 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:13:55 ]
CLispのビルドの問題なのでスレ違いじゃないと思ったのですが…



642 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:16:41 ]
つか、もし本当なら OS のバグ(つまりスレチ)じゃね?

643 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:22:38 ]
CLispならCommon Lispスレ行って聞いてみたらどう?
pc11.2ch.net/test/read.cgi/tech/1201402366/

644 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:29:25 ]
別にすれ違いだとは思わないよ。ただし、それにコメントができる人はほとんどいなさそう。

645 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:36:41 ]
>>644
>ただし、それにコメントができる人はほとんどいなさそう。
あら、そう。

646 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:39:10 ]
>>644
氏ね

647 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:40:37 ]
わかってるくせにwww

648 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:42:01 ]
OpenBSDのスレで聞けや、クズ

649 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:44:43 ]
いや、質問っていうよりは、報告したかったんじゃないのかなw

650 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:57:29 ]
言葉の使い方もシランガキが集まってきたな。


651 名前:デフォルトの名無しさん [2008/06/16(月) 23:58:43 ]
>>639
>readで読み込む部分の前に
>読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと
>EFAULTが起こります。

部分の前に
一度は少なくとも

はどういう意味でしょうか? 文章を読みこなせません。



652 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:18:00 ]
仮割り当て状態のページに I/O するとエラーになるというんだろ。
本当なら OpenBSD のバグなので、そちら方面で報告すべし。

653 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:37:10 ]
別にすれ違いだとは思わないよ。
第一、そんなことも知らないと見下されてるわけか。バカにされたもんだな。
そういうことを聞いてるんじゃないってことがなぜ伝わらないのか。
情報があるなら教えて欲しい、それだけだ。

654 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:54:56 ]
>>65
最初の3行は不要
なぜ馬鹿にされたのか、なぜ伝わらなかったのかを考えたほうがいい

655 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:55:27 ]
>>654>>653

656 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:20:29 ]
>>636
でもこんなんなる

(car (scheme:list 1 2 3))
mcar: expects argument of type <mutable-pair>; given (1 2 3)

(scheme:car (list 1 2 3))
car: expects argument of type <pair>; given {1 2 3}

657 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:18:35 ]
>>654
> なぜ馬鹿にされたのか、なぜ伝わらなかったのか
運悪くこのスレに馬鹿が集まっていたからですね。

658 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:12:40 ]
運の悪い奴って何やっても駄目だよな〜

659 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:56:49 ]
>>656
list と pair では型が違うと言ってるみたいだね。

660 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:12:29 ]
(scheme:car ((scheme:list 1 2 3))

とか

(car (list 1 2 3))

なら動くんだろ?

661 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:33:58 ]
ネタか・・・



662 名前:639 mailto:sage [2008/06/17(火) 17:55:27 ]
具体的にはspvw_memfile.cの1196-1198行目(clisp-2.45の場合)に
READ(&old_fsubr_tab,sizeof(fsubr_tab));
READ(&old_pseudofun_tab,sizeof(pseudofun_tab));
READ(&symbol_tab,sizeof(symbol_tab));
というコードがあるのですが、
3つ目のREADマクロ中のread(2)が失敗し、
i386ならEFAULTが、armならEACCESがerrnoにセットされます。
ところが3つ目のREADマクロの前に
{
int i;
for ( i = 0 ; i < sizeof(symbol_tab) ; i += 4000 /* i386の場合。armの場合は3999 */ )
((char *) &symbol_tab)[ i ] = '!'; /* '!'という値には意味はありません */
}
というコードを挿入すればread(2)は失敗しません。
i386なら4001以上、armなら4000以上のiの増分ではread(2)が失敗します。
symbol_tabというのはマクロで、実体はsymbol_tab_dataを指していますが
old_fsubr_tabとold_pseudofun_tabはbssセクションに置かれているのに対し
symbol_tab_dataはdataセクションに置かれているという違いがあります。

663 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:07:22 ]
>>657-658
運の悪い馬鹿は自己申告しなくて良し。

664 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:13:29 ]
>>663
お前という馬鹿がここにいるのは>>657-658の運のせいではないですよ^^

665 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:23:09 ]
>>664
常駐乙

666 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:46:40 ]
運の悪い奴は何やっても駄目、という言葉を実感しつつあるw

667 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:11:46 ]
適当な実感でものを判断する奴も全然駄目だけどねw

668 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:28:43 ]
「情報があるなら教えて欲しい、それだけ」ならじっくり待ってろよ、まったく。

669 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:31:29 ]
>>662
そこまで追ったのなら、馬鹿はほっといて、短い(CLISPに依存しない)再現プログラムを
作ってOpenBSDの人たちへ報告するのが良いと思う。

670 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:47:23 ]
>>662
その情報、ちゃんとOpenBSDの中の人たちに連絡したら感謝されると思うよ。

671 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:31:58 ]
>>656, >>660
ネタかと思ったけど、R6RSに慣れるまで大変ですねw
PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。
mutable(変更可能)なペアは別のデータ型として提供されてるようです。
たぶん>>656, >>660で言ってることがそれだと思います。
手持ちのプログラムを食わせてみたら同様の文句を言われましたw
当面、372のままで行きます orz



672 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:40:50 ]
ようわからんが、C→C++でconstの扱いが変わったような感じなのかな。

673 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:50:10 ]
C++/CLIにポインタが2種類あるような感じだな

674 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:56:59 ]
immutableなconsセルというと後藤英一氏のHLISPが元祖だろうな。

675 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:37:18 ]
>>PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。
これ、PLTのどっかに「どうなるかわかんないけど、取り合えずやってみるぽ」って感じの文章なかったっけ?
PLTさんお願いです、今回だけで止めてください m(_ _)m

676 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:47:56 ]
immutableにして何か利点はあるんですかね?
GPU対応とかconcurrent対応ぐらいしか思いつかない。う〜む。

677 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:00:52 ]
こうやって解決しないの?
(define cons mcons)
(define set-car! set-mcar!)
(define set-cdr! set-mcdr!)

678 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:15:13 ]
Schemeはペアはimmutableでも良いんじゃないかなあ。
そんなに破壊的操作してるもんかね。

679 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 03:27:38 ]
>>678
Streamを使えば破壊的操作を使うから多いと思う。

680 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 07:39:44 ]
>> 677
(define cons mcons)

define-values: cannot change constant identifier: cons

エラーになります orz

681 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:02:56 ]
>>680
マクロは?



682 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:21:59 ]
DrSchemeはネタの巣窟ですね
MzSchemeなら問題ないです

683 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:03:53 ]
>>675
これ?
blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html

684 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:35:55 ]
>>683
それだ!サンクス
で、結局やることになっちゃったんだな。4.0でこうなったってことは...
そりゃ自分で書いたコードなら直すのも簡単だけどね orz

685 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:26:10 ]
set-car!: name is not defined, not a parameter, and not a primitive name
set-mcar!: name is not defined, not a parameter, and not a primitive name

使えない orz

686 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:29:02 ]
>>681
これで一応動く(PrettyBigモードとか)。SICPの学習には不便しないだろう。
(ただしR6RSとは共存出来ない。)

(define-syntax cons
(syntax-rules ()
((_ a b) (mcons a b))))

(define-syntax set-car!
(syntax-rules ()
((_ a b) (set-mcar! a b))))

(define-syntax set-cdr!
(syntax-rules ()
((_ a b) (set-mcdr! a b))))

687 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:55:29 ]
;こんな感じ。
;pre.plt-scheme.org/plt/doc/reference/mpairs.html
(require scheme/mpair)

(define-syntax cons
(syntax-rules ()
((_ a b) (mcons a b))))

(define-syntax set-car!
(syntax-rules ()
((_ a b) (set-mcar! a b))))

(define-syntax set-cdr!
(syntax-rules ()
((_ a b) (set-mcdr! a b))))

(define-syntax list
(syntax-rules ()
((_ a ...) (mlist a ...))))

(define Qoo (list 3 4))
(set-car! Qoo '(5 6))
(set-cdr! Qoo '(7 8))
(display Qoo) ; => {(5 6) . (7 8)}

688 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:07:21 ]
>>687
サンクス!
でも、こんどは
(map cons lst1 lst2)
が大破しました... "orz"
それなりの混乱が予想されるのにこうなったって事は何か良い見返りがあるはずだよね...

「隊長!comp.lang.schemeのアナウンスからPLT方面に潜入して偵察を試みてみます。自分が帰ってこないときは英語が解読できなくて玉砕したと思ってください orz」

689 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:10:45 ]
(define Qoo (list ))
(mlist? Qoo) ; => #t
(display Qoo) ; => () なぜか{}にはならない。

690 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:13:11 ]
>>688
pre.plt-scheme.org/plt/doc/reference/mpairs.html
ココの関数はマクロで修正しないとダメポ。
mmapが orz

691 名前:688 mailto:sage [2008/06/18(水) 16:24:41 ]
隊長!自分は現在683より報告のあったBLOGに到着しました。
驚くことにcomp.lang.schemeのアナウンスにはそれらしい情報は例のBLOGにしかありませんでした。
さらに驚くことにBLOGに対するコメントは好意的なものばかりのようです。
もしかして、自分はバカなのでしょうか "orz"





692 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:31:12 ]
Schemeは「破壊的操作の時だけアホになります」って言ってるみたいだ…

cons
せぇっと!
car
りば〜すぅ!
せっとくだー!
eq?

みたいな。

693 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:33:42 ]
(define-syntax map
(syntax-rules ()
((_ a b ...) (mmap a b ...))))

(map display (list 1 2 3 4 5)) ; => 12345{#<void> #<void> #<void> #<void> #<void>}

あれ?うまくいかない?






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

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

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