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


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

Lisp Scheme Part21



1 名前:デフォルトの名無しさん [2008/04/04(金) 18:18:17 ]
□過去スレ□
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


232 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 06:20:53 ]
>>207
そうそう、和田先生が翻訳メモとして技術用語の翻訳対照表をつけてくれれば、
読みやすかったのに。

233 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 11:15:30 ]
schemeをC++プロジェクトに組み込みたいのですが、
組み込みやC++クラスのエクスポートが簡単にできる
ポータブルな処理系ってありますか?

234 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 12:10:18 ]
libgaucheとCで書いてextern "C"ってすればいいんじゃね
俺もほとんど知らない。教えてほしい

235 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:27:24 ]
Chickenはsyntax-caseが使えるんだけど
有理数がないのと多倍長数がないのが残念。
biglooもそうだったような気がするけど
Cにコンパイルする処理系はCの整数型、浮動小数型に縛られる物が多い。
Gambit-CはCコンパイルタイプには珍しく
多倍長数、有理数と正確数表現の複素数(これはGaucheにもない!)があるんだけど
SRFI周りが互換性の無い独自の実装なのが残念。
(たとえばSRFI-22の引数にスクリプトファイル名を含めない、文字列ポートを読み込むと空になる等)
>>233
組み込み系UnixライクOSでも動くとなればguileかScheme48でしょう。
Cでプログラムを書くのも容易だし
ソースに手を入れなくてもターゲットで動く。
但し前者は遅い上にR5RS準拠ではない。(R5RS手続きは網羅してるけど)
後者はR5RS準拠で完成度は高いけどやや重くてやや遅い。
処理系ソースに手を入れる事を厭わないのであればGaucheかGambit-C。
前者は軽くてそこそこ速い。後者はそこそこ軽くて(コンパイルすれば)かなり速い。
PLTScheme(MzScheme)がUnix系全般で動くようになれば最強っぽいんだけど
BoehmGCを移植しただけじゃ動かないのが×。
さらにコンパイルしなくても速いのにコンパイルしても(そんなに)速くならないのはご愛嬌。

236 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:16:12 ]
>>235
>複素数(これはGaucheにもない!)

あるっしょ

237 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:18:45 ]
正確数表現の複素数(これはGaucheにもない!)

238 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:52:35 ]
> (exact? (sqrt -1024))
#t

これはいいsqrt

239 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 16:03:30 ]
R5RS-6.2.3
sqrtのような潜在的に不正確な演算は、正確引数に適用されたとき、
可能ならばいつでも正確な答えを算出することが望ましい(が要求はされていない)。
なので処理系依存。

240 名前:225 mailto:sage [2008/04/15(火) 20:40:37 ]
>227
参考になった。ありがとう。



241 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:24:29 ]
>>225
Linuxだと簡単にバイナリ作れた。
winだとコンパイルも通らなかった orz
mingwin32嫌いだ!


242 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:35:56 ]
>241
あれ、出来なかったっけ?
ちょっと今MinGW環境壊しちゃったので手元で確認できないけど

243 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:40:20 ]
>>242
できたらgccのバージョンとかライブラリのバージョンさらしてください。

しょぼーん。

#共通環境はsbclが一番良いんじゃないかと思うようになっちゃったのでscheme嫌いになりそう


244 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:14:09 ]
>>243
Makefile.mingwを使うとchicken-config.hの作成に失敗する。
そこだけ手作業でやったらあとは普通にmakeが走ってる。
今ビルド中。っていうか本家に最新版のWindowsバイナリ置いて無いな。

245 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:30:12 ]
みんな苦労してでもWindowsdで使いたいんだな。
Windowsは偉大だな。


246 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:43:18 ]
自分が使いたいというより、より広く使われるものを作りたい、そういうものを作る
ために使いたい、という動機が大きいのでは?
趣味にしても、仕事にしても。

247 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:53:25 ]
>>228
ttp://scheme2006.cs.uchicago.edu/12-byrd.pdf

KANRENって「関連」みたいだけど中国語。
Chung-chieh Shan(單中杰)というハーバード出身でラトガース大学のAssistant Prof.の人とやった仕事。

248 名前:244 mailto:sage [2008/04/16(水) 00:55:30 ]
よくみたらMakefile.mingw-msysってのがあったな。
こっちでやれば一発でいけたのかも。
まぁ、gcc3.4.5で普通にコンパイルはできたよ。

249 名前:242 mailto:sage [2008/04/16(水) 02:07:59 ]
>248
漏れもgcc4.3.0 & Makefile.mingw-msysでやってみたけど問題なさそう

