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


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

【入門】Common Lisp その3【質問よろず】



1 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:41:07 ]
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

ま、ゆっくりたりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

(list
(url pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2))


411 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 16:32:48 ]
406はなかなか良い筋行ってんじゃネーノ?
karetta.jp/book-node/gauche-hacks/023107

412 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 18:13:22 ]
(a b c)
という任意の長さのListがあげられたとき
このすべての組み合わせをリストとして出力する
(a b c ab ac ba bc ca cb)
このようなプログラムって皆さんどうやって書きます?

413 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 20:14:40 ]
>>411
自演乙

414 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 20:17:27 ]
そんなもの書かない

415 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 22:50:36 ]
そんなものが書きたくなったら全体の設計を見直すかな

416 名前:デフォルトの名無しさん [2007/08/16(木) 00:30:55 ]
AutoLISPってどうなの?

417 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 02:18:55 ]
どうもしない

418 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 02:21:21 ]
>>412
「すべての組み合わせ」の意味が不明確。
abc とか cba とかが入らない理由は?

419 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 02:34:39 ]
もういいじゃん



420 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 07:52:33 ]
Lisp処理系ムズすぎ
適当に構造体でリスト作って、
S式パーサ作って、
関数名で条件分岐してリストのメンバをいじくれば良いと思ってたのに

421 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 09:35:35 ]
そんな感じで出来ちゃうと思うけどなぁ。
もちろん「優れた処理系」を作るのは(他の言語と同じく)難しいし、
「Common Lispの処理系」を個人で作るのはちょいと無謀だけれども、
この界隈の人間がよくやる「楽しく作るマイLisp処理系」程度なら・・・。
クロージャで少々頭ひねるくらいでは。

422 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 09:41:49 ]
>>420
ここら辺参考にならないかな

L2Lisp in Ruby(インタープリタ)
ttp://codezine.jp/a/article/aid/1492.aspx

JavaScriptでつくるSchemeインタプリタの基礎の基礎(lisp, js, webdev, webapp)
ttp://codezine.jp/a/article/aid/739.aspx

Javaで作るオリジナル言語:ITpro
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060922/248738/

423 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:04:02 ]
>>420
そんなに難しいかい?
8ビットマシンの頃でも基本の処理系はポイポイ作れた記憶があるんだけど。
実行効率とか下段をVMでとかにすると結構しんどいかもしれないけが俺Lispならそんなに難しいものじゃ無いはずなんだけど。

まさかCommonLisp全部みたいな話とか継続入れたいとか言うスタック操作がマンドクサイこと言うと別かもしれんが。


424 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:03:56 ]
>>421,422,423
www.jsk.t.u-tokyo.ac.jp/~inaba/soft4/soft4-xlisp/soft4-xlisp.html
ここ読んでるんですけれど、即死しそうです
JAVAとかJavaScriptとかRubyで作ると比較的簡単なのかなぁ


425 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:58:15 ]
ttp://www.okisoft.co.jp/esc/go.html
俺はここ見ながらC++で作った。
Javaで説明されてるけど、JavaからC++への脳内翻訳はまぁ、それほど難しくないし。

426 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:56:36 ]
>>424
それで楽になるのはGCだけじゃないかと思う。


427 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 22:05:53 ]
俺 Lisp ネタは本スレで。一応ここは Common Lisp 入門スレなので。

俺 Lisp ってーのはよ、一週間もまじめに取り組めばできちゃう。
で、 99% はやったーできたーの後に「Lisp をものにしたぞ」と勘違いしちゃう。
そこはスタート地点だという事を心してほしい。ほんとに。

428 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 22:22:23 ]
CLTL読んでるけどでかい、でかすぎる。

でも楽しい。


429 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 22:33:35 ]
仕様なしで実装だけあるほうが良いという連中が信じられない。
現行バージョンとかそんな殺那的な基準でいいのか……



430 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 22:55:46 ]
>>429
少なくとも入門スレでは、言語の仕様が先か実装が先かなどというのは全く本質的な問題ではないと思うが。

431 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 23:16:39 ]
先とか後とかじゃなくて有無の話ね。