250 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 02:18:42 ]
>>246
処理系はとりあえずUNIX系の上でつくられて、
そういう尊い方々がWinに移植なさるのですね。
感動しました。
漏れはWinでないと使う気にならないから使ってるだけだが、
いつかそうなりたいね。



251 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 02:23:10 ]
とりあえずUNIX上に作られるのはそのほうが楽だからだな。
WindowsのAPIってなんか例外事項が多くてごちゃごちゃしてる感じ。

252 名前:231 mailto:sage [2008/04/16(水) 03:00:47 ]
>>248
俺はgcc3.4.2+msysでうまくいったみたい

253 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 12:42:00 ]
>簡単に実行形式ファイルが作れる
という観点では
エンドユーザが自分でMinGWを入れるという前提はおかしい

普通の人はVisual C++とMzSchemeを使えばいい

254 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 13:28:11 ]
>>253
「エンドユーザ」はMinGWを入れる必要は無いだろ

255 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 13:47:15 ]
じゃあ「簡単に実行ファイルを作りたいWindowsユーザ」に訂正

256 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 13:54:12 ]
簡単だけど話題としてはスレ違いだね。

257 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:26:31 ]
簡単だから得意げに説明するのが恥ずかしい気がするけど、注意点を

・ソースファイルと同じ名前のモジュールで包む
 たとえば hello.scm なら
(module hello mzscheme
 (display "Hello, world!")
 (newline))
・--exeオプション
 たとえば mzc --exe hello hello.scm
・bccに対応していると書いてあるが無償版のbccでは失敗するみたい

258 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 19:15:29 ]
>>235
とりあえず、いろいろ試してみました。

guile)
・GPLライセンス
・試してないがVCでコンパイルできなさそう

Scheme48)
・VCでもコンパイル可能
・ただ、実行の際に〜.imageファイルが必要なのと、
 その作成にScheme48インストールディレクトリのフルパスが必要・・・
・(美学の問題だが)関数名がおかしいのと、コンパイル時に
 「○○関数は未定義です」「○○は初期化されていません」みたいな警告が普通に出てくる。

chiken)
・VCでもコンパイル可能のはず。自分には無理だった。
・(pcreを使っているので多分)正規表現がマルチバイトをサポートしていない。

Gauche)
・コアはVCでコンパイル可能だが、拡張ライブラリが全滅
・クラス登録機構がGNUのリンカの実装に依存している。VCだと拡張ライブラリを作ること自体が難しそう。
・基本的にposixべったり
・デフォルトで日本語が使える。ドキュメントも日本語

259 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 19:16:14 ]
Gambit-C)
・VCでコンパイル可能
・自動生成されたソースが長すぎるため、IntelliSenseの更新に長大な時間がかかる。たまに開発環境自体が落ちる
・(サイズが)すごく大きいです・・・

総括)
こうやって並べてみると、日本語が使えるGaucheか、Gambit-Cが問題が少なさそうですね。
自分は多分、gaucheをstatic libraryで使うことにすると思います。
個人的にはluaのようにもっと手軽に組み込める処理系があると嬉しいのですが、文句ばっかり言ってもしょうがないですよね。
>>235さん、ライブラリの紹介どうもありがとうございました。

260 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:36:34 ]
Windowsで動かしたいというのは判るが、VCでコンパイルしたいという理由がよくわらかん。
MinGWじゃ駄目なのかい。



261 名前:デフォルトの名無しさん [2008/04/16(水) 21:42:41 ]
IntelliSenseが使いたいのか
頭のとんがった上司がいるのか
その両方か

262 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:09:15 ]
>>259
Gauche-win32-0.8.13.exeじゃだめなの?


263 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:16:20 ]
exeがつくれないとプログラムをしている気にならないんじゃないかな?
Windowsしか知らなかったころはexeをつくれて一人前の開発環境というイメージだった。

264 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:21:32 ]
>>263
自分で使うコードなら別にexeにする必要ないんだけど、ちょいと配布したりするのに実行環境必要とか言うと困るからじゃないの?

どんなプログラムだかしらないけど。


265 名前:233 mailto:sage [2008/04/16(水) 22:28:13 ]
>>260
理由1、VCの便利な機能が使いたい
理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
というのが本音です。

>>261
> IntelliSenseが使いたいのか
どちらかというとこっちです。
でも後者の方が面白いので、できればこっちを強弁したいですねw

>>262
すみません、書いてませんでしたが自分は>>233です。
C++に組み込むので、別途インストールというのはちょっと考えられないのです。

266 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:33:41 ]
>>260
MinGWはMSYSが要るのか要らないのかはっきりしてほしいw