432 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 23:50:55 ]
>>428
てお?

433 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 01:00:57 ]
このスレでCLTLって言ったらCommon Lisp The Language ,Guy L. Steele Jr.じゃないの?


434 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 11:10:27 ]
>>428
仕様書(?)の癖に妙に饒舌なGLS節がたまらんよねw

435 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 01:28:40 ]
Practical Common Lisp 155ページなのですが、COPY-TREEで((1 2) (3 4) (5 6))を
複製したものとオリジナルが共通で参照するオブジェクトが数値の5,6とシンボルNILってのは
何故ですか?1,2,3,4と5,6の違いが判らないので教えてください

436 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 01:12:49 ]
>>435
それ、ここかLisp Schemeスレかで以前俺が話題にした気がする。
そんときは確かめてくれた人がいて著者の勘違いって話だったと思う。
過去ログ見て。

437 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 22:19:43 ]
どう勘違いしたんだ

438 名前:435 mailto:sage [2007/08/25(土) 00:57:24 ]
Peter Seibel本人にメールしてみました。
「混乱させてスマン、第3刷では直っているハズだから」とのことです。

439 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 13:02:07 ]
俺そういうメールに返信するバイトしてた。



440 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 13:21:19 ]
俺はメールしたと偽るバイトしてた。

441 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:57:52 ]
Emacs Lispでいう(string-to-int)ってCLispにないの?

442 名前:デフォルトの名無しさん [2007/08/29(水) 14:14:20 ]
グハラムのANSI Common Lispを読んでいます
ループを再帰で書くサンプルが出てくるのですが
ループ数が多くなるとスタックがえらく積み上がっていくんじゃないか、
だとしたらループの実現としてはあまりいい方法ではないのではないかと
思うのですが、どうなんでしょう?
あくまで「こういう書き方もできるよ」という例なのでしょうか?

443 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:28:08 ]
>>442
ほとんど末尾再帰だろ
末尾再帰をループに展開できないコンパイラはぶっ壊れてる.

444 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 15:15:52 ]
>>441
parse-integer


445 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 19:44:33 ]
>>442
> グハラム
ちょっと入れ替えただけで急にイスラムな感じになるな。

446 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 01:22:51 ]
ではclispはぶっ壊れてると・・・

447 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:07:22 ]
コンパイルすれば末尾再帰をループ化する>CLISP

448 名前:442 mailto:sage [2007/08/30(木) 02:11:41 ]
レスありがとうございました
末尾再帰というものだったら問題ないんですね
少し気になったのですが
Lisp界ではよくあることなんですね

449 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:30:23 ]
>>447
>>273-276



450 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:33:05 ]
実際末尾再帰スタイルで書くつもりならSchemeで書いたほうがいい。
Common Lispのはあくまでも最適化オプションでしかないから過信できない。

451 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 04:48:19 ]
Schemeは式の評価順序が決まっていないのが嫌いなんだよね。(副作用させんなって言うのは無しね)


452 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 07:46:50 ]
>>450 Scheme はコンパイル関連機能があくまでもオプションでしかないから過信できません

453 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 08:37:34 ]
ていうか「過信」って言葉がそもそも、実際の在りよう以上のことを信じることであって、
Common LispだろうがSchemeだろうが隣のおばちゃんだろうが、過信しちゃいけないのは同じ。

454 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 09:42:19 ]
「xを過信してはいけない」という言い回しは、単純に過信を戒めてる訳じゃなくて、
「お前はxを過信している」とか「xは過信されがちだ」みたいな意味が入ってる。

455 名前:442 mailto:sage [2007/08/30(木) 11:59:10 ]
やっぱり使わない方がいいんですね

456 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:08:19 ]
>>455
時と場合による.

457 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:14:39 ]
>>455
lispのような抽象化の高いプログラミングで再帰
を使おうとしないとはかなり不幸だろう.

10年前ならいざ知らず,今はコンピュータのメモリもCPU性能も
有り余るほどある.その中で,ある程度効率を犠牲にしてでも,
抽象化のはしごを上ってわかりやすいアルゴリズムを記述できる
のであればそっちを優先すべきでは?