267 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:39:02 ]
POSIX べったりという表現が面白かった
確かに逆から見たらそう感じても不思議じゃないね

268 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:47:21 ]
>>266
実行だけなら要らない。ランタイムのDLLさえも要らない場合が多い。
最近のVCはRuntime(もちろん自由に再配布できるが)を入れないといけないことが多い。
VCじゃなきゃ嫌んの人はMinGWをよく知らないだけではないかと思う。

269 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:51:25 ]
Schemeは実はC及びC++(のスタックフレーム)とは相性が悪い。
ファーストクラスの継続があるため
関数からreturnする時に
単純にスタックフレームを開放できない。
また、末尾呼び出しの最適化は
C及びC++では行えない。
(だからSchemeの場合はバイトコードインタプリタの方が
効率が良かったりする。)
これらの理由により、ネイティヴコードをポータブルに吐く方法がない為
GCC用のソースは手を入れない限り他の処理系でコンパイルできない場合が多い。

270 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:58:01 ]
>>265
> 理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
> 仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
君がScheme処理系を書けば良いのでは?




271 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 23:43:31 ]
ちなみにschemeは仕様がすっきりしているだけで、
実行環境はさほど小さくない。処理系もけっこう大きい。


272 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 00:18:53 ]
書けねえよ

273 名前:233 mailto:sage [2008/04/17(木) 00:22:42 ]
>>268
自分のプログラムでは外部ランタイムは無用です。
あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。

>>269
・ネイティブスタックを使わず、自前のスタックかメモリを確保すれば
 継続でもコルーチンでもポータブルに作れます(作れるはずです)
・バイトコードを採用すれば、処理系のコードは自然とポータブルになります
・ネイティブコードをポータブルに吐く方法なんて自分は一つも知りません

って、あまり面白くないツッコミですみません。
あと、schemeがポータブルに実装できないわけではですよ。
実際、明らかにwindowsのようなマイナーな環境(?)を無視した作りのgaucheでも、
コア部分はコンパイルできるわけですし。

>>270
今までは、あまり実用にならなそうなマイ言語を作っている人を、
内心バカにしたりもしていたのですが(すみません)
schemeでも他の言語でも、自作の処理系が一つあると意外なところで使えたりするのかもしれませんね。
scheme作るのも面白そうなので、時間があれば是非やってみたいです。

274 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 00:27:05 ]
スキルないのが丸分かりの自己紹介ありがとう。

275 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 00:44:29 ]
漏れも学生時代はMacではHyperCardを必要とするスタックは軟弱物。Pascal or Cで実行形式をつくるのがカコイイだと思っていたし、
Win32でもランタイムを必要とするVBを見下し、CをつかってもMSVCRTの依存すら排除しようとしていた経験のある俺には233の気持がわかる気がする。

276 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 01:44:38 ]
ゲーム作るときはマシン語モニタをBASICで自作することから始める時代の話だな。
そんなMSXが許されるのは小学生までだよねー

277 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 01:49:42 ]
>>273
GaucheはWindowsを無視はしてないよ。
多少なりともVC++を意識した変更が入っていたはず。

ttp://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aWindows%2fVC%2b%2b

を参照するといいと思う。マンパワーが足りないから進捗が遅いだけで。

成果をフィードバックしてくれるなら、向こうにとっても渡りに船だろうし、
本気でやる気があるなら、WiLiKiに書き込んでみればいいんじゃない?
上手く協力できれば、双方にとって良い結果になると思うけど。

278 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 02:12:31 ]
スキームの質問

今、手元にThe Little Schemerがあるんだけど
この本に書いてある例題は全部
Dr.schemeで実行できるの?

279 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 03:33:26 ]
1行で全部の処理をするんでなくて、
まずcdrする
次にcarする、
最後にcdrする、
と3段階に分けて処理をしたいんだけど、
どうすればいいの?
BASICみたいに
a=(a,b,c)
みたいにリストを変数に代入して、
ってできるの?

280 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 04:21:40 ]
(let* ((a '(a b c))
(a (cdr a))
(a (car a))
(a (cdr a)))
a)



281 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 04:27:41 ]
(progn
(setq a '(a b c))
(setq a (cdr a))
(setq a (car a))
(setq a (cdr a))
)
Lispならこんなのでいいんでないの

282 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 06:53:06 ]
CL全然知らないんだけど手続きぽく書きやすいのかな。

283 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:11:22 ]
端っこに括弧がいるから慣れない人は書きにくいと思う。
Lisp脳が育つと括弧を空気のように感じるようになる。

284 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:41:53 ]
いや、Schemeにくらべてってこと。

285 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:43:50 ]
再帰じゃなくloop使うと手続き型っぽくなるよ。(カッコだらけだけど)

286 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 08:00:11 ]
>>273
> あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。
いずれEmacs+Schemeに慣れればVisual Studioには戻りたくなくなる。
そうでなければそもそもSchemeには縁がない。

287 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 08:21:30 ]
>>284
SICPやSchemerシリーズやっている人は、
schemeが手続き型っぽく書けないと思い込んでいる人が多い。
ただそれらのテキストが関数型っぽく書いているというだけなのに。
Common Lispとさほど変わらない。

288 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 08:57:25 ]
>>287
本当?かなり違うと思ってた。

例外とかgotoとかを手続型と
さほどかわらないように書くにはどうするの?


289 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 09:32:52 ]
手続き型っぽいのがgoto?

290 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 09:34:13 ]
つ loopマクロ



291 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 09:43:41 ]
つ 継続

292 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:06:59 ]
; f(g(h(x)))
(apply (fcompose f g x) x)
みたいなものができる筈なんで>>279の処理も
(fcompose-and-apply cdr car cdr a)
みたいにできるfcompose-and-apply(仮)が書ける気がせんでもない



293 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:08:35 ]
tagbody は?

294 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:13:13 ]
emacs lispならconditon-case(try..catch)とかsignall, error(throw)とか
unwind-protect(finally)とかあるから殆んど手続き型と同じように書けるよ
R6RSにも似たようなものがあるはず

295 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 11:43:51 ]
>>288
例外はr6rsに入ってただろ。手軽にやりたいなら継続呼べばいいし。
goto相当のジャンプも継続が使えるけど、
継続はラベルじゃなくてオブジェクトなので使い勝手をgotoみたいにしたいなら
自前でラップしなきゃ駄目かもな。

296 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 13:01:50 ]
S式でいいならマクロでなんでもできる。CLならCインタープリタの実装まであるくらいだ。

297 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 14:51:41 ]
Google Apps APIs をlispから使う方法ないのでしょうか?

298 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 17:02:27 ]
>>297
使えよ

299 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 17:08:01 ]
ないならnilを、あるなら使い方を返していただきたいのですが。

300 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 17:32:41 ]
>>299
(values nil
"ttp://www.cliki.net/web%20API"
"Clikiにはズバリはないみたいだけど、
cl-ajaxとかでできるのかな。"
"よくわからない。")



301 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:12:46 ]
>>247
d。miniKANRENは徐々に進化しているようでした。
leanTAP⇒KANREN⇒miniKANREN⇒alphaKANREN
ttp://www.cs.indiana.edu/~webyrd/alphamk/alphamk.pdf
ttp://kanren.sourceforge.net/

ParentheCというパーサー(c⇒scheme)を見つけました。
パターンマッチはolegのものを流用してます。
ttp://www.cs.indiana.edu/classes/b521/newpc/ParentheC.pdf
ttp://www.cs.indiana.edu/classes/b521/notes.html

Prologもどきと軽く思ってたけどReasoned Schemerって意外に深いのかな。
型推論のHindley-Milner type inferenceとかOCAMLみたいw

302 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:27:16 ]
CPSによるパターンマッチのマクロ by Oleg Kiselyov.
ttp://www.cs.indiana.edu/l/www/classes/b521/pmatch.pdf

303 名前:277 mailto:sage [2008/04/17(木) 23:07:24 ]
>>233の人ー、WiLiKiで、VC++の項目とか、
Windows向けインストーラの話とか、
色々更新されたから行っといでー。

釣りじゃないなら、話し合う絶好の機会だよー。

304 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:33:37 ]
>>286
schemeの処理系を書く環境と
schemeを書く環境はちょっと違うと思うぞ。

305 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:35:06 ]
>>304
SchemeでSchemeを書けばいいジャマイカ

306 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:42:20 ]
いまおれいいこといった
と思ってるに違いない
空気読めない奴の発言は反吐が出る

307 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:49:17 ]
>>306
何でそんな事でいきなりヒートアップするんだよ。

まあ、元の話題はC++にSchemeを組み込みたい、って話だったから、
>>286のレスが明後日の方向を向いてるとは、俺も思うけどさ。

308 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:21:32 ]
>>307
きっと胃が悪いんだよ<反吐が出る

309 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:53:51 ]
SchemeでSchemeの処理系を書いてParentheCでCにポートすればC++にSchemeを組み込めるな。
Cで書かれたTinySchemeをマージするほうが簡単かもしれないがw