458 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:06:02 ]
>>455
まあ真面目に入門書の一冊も読むべきだね。
基本がぜんぜんなってない感じ。

459 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:24:25 ]
>>455
白黒はっきりさせたい性格なのだろうが、世の中そんなに単純には出来ていないのだ。



460 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:38:57 ]
>>455
ちなみに組込み屋の人ですか?

461 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 02:00:35 ]
455の人気が凄いw

462 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 03:16:20 ]
destructuring-bindの素敵な訳語を募集。
野田さんトコだと構造化代入ってなってるけど、`de-'の雰囲気がどこかに
消し飛んでるし`bind'って代入なのか?って気がしないでもない。
漏れの頭では脱構造束縛とか構造分解束縛とかしか思い浮かばないんだが、
やっぱり気持ち悪い?

OnLisp翻訳の偉業にケチをつけるつもりはまったくないのでそこんとこだけ
誤解のないよう。英語のまま何気なく読んでる文章をきちんとした
日本語に書き出そうとするのがこんなに面倒だとは思わなかった。

463 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 03:27:09 ]
`構造'意識しなくてもいいか。
分解束縛とか分配束縛とかで意味通じるかな。

連投で独り言スマン。

464 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 05:56:15 ]
独り言気持ち悪い

465 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 07:30:18 ]
practical-scheme.net/wiliki/wiliki.cgi?OnLispJa
>p.96 ほか (leque, 2007/04/14 21:40:45 PDT)
>「destructuring」の訳語を「分配」とすることにすこし違和感があります。
>destructuring-bind の lambda-list が単純なリストである場合はよいのですが、
>入れ子のリストになっているような場合も考えると、「分解」「脱構造化」といったような、
>構造(structure)を意識したような訳語の方がしっくり来る気がします。
>
>* これはGuy Steele本の和訳で採用されていた訳語に統一した結果です.
>ところでせっかく仔細にコメントをいただいているのに,
>単純なものしか目を通しておらず,申し訳ありません.
>いずれじっくり検討させていただきます.(野田)

466 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 09:37:39 ]
「パターンマッチ」でいいんじゃないかという気が

467 名前:flatline ◆r6EONKKhcc mailto:sage [2007/08/31(金) 10:00:52 ]
>>462
ちなみに「構造化代入」という訳はあまり深く考えてつけたものではありません.

>>466
複数のパターンから選べないとパターンマッチとは言えないような気がします.

468 名前:466 mailto:sage [2007/08/31(金) 10:30:40 ]
そうですか?なんでだろう。

469 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 11:29:00 ]
俺もパターンマッチって感じがする。
マッチに失敗すればエラーになるし。



470 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 18:30:16 ]
>>462
気持ちはわかるが、destructuring-bind という固有のスペシャルフォーム名に
とらわれすぎの気がする。
まさか「なでしこ」みたいな日本語CLをつくろうって話じゃないんでしょ。
同種の概念に対する一般的なタームとしては分割代入とかじゃない?

471 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 21:09:55 ]
>>468
複数の候補からマッチするものを見つけるのがマッチだと思う

472 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 21:11:04 ]
>>462
deの雰囲気を残すべきだとは思わない。逐語訳にこだわりすぎでは?

473 名前:466 mailto:sage [2007/08/31(金) 22:52:58 ]
>>471
それだけがマッチングとは思えないなあ。
正規表現がマッチするしないって言い方があるけど、
あれは何かを複数の候補から見つけるわけじゃないでしょう?

474 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 23:51:54 ]
>>473
「マッチする」という言い方自体が、そもそも「マッチしない」場合の存在を前提にしているのでは?
そういう意味では正規表現も多くの場合は複数の候補から見つける操作だと思う。

475 名前:462 mailto:sage [2007/09/01(土) 02:42:29 ]
>>470
日本語CL作ろうなんて気は毛頭ありません。
でも見る人が見れば何やってんかバレバレなんですけどね。

>>472
逐語訳にこだわってるつもりはないんですが、Lisp/Schemeのコンテキストで
代入と束縛を同列に扱うのは違和感があると感じるのは僕だけかなぁ。
日本語ではどう表現するのが普通だ、みたいな一般的に受け入れられている
のはないんですかね。大体原著で読むのでその辺の感覚がわからんです。

476 名前:flatline ◆r6EONKKhcc mailto:sage [2007/09/02(日) 16:53:41 ]
私はむしろ >>473 に賛成ですが,
>>467 の真意はむしろ
 「destructuring-bindを「パターンマッチ」と言ってしまうと,
 Ocaml, Haskellの方面から
 『複数の候補から選ぶこともできないのにそんな大層な呼び名をするとは!』と
 文句が来そうなので自粛した」
みたいな感じですかね.

つーかその後 §18.4で
「パターンマッチングは構造化代入(書籍では分配)の一般化だ」と続いているので...

束縛と代入については,レキシカル・スコープの何たるかを分かってコードが書ける人には
言葉の問題に過ぎず,大した違いではないと思います.

477 名前:flatline ◆r6EONKKhcc mailto:sage [2007/09/02(日) 17:02:45 ]
そうそう,On Lispの第3刷が9月半ばに出るそうです.
(読者の方々からいただいた修正意見を反映してあります)

「売れた数だけLispの存在感が拡大している」と(粗っぽく)見積もるとすると
これは訳者として嬉しいことです.
実際,webをさ迷っていると,これまでLispに縁のなかった人もけっこう買ってくれているようですし.
(そういう人には終盤はテクニカルに高度過ぎると思いますが,
「Lisp Hackerのスタイル」的なものは伝わることを期待)

478 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 17:26:50 ]
>>477
Lispのなんたるかってあたりがかかれた本って古い書籍が多くてさらに尽く絶版だったりするから
ものすごくありがたかったんじゃなかろうかとおもう(対象想定読者層にとって)

まじめな話共立出版のbit別冊が売ってたら読むかもしれない層って多いと思うんだけどなぁ。

479 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 17:28:49 ]
>> 476
> 束縛と代入については,レキシカル・スコープの何たるかを分かってコードが書ける人には
> 言葉の問題に過ぎず,大した違いではないと思います.

レキシカルスコープの何たるかをわかってコードを書くに至っていない
入門レベルの読者が読むことを想定した場合は束縛と代入は使い分けるべき、でFA?



480 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 22:46:13 ]
レキシカルスコープの何たるかをわかってコードを書くに至っていない人には
縁のない話題だと思うが

481 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 23:52:25 ]
あんま流れと関係ないけど束縛だの代入だのより、スコープとエクステントの概念を叩き込むべき。
アセンブラと C を覚えて万能感に浸っていたかけだしのヘタレだった俺は、これを叩き込んでくれた師匠に本当に感謝している。

副作用だの破壊的操作だのは結局物理レベルではレジスタの値変更してんだからよー
キタナイ現実を見ないのが美しいってのは Schemer にゃーお似合いだが Lisper はそんな風になるべきではない。

つうか訳語は分配でいいような気がするけど…別に実際にバラすわけじゃなくて、元の構造の部分を変数に束縛するだけだし…

482 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:18:14 ]
>>481 は今でもなにもわかってない事がわかった

483 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 05:50:47 ]
ああ、それは二十歳くらいの頃によくかかる病気ですね。
自分の人間観察眼に根拠の無い自信持っちゃって、あちこちで誰かの言葉に触れては
「こいつはわかってない、俺にはそれがわかる」って小鼻をひくひくさせてしまうんです。
あと5年もすれば、思い出すだけで死にたくなる過去になりますよ。

484 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 06:52:52 ]
わかってるやつがなんでにちゃんなんかやってんだろ

485 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 07:23:28 ]
おまえのどうるいだけがにちゃんやってるわけじゃないからだよ

486 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 07:34:54 ]
>>485
君は集合の基礎を覚えた方がいい
ベン図とか

487 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:05:32 ]
まずは君がコミュニケーションの基礎を学ばないことには

488 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 10:14:22 ]
わかってない奴すべてを含む集合は果たして平穏無事であるか

489 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 12:58:41 ]
あるときっと。信じれば夢はきっと叶うさ。



490 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 15:12:26 ]
2ch で遊ぶのはいい加減にして、早く誰も読まない論文を書く作業に戻るんだ。

491 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:19:32 ]
論文を書くためにはネタを仕込まないとね。
それはともかく、Common Lispで書いたソフトをコンパイルしておいて
他の.exeから呼び出して実行するなんて使い方はできるものだろうか?
分かる人が居たら教えてくれ。

既存のGUIと通信を行うモジュールを流用して計算エンジン部分だけLispで作ってみたい。
あ、プラットフォームはその既存のGUIの関係でWindowsです。

492 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:27:22 ]
誰も読まない論文
ってのはなかなか哀愁を誘う良い言い回しであるなw

493 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:45:25 ]
ライトオンリー

494 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:25:39 ]
Lispって科学技術計算に向いてる?

495 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:26:44 ]
愛を育てるのには向いてる

496 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:30:54 ]
講座初日に眼鏡を忘れ、倫理学と論理学の教室を読み間違えた挙げ句、出席を取らない講師に突然愛を語られたみたいなものだろうか?>>495


497 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:36:39 ]
>>491
できる。教えてもらわないと出来ないような人には難しいかもしれないが。

498 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:17:54 ]
は?

499 名前:495 mailto:sage [2007/09/03(月) 20:21:37 ]
愛と AI をかけました………………



500 名前:デフォルトの名無しさん mailto:491 [2007/09/03(月) 21:53:12 ]
>497 Thanx!
可能だと言う事がハッキリするだけでもやる気が出るよ。
何しろこっちはLispに関して全くの素人なので
これから勉強しながら方法を探すよ。

ところでそういう事に便利そうな商用Lisp
(Allegro Common Lispなど)を使えとか
言うんじゃないよね。あれ、高いからな。

自分ではKCLを使えばコンパイラが
Cのソースを吐いてくれるそうなので、
そっちをいじれば何とかなるかなと思っている。

501 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:16:45 ]
ACL は Express エディションならフリー。
ヒープ制限があるので大規模な処理は無理だが。

KCL は GNU に寄贈されてメンテナがかわりにかわって GCL (GNU Common Lisp)という
名前になってる。派生した ECL ってものある。

つうかソケットで通信とかなら C のソースがうんぬんは不要だと思うけど…。

502 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:33:05 ]
Lispworksを日本で購入できる場所ないのかな?


503 名前:500 mailto:sage [2007/09/03(月) 22:47:13 ]
>501
ACLのExpress editionはは使ってみようとしたんだが
なぜか私のデスクトッブにはダウンロード出来なかった。
試しに古いノートPCにやってみたらできたので
どうもIE7が邪魔してるような気がする。

GUIモジュールとの通信はソケットとかじゃなくて
単純に呼び出し時の引数渡しみたい。
まだ良く調べてないが。

504 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:07:59 ]
>>503
フーム…ちなみに C と Lisp の経験はそれぞれどれくらい?

あと、まずその GUI モジュールとやらについて一通り勉強するのが先だと思う。
今の状態だと、たとえば Lisp じゃなくて Python で〜ってケースでも
どこから手をつけていいかわかんない状態でしょ?まず、ターゲットをよく知らないとね。

大抵の C のライブラリは当然 C の関数呼び出し形式のインターフェースしかない。
他のシステム(Lisp に限らないよ。ネットワークのむこうの C のプログラムとかね)と繋ぐなら、通信部分は自分で作ることになる。

505 名前:491 mailto:sage [2007/09/03(月) 23:10:52 ]
あ、
「既存のGUIと通信を行うモジュール」と言うのは
GUI及びLAN経由で他のPCと通信する機能を
兼ね備えたモジュールがあってそこから
計算エンジンが呼び出される構成って事。

書き方が紛らわしかったね。

506 名前:503 mailto:sage [2007/09/03(月) 23:42:18 ]
>504
お察しの通りCでも大きなブログラムを一から書いた事は無い。
せいぜい教科書の演習問題レベルか他人の書いたブログラムを
ちょっと変更したくらい。Lispの経験はほとんどゼロ。

そんなレベルで難しい事をやろうとするなと言われそうだが
まあ、趣味でやってる事なので。

まずはLispで書いたソースをコンパイルして
他のEXEから呼び出す事が可能なモジュールを
作れるかどうかを知りたかったのよ。

507 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 00:04:43 ]
共有ライブラリを生成できる処理系はいくつかある。
有償なら ACL, LispWorks、無償なら ECL (GCL もできるのかな?使ったことないから知らん) あたりで可能。
Windows で使えるかは知らないけど。あと、この機能を使うにゃー C に加えて Lisp の知識も要求される。
つうわけで、技術的には可能だが、たぶんあなたの期待してるようなものじゃない。

残念ながら今の Lisp の世界では「Lisp から C のライブラリを呼び出す」のが一般的なんだよねぇ。
Foreign Function Interface といって、C のライブラリを Lisp から呼び出す機能。

ECL みたいに C のプログラムに埋め込んじゃえるタイプのもあるが、これをやるにも C と Lisp 両方の
知識が要求される。逆に知識があれば VB に埋め込んだりもできる:
www.cs.stevens.edu/~dlong/hacks/vbecl/index.php

とりあえず C か Lisp、どっちかはマスターしよう。Lisp ならこのスレで力になるよ。

508 名前:491 mailto:sage [2007/09/04(火) 00:17:44 ]
結局のところ、Lispの関数を呼び出す時のパラメータ形式と
(多分)Cが関数呼び出しする時のパラメータ形式を変換する
小さなモジュールを作って間に挟めばこの目的にはOKって事かな?

そうすればLispコンパイラが吐き出すCのソースはいじらなくても、
objの方をリンカーにかけてexe化するだけで良いのかな、多分。

509 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 00:48:16 ]
うーん、まず Lisp の側からつっこむとね、まず貴方はデザイン上の撰択をしないといけない。
ECL を使うと仮定すると次のような方法がある。

1. GUI ライブラリが DLL として提供されているなら FFI 経由で Lisp から使う
(この場合、コンパイラの出力をいじるとかは必要ない)
2. GUI ライブラリの機能をラップして DLL にして Lisp から使う
3. GUI ライブラリをソケットとか別プロセスから操作できるようにしたてて、Lisp からはそのインターフェースで操作する
4. ECL の機能をラップした DLL を作成して、それを C プログラムにロードして使う

4. しか眼中にないようだが、それは要求されるスキルも高く、かつあんまり楽じゃない。たとえば、Lisp の知識がないと
あるオブジェクトを管理しているのは Lisp の領域なのか C の領域なのか区別をつけることすら難しい(…と思うけど、どう?)。

あとは、C をはじめたばかりのようなので、プログラムといえばコンパイラでコンパイルして exe か dll にしたもの、
というイメージがあるんだろう。ECL で「コンパイルする」というと確かにネイティブコードを生成するが、それは
exe でも dll でもないんだ。(まぁ、実行形式や共有ライブラリも生成できるけど…)

> (compile-file "foo.lisp") ;; gcc でコンパイルしてネイティブコードを含む .fas ファイルを作成
foo.fas
> (load "foo.fas") ;; .fas をロード




510 名前:508 mailto:sage [2007/09/04(火) 00:52:52 ]
>507
そうですか、上で書いたような安直な方法は多分使えないと。どうしようかなー?
Lispから呼び出せるGUI&通信モジュールを自作するのは多分もっと大変だし。

あまり大変ならLispでエンジン書くのを諦めるしか無いかな?

最後にひとつだけ質問。
(商用Lispの付加機能じゃなく)一般的なLispシステムのコンパイラが吐く
objはそれ単体では自立したモジュール(exeやdll)には出来ないって事ですよね。
ガーベッジコレクションとかが欠けてるし。

511 名前:510 mailto:sage [2007/09/04(火) 01:15:26 ]
>509
ちなみに私が使おうと考えていたGUIは
ライブラリ形式ではなくて一固まりのモジュール(.exe)なのです。
それがdllを介してあるいは直接にエンジンを呼ぶ形式。
なのでこちらからは呼べなくて呼び出される一方なのです。






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

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

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