310 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:59:13 ]
SchemeでSchemeの処理系を書くならLisp in Small Piecesのサポートページに色々情報がある。
ttp://pagesperso-systeme.lip6.fr/Christian.Queinnec/WWW/LiSP.html



311 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:12:59 ]
なんか知らんが1人イラついてる人が居るな。
本当に自分の方がレベルが高いなら、
別に同じレベルと思われても構わないという態度で
淡々としてれば良いのさ。

あるいはそんなものスルーして自分の興味のある別の、
レベルの高い話を振ればいいよ。

312 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:15:14 ]
(eval (read))ですね、わかります

313 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:16:33 ]
>>278
本の中に動かない例があるけどw
それ以外は全部動くよ。当然だけど。


DrSchemeのライブラリって面白いのが結構あるなぁ
ttp://planet.plt-scheme.org/

HtDPやEOPLだけじゃなくSICPやSimplyのためのpltがちゃんとある。
でもLittle用はない。なくても動くから。

314 名前:sage [2008/04/18(金) 11:25:53 ]
MOP レシピ集みたいなページはありませんか?

315 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 12:00:39 ]
XML-MOPのコードはどうよ?

316 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:50:13 ]
ソケット関係で挫折しそうなんだけど、苦労するといいことあるのかな
同じ内容のpythonのプログラムは動くこと確認したんだけど

317 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:04:18 ]
仕事じゃないなら好きにすればいい。

318 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:36:08 ]
>>316
pythonでやれば?

319 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:40:56 ]
www.cs.indiana.edu/classes/c311/pmatch.scm
ここのpmatchを、define-macroで書き直すとどうなるでしょうか。
syntax-rules内の'...'の展開のされ方がよく判らんのです。
1つのパターン内に'...'が複数使われているのがあって、
これは残りの同一のパターンにマッチするという事なんでしょうか。

例えばこの部分とか
((_ (rator rand ...) cs ...)
(let ((v (rator rand ...)))
(pmatch v cs ...)))


320 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:53:38 ]
それぞれに(別々に)マッチするって感じだね。
これだから衛生的なマクロは嫌いなのだ。



321 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:54:12 ]
質問が判りにくいですね。つまり上のrandの後の ...と、
csの後の ... の中身は違っててもいいのかどうか?
ってことです。
'...'はその文脈の残り((car . cdr)のcdr)という意味しかない
と考えてよいのでしょうか?

322 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:54:44 ]
>>320
やはりそうですか。
だとするとまぎらわしいですね。

323 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 02:00:14 ]
あと1つ確認したいのですが、>>319の意味を変えずに
((_ (rator rand . rest1) cs . rest2)
(let ((v (rator rand . rest1)))
(pmatch v cs . rest2)))
こういう風に書き直す事は可能でしょうか?
リストじゃないからできないとか昔どこかで見たような気がするのですが。


324 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 02:21:56 ]
rand ... の部分は0個でもマッチする
rand . rest1 と書くと1個以上になるから意味が変わってしまう

325 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 02:30:39 ]
そうだったんか…
キモイなそれ

326 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 02:53:15 ]
>>324
つまり書き直すなら
((_ (rator . rand) . cs)
(let ((v (rator . rand)))
(pmatch v . cs)))
という事でしょうか?

327 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 03:00:02 ]
そうだけど実際に使って確認するのが一番いいね

(define-syntax hoge
(syntax-rules ()
((_ x ...) (list x ... x ...))))
デフォルトで ,@ がついてるようなイメージ

(defmacro hoge (&rest x)
`(list ,@x ,@x))

328 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 03:15:54 ]
((_ ((symbol value) ...) . body)
((lambda (symbol ...) . body) (+ value 1) ...))

とか、すごい展開をするんだよね、 ... って。

329 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:00:44 ]
Commom LISPの方はSchemeのそういうコードを移植したい時
どうしてます?defmacroに変換するようなのないかな。

330 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 13:00:59 ]
これですね
Scheme Macros for Common Lisp
www.ccs.neu.edu/home/dorai/mbe/mbe-lsp.html



331 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:50:21 ]
TinyScheme
ttp://tinyscheme.sourceforge.net/

TinyScheme Extensions
ttp://heras-gilsanz.com/manuel/tsx.html

OOPS Tiny Scheme Extension
ttp://aladdin.sourceforge.net/oops.php

TinyScheme for Zaurus
ttp://www.alphageeksinc.com/tinyscheme/

332 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:53:44 ]
>>309
ParentheCってlambdaすら処理できないみたいだよ。
これでCにポートしろなんて詐欺もいいとこ。






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

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

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