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


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

【入門】CommonLisp【質問よろず】



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

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

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

830 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 01:43:00 ]
使用者への効果でいうと「マルチパラダイム」が一番大きいと思う.型がない.
手続き型でも関数型でも論理型でも並列型でもオブジェクト指向型でも,それ
に合わせられる.クラスによる分類が向かない分野では,迷う事なくそれ以外
の手法をとれるしね.

マクロによるプログラム変形とかはそういった言語カスタマイズのための道具
で,本当はこの「どんなパラダイムでもどんとこい」というのが最大のメリッ
トだと思う.個人的にはね.

831 名前:デフォルトの名無しさん [2006/01/14(土) 04:40:52 ]
あのー
おばかで申し訳ないですが、

自分、VC++でコンソールアプリ作っております。
一部のc++の関数をLispで置き換えたいと思っておるのですが、

これって可能なんでしょうか?

おしえてえらいしと



832 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 13:24:37 ]
>>831
だいたいできると思うけど、GC関係でいろいろややこしいところは覚悟しないといけない。

833 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 14:01:57 ]
可能だけど,ある程度 C++ と Lisp の知識がいるよ.

1) DLL を出力できる Lisp コンパイラをもっている (普通の DLL と同じ)
2) ecl を組み込む
3) プロセス間通信する

3. がいちばん簡単かなー

834 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 17:27:18 ]
>>829
C++からC#にかわったんだけど
・Generics(これはC#1.0になかったものとして) テンプレートでないのがちょっと不満。
・リフレクション
・デリゲート 呼び出しをオブジェクト化することでいろいろ使える。
・イベント デリゲートの呼び出し管理の簡略化
・リモーティング プロセス間呼び出しを楽にした感じ
・インテリセンス(これは開発環境) これあってすごい楽になった。ヘルプとか引く回数激減。
条件に基づいてコード生成、それの管理とかできるともっといろいろ面白いことできるのかなぁとおもうけど。

835 名前:831 [2006/01/14(土) 17:46:11 ]
>>831
>>832

情報dクス

・・・ここ数日間、GCL,CLisp ( Chicken, Gambit-C )
が吐き出すCコードをVCでコンパイルして.Libを作成しようとしてますた

直接 DLLを出力できるLispコンパイラ使わないと駄目何すね


・・・DLLを出力できるLispコンパイラ、知っていたら教えてくらはい
(上で騒がれてた、ACLってやつなのかな?)

教えて訓でスマソ




836 名前:831 [2006/01/14(土) 17:48:34 ]

↑ 自分に礼いってた orz

>>832
>>833
ですた

837 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 17:55:44 ]
>>834
敢えて挑発的に書けば...

Generics: 動的型なら元から不要
リフレクション: 元からある
デリゲート: クロージャの劣化再発明
イベント: クロージャが無いから無理してる
リモーティング: S式送ってevalさせればいいだけじゃん
インテリセンス: 80年代からあると思うけど

もちろん、静的型言語が持つ型安全性の保証とかはLispは弱い。
自分でがりがり書けば出来なくはないけれど。

条件に基づいてコード生成って?


838 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 18:10:18 ]
LispWorks はできるよ.ACL もできるんじゃねーかな.
ECL もできる.GCL もできそうだけど… GCL 知らないスマン

# しかし CLISP は C コード吐かないだろう.



839 名前:831 [2006/01/14(土) 18:43:48 ]
>>838

どうもっす
ECLでゆきます

・・CLisp、間違えます田
色んなのためしてたらわからなくなてた


ありがとうございました

840 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:04:59 ]
>>837
C++から入ってC#やってるのでその辺の概念がまったくわからんです。
なんか最近頭がうにになってるし。
オブジェクト指向に頭が固まってる希ガス。

Lispというか関数型の利点がいまいちわかってないのでC++とかだとこんな風にしかできないけどそこをこんなエレガントにできるよって感じで教えてもらえないですか?

条件に基づいてコード生成ってのは、画面の生成とかをXAMLみたいなスクリプトに落として扱ってるんだけれどそれをそのままプログラムコードで生成したりしとか操作に基づいてロジックを生成してそのままプログラム中で扱えたりするといろいろできるかという話。


841 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:25:20 ]
>>840
>操作に基づいてロジックを生成

これって具体的にはどういうイメージで言ってるの?

842 名前:デフォルトの名無しさん [2006/01/14(土) 23:07:07 ]

gclでウィンドウを生成してその中で二点を定めて
線を引くというような簡素なプログラムを組みたい
のですがどうすればよいでしょうか?どなたかご存知な
方お願いします。
まずウィンドウを生成するやり方からわかりません。。

843 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 23:29:43 ]
GCL 使った事無いけど、これじゃないの?
Tcl/Tk は別途インスコする必要あるかもしれないけど。

www.sunsite.ualberta.ca/Documentation/Gnu/gcl-2.3.6/html_mono/gcl-tk.html#SEC55

844 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 00:02:22 ]
>>841 行った操作を覚えたりとか、拡張言語として使うとかですかね。


845 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 00:41:22 ]
>>843
ありがとうございます。
結構使えそうです。


846 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 02:04:13 ]
>>837
> インテリセンス: 80年代からあると思うけど
あればなんでもいいってわけじゃないだろw
開発環境が(良くも悪くも)重厚長大ですげえんだよMSのは。


847 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 02:22:14 ]
>>846
世界の狭い奴だな

848 名前:デフォルトの名無しさん [2006/01/15(日) 04:14:14 ]
lispのコンソールから打ち込んだ文字(プログラムを走らせる前)
をすべて保存するようにしたいのですが、
打ち込んだ文字列は、なんていう変数やらストリームに保存されてるんですか?



849 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 04:21:20 ]
www.franz.com/support/documentation/7.0/ansicl/dictentr/dribble.htm


850 名前:デフォルトの名無しさん [2006/01/15(日) 04:33:06 ]
ありがとうございます。
でも、コマンドラインの変数名も知りたいのです。
わからないでしょうか?

851 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 08:15:48 ]
あ、そういうことか。失敬。
それは処理系依存だと思う。例えばAllegroならcommand-line-argumentsという
関数で取れる。処理系のマニュアルを読むべし。


852 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 09:38:00 ]
>>847
しかしあのMSの統合開発環境に太刀打ちできる環境はないな。

853 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 09:51:57 ]
まーGeneraの頃とはソフトウェアの規模が違うのは認めるが。


854 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 10:18:37 ]
MSの貧者の統合環境ってどうなんだろうね。
敷居を下げたのが功か無能を引き入れたのが罪か。

855 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 10:29:10 ]
レベルの低い開発者をふるい落とすのは開発環境の役目ではない

856 名前:350 [2006/01/15(日) 11:06:09 ]
>>351
kyoto common lispのコマンドラインの変数名を知りたいのですが、
ネットでは見つかりません。
しらないでしょうか?

857 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:07:04 ]
優れたデバッガのおかげで本来動くはずのないプログラムが出たとこ修正で動くようになる。当然、潜在バグてんこ盛り。
論よりRUNとか言っているアフォも居るし。
Lispもそんなもんなのか?

858 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:46:22 ]
>>856
アホがよって来るから、メール欄に sage って入れてくれ。



859 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 14:30:44 ]
早く common-lisp.net 復旧しないかな...

860 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 14:37:43 ]
.NETで使えるLispというのはないんでせうか?
ちょっとみたけれどわからず・・・

861 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 14:43:09 ]
>>860
ある。

862 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 00:04:23 ]
ソースつきサンプルが標準でどっかのディレクトリに入って滝がした

863 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 01:34:22 ]
>>860 .NET 向けなら LSharp ってのがあるよ.まぁ,Common Lisp でも Scheme でもないけど.

864 名前:デフォルトの名無しさん [2006/01/16(月) 03:23:56 ]
kyoto common lispのコマンドラインの変数名を知りたいのですが、
誰か知りませんか?

865 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 05:06:02 ]
つうかなんで今更KCL?
GCLならsi:*command-args* みたいな名前の変数だったと思う。
とりあえず、aproposでそれらしい名前を探してみたら?


866 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 14:29:04 ]
オブジェクト指向が染み付いてるんですが、LISPってどんなイメージでプログラミングするの?


867 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 16:35:33 ]
クラスを定義してメソッドを書いてゆく。(こともできる)


868 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 16:38:07 ]
>>867 それオブジェクト指向とどう違うの?



869 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 16:51:22 ]
違わないだろ
Lispでもオブジェクト指向やれますよって言ってるんだから

870 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 17:05:27 ]
んじゃ、オブジェクト指向的に書くとして、その場合のJava、C++などとの違いはどこに出るの?

871 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 17:22:49 ]
>>870
括弧

872 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 17:35:38 ]
>>871
まあ、依然としてLispである、ってとこかな。

873 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 18:12:17 ]
>>872 そのLISPであるのはどこ?

874 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 18:15:40 ]
>>873
括弧

875 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 18:20:36 ]
単に「JavaやC++と比べてLispはどう違うのか」の答と一緒かと

876 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 18:27:39 ]
>>875
最初の質問に戻るかも試練が・・・わかんねーよウワァン。


877 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 18:29:17 ]
On Lisp の最初の方を読むといいかも。

878 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 18:42:58 ]
>>877
みつけますた。よんでみます。
ただまとめて印刷できるページがほしかった・・・



879 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 20:41:02 ]
スピード面とか考慮したうえでLispに向くもの向かないものってあるんでしょうか?

880 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 22:37:05 ]
LSharp以外に.NETでつかえるLispあるならつかいたいんだがどうよ。

881 名前:831 [2006/01/17(火) 00:03:55 ]
ECLを使って見ますた

Windows上でインストールさせて、
簡単な関数を書いたLispファイルをコンパイルしてみると
おぉ、ECLから.dll .Lib .hファイルを取得できますた

早速C++に組み込んでみようとすると、
 ..わからん、どうやって引数を渡すんだ?

マニュアルとECLのヘッダーファイルを週末読み込んでみたものの、
わたすの低レベルな頭ではプログラムを走らせることができませんですた
(変換された関数はECL独自の構造体(共有体?)しか受け取ってくれない)

やはりCに書き出すことはできたとしても、
Lisp->Cへの組み込み時において、変換された関数のインターフェースが
問題であることをようやく理解。

そこで今回、Lisp->Cのインターフェースがうまく扱えそうな
LispWorksに方向転換してマニュアルを呼んでます

LispWorksで変換したLispコードをCから呼び出してる人、
使い心地はどうですか?
知ってる人おりましたら、おしえてくらはい。

・・・長文、駄文、あと頭悪くてすいません





882 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 00:06:55 ]
>>880
何で .NET が良いのか、LSharp の何が気に入らなかったのかを書いたら
教えてやらんでもないけど、マイナーな処理系使っても幸せにはなれないよ。

>>876
個人的には REPL の有る無しが大きい。データを直に触りながら書く感じ。

883 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:11:33 ]
>>831

メール欄に sage って書いてホスィ.ひょっとしてPerl とか Python とかの組
み込みの経験ないってこと?むーC / Lisp ともにちょっとスキル不足かもしれ
ない.

LispWorks の使い心地だけど

(fli:define-foreign-callable ("Double" :result-type :int)
((x :int) (y :int))
(* x y))

で DLL 作ると int Double(int x, int y) { return x*y; } に見える.


884 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:17:35 ]
>>882
.NETの理由:既存資産があるしライブラリあるから
LSharp以外の理由:LSharpは気に入らなかったのではなく比較のため。


885 名前:884 mailto:sage [2006/01/17(火) 02:20:44 ]
眠いとだめだな日本語おかしい・・・orz
ライブラリ->マイライブラリ
LSharpは->LSharpを

886 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:24:04 ]
>>884,885
ほい。

dotlisp.sourceforge.net/dotlisp.htm
www-sop.inria.fr/mimosa/fp/Bigloo/

887 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:46:43 ]
>>884, 885
ほれ.

RDNZL - A .NET layer for Common Lisp
www.weitz.de/rdnzl/


888 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:48:57 ]
>>884,885
あと、この辺かな。

weitz.de/rdnzl/
foil.sourceforge.net/
bc.tech.coop/blog/040927.html
bc.tech.coop/blog/041210.html
bc.tech.coop/blog/041216.html

せっかく答えてくれたのに、参考にならなかったらスマソ。



889 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:50:32 ]
わぉ、こんな夜更けに被ってしまった...

890 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 03:27:55 ]
>>879
Lisper は環境に合わせて Lisp 処理系を書いてしまうから、向かない物は無いとも言える。
GOOL とか XS Lisp とか LispMe とか Schemix とか。LispM もあったし。

向いてないのは、人月投入してナンボのプロジェクトとかかな。Lisper は希少種だから。

891 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 10:55:18 ]
正式発表キタ!!

>A port of OpenMCL to X86-64 (AMD64) Linux is underway;
>it's scheduled for release in Q2/2006.

openmcl.clozure.com/index.html

892 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 10:59:58 ]
>>886-888 さんくすこ。みてみます。

893 名前:831 mailto:sage [2006/01/18(水) 01:04:30 ]
>>883
情報サンクス

使い勝手、よさそうですね
マニュアルのページ参照できますた

Personal Editionだとファイル出力できないことがたった今判明。
..約11万かぁ 要検討します

おっしゃるとおり、組み込み系、Lisp共に超初心者です、はい。
Lispは本を1時間よんだくらい。まずは環境整備と思い、現在に至ります。
Cはちょいとかじってます。
言語解析やりたくてLIspはじめようかと。

ついでに質問いいですか?教えて訓ですみません。
CまたはC++に組み込む場合、.DLLに加えて.h,.libファイルが必要ですよね?

マニュアルにこれらの出力関数が見当たらなかったんすけど、
きちんと装備されています?、LispWorks。
まちがい、かんちがいあったらすいません。

宜しくお願いします。

sage気おつけます。2ch書き込みも実は831がはじめて。



894 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 01:44:47 ]
> 言語解析やりたくてLIspはじめようかと。

自然言語解析だとすると LispWorks は日本語対応が UNICODE のみなんで,お
すすめできないなぁ.あんまり日本語処理強くないよ.最終目標はどんなかん
じなの?

> CまたはC++に組み込む場合、.DLLに加えて.h,.libファイルが必要ですよね?

DLL を LoadLibrary して使えます.でも普通は Lisp から C の DLL を呼ぶと
思うけどなー.そっちのほうが資料が充実してるし楽だ.あるいはソケットで
通信とかね.


895 名前:831 mailto:sage [2006/01/18(水) 21:35:14 ]
>>894

情報サンクス

言語解析はそんなレベル高いものではない(と思う)
というのも認知心理学ちょっとやりたくて買った本が
「Lispで学ぶ認知心理学」ってやつ。

そこにでてくるプログラム参考に勉強していこうかと。
ただ、1980年に出版されたもんだからユニコードうんぬんではないのです。
たとえば "NINCHI" "SHINRIGAKU"とかで、全部ローマ字で処理。
文章とかの階層構造を定義したいなぁ、なんて。

ただここの本にでてくる考え方は学んでみたいとおもい、& 組み込み対象が自作のC++プログラム。
っていうかんじです。

引き続き、組み込み向けのLisp、ソケット通信調べてみます。

長文駄文ソマソ。

896 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 00:43:18 ]
>>895
clisp.sourceforge.net/impnotes.html#ex-call-in
clisp.sourceforge.net/impnotes.html#ex-call-in-dll
common-lisp.net/project/cffi/manual/cffi-manual.html#Tutorial_002dCallbacks

897 名前:831 mailto:sage [2006/01/19(木) 01:00:17 ]
>>896

・゚・(ノд`)・゚・ なんでそんなにやさしいんですか?

有難う御座います。
がんばります。

...職場の人だってここまでやさしくない

898 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 05:00:56 ]
>>895 あれってMACLISPじゃなかったっけか?



899 名前:831 mailto:sage [2006/01/20(金) 00:25:21 ]
>>898

ども。

本には「APPLE LISP」を基準にしているとの記述が。
中まだ呼んでないからわからないけど
defun を DE で記述ますね。

今日は帰りが遅かったからほとんど手付かず。

週末はLisperになりたい。



900 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 01:44:44 ]
まーがんがれ。言語仕様はずいぶんかわってるので,アルゴリズムに集中して
勉強したほうがいいね。まぁ,おれはその本読んだ事ないのでアレだけど,お勧めは

- C をある程度知っているなら ANSI Common Lisp あたりを読んでみる
- 難しいと感じたなら,古い本だけど培風館の Lisp (1) (2) に挑戦
こっちは学生に訳させたのか日本語が破綻しているが,内容的には
入門から簡単な Garbage Collection の仕組みまでと充実してる.
- 英語が苦にならないなら Practical Common Lisp とか Norvig の PAIP,OnLisp とか
アカデミックな風味が好きなら Programming Scheme, HTDP, SICP にも挑戦してもいい

自然言語ネタならPAIP にもちょっとあるよ.PAIP の一番最初の例はルールベー
スのランダム文章作成だよん.

(defparameter *simple-grammar*
'((sentence -> (noun-phrase verb-phrase))
(noun-phrase -> (Article Noun))
(verb-phrase -> (Verb noun-phrase))
(Article -> the a)
(Noun -> man ball woman table)
(Verb -> hit took saw liked)))
(defvar *grammar* *simple-grammar*)
(defun rule-lhs (rule) (first rule))
(defun rule-rhs (rule) (rest (rest rule)))
(defun rewrites (category) (rule-rhs (assoc category *grammar*)))
(defun generate (phrase)
(cond ((listp phrase) (mappend #'generate phrase))
((rewrites phrase) (generate (random-elt (rewrites phrase))))
(t (list phrase))))


901 名前:デフォルトの名無しさん [2006/01/20(金) 21:09:46 ]
kyoto common lispのコマンドラインの変数名を知りたいのですが、
誰か知りませんか?

902 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 21:21:08 ]
変な宿題出してるがっこがあるようだな。
pc8.2ch.net/test/read.cgi/tech/1132275726/349

903 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 00:10:07 ]
いまどき KCL ???ネタか?しかも本スレとマルチ?
メール欄に sage もしくは学生番号を書いたら考えるけど……

904 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 00:42:29 ]
>>856 >>864
アフォは無視すれ

905 名前:831 mailto:sage [2006/01/21(土) 01:13:44 ]
>>900
応援サンクス.参考書チェックしてみす。
今度町にでたら立ち読みしなければ。
...ランダム文章作成 ひじょーに博学ですね。
わたすの頭からあれがでてくるよう念じたら いつかでてくるのかな

週末だけのうみそ交換しませんか?

...毎度すいません、教えてくんになってよいですか。
教えて頂いたURL、目を通して見ます田。2つ質問あります。
1つ目:Example31.7 Calling Lisp from C dynamicallyの考え方、
   これであってます?↓
------Lispソース(FFI含む)----
| |
|(インターフェース部を書いた|
| Cソースを |
| コンパイルしたdll) |----------------> (Lispソースを
| | ↑      コンパイルしたDLL)
| | CLisp           
|---------------------------| でコンパイル      ↑C/C++に組み込み可

2つ目:もう一つ御願いします。
ClispではFFIを使用するためには特別な操作が必要なんすか?
上記考え方に基づいて
Example31.7のCソース部分からDLLを作成。
その後Lispソース部で作成(.dllの名前はきちんと入力)。
できたhoge.lispファイルを(load "hoge.lisp" )すると
CLispが「skip (DEF-CALL-OUT CALLOUT # ...」っていってとまっちゃいます田。

アドバイス頂けませんか?宜しくおねがいします。


906 名前:831 mailto:sage [2006/01/21(土) 01:20:28 ]
orz 絵がずれちゃいました。

訂正

-----Lispソース(FFI含む)--------------
| インターフェース部を書いたCソースを|------------------------->C/C++で組み込み可能なDLL
| コンパイルしたdll__________________| Clispでコンパイル
--------------------------------------

またずれたら逝きます

907 名前:831 mailto:sage [2006/01/21(土) 01:33:09 ]
スレよごしすいません

再訂正
1. インターフェース部を書いたCソースをCコンパイラ(VC++)でDLLを作成
2. VCからでできたDLLをLispソースに組み込んで、CLisp(FFIパッケージ使用)でコンパイル。
3. CLispからでてきたDLLをC/C++に組み込む
          
...すいませんでした。

908 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 01:40:25 ]
残念.CLISP の FFI ってのは CLISP から Dynamic Library (DLL とか) を扱
うための仕組みのこと.

CALL-OUT: CLISP から DLL の関数を呼び出す
+-------+ -----> +-----+
| CLISP | | DLL |
+-------+ <----- +-----+
CALL-IN: DLL 内から CLISP の関数を呼び出す

なので,C/C++ に組み込み可能な DLL は CLISP では作れない.ずいぶん
C/C++ にこだわりを持ているようだけれど,ゲームでも作ってそっから Lisp
の機能を呼びたいのかな?






909 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 01:46:17 ]
CLISP は DLL を出力できません.ので,C のアプリから CLISP で作った機能を呼び出すには

1. ソケットを使う
2. パイプを使う
3. 共有メモリを使う (CLISP に拡張がいるかな?)

のいずれかの手段が必要です.


910 名前:831 mailto:sage [2006/01/21(土) 02:01:40 ]
>>908

解説、ありがとうございます。
自分、英語苦手なのばれちゃいましたね。

学生のときC/C++で記憶のモデルをつくってますた
へたれな出来だったけど。
へたれソフトには一応それなりに考えて実装しますた。
それはそのままにして、新しい機能をLispで加えられたらと。
当時の研究、あまりいい結果でなかったけど
おもしろかたんで社会にでても時間みつけてつづけてるって感じです。

...素直にLispWorks購入しようかな








911 名前:831 mailto:sage [2006/01/21(土) 02:08:25 ]
おお、
すいません、すれちがっちゃいました。

まずはアドバイスのとおり1,2,3について調べてみます
情報ありがとうございます。
ホント、世話になってます



912 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 11:06:07 ]
WindowsならCorman Common Lispって手もある。IDE使わなきゃ無料だし、
ソースコードもついてたハズなんで見てみれば?
トライアル版とはいえAllegro Common Lispに手を出してしまうとアホらしくて
他の処理系を使う気が失せるが個人で購入するには高すぎて手が出せない罠。

913 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 12:30:40 ]
Cormanって日本語使えるようになったの? 以前試したときはダメだったけど。

914 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 13:28:16 ]
>>912
そんなに高くは無いだろ。

915 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 22:49:24 ]
Allegro, UNIX でもマルチスレッドに対応にしてくれると
多少高くても買うんだけどなあ…

916 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 23:07:47 ]
>>914
え?いくらなの? 50 万くらいかと思ってたけど
しかもそれでランタイムライセンスなしみたいな…
俺騙されてた?

917 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 23:21:37 ]
一番安いのだと十数万じゃなかったっけ。

918 名前:デフォルトの名無しさん [2006/01/21(土) 23:46:29 ]
本には
(setf x '(a b c))
(setf (nthcdr 2 x) '(1 2))
とすると、xが(a b 1 2)となると書いてあるんですが、
エラーになります。処理系によって違いがあるんですか?

自分が試したのがclispとAllegro CL (共にWindows)で、
本が想定してるのがMac Common Lispです。



919 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 00:05:42 ]
www.lispworks.com/documentation/HyperSpec/Body/03_abac.htm
The consequences are undefined if literal objects (including
self-evaluating objects) are destructively modified.

本の名前晒せ

920 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 00:14:11 ]
Mac Common Lispの動作としてそうなるという説明であれば正しい
記述なのかもしれない。>>919の言うように現在のCommon Lispの
仕様としては「不定」が正解。

ただし、動作が不定であるということが明確化されたのはCLtL2から
だからそれ以前の本ならそういう記述があっても止むを得ない。

921 名前:デフォルトの名無しさん [2006/01/22(日) 00:21:24 ]
>>919
本はこれです。
プログラミング言語Lisp入門からマルチメディアまで ASCII SOFTWARE
www.amazon.co.jp/exec/obidos/ASIN/4756139264/

今初めてアマゾンでレビュー見たんですが、
どうやらMacに依存した内容が多いようですね。

上のコードはMacじゃないと動かないという事なんですね。

922 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 00:30:39 ]
エラーの原因はリテラルオブジェクトの書き換えではなく、(setf nthcdr)の未定義
じゃないかな。手元のclispだと、
(setf x '(a b c))
(setf (cdr x) '(1 2))
ならちゃんと通って、x = (A 1 2) になる。元のプログラムだと(setf nthcdr)の未定義
でエラーになる。

923 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 00:44:13 ]
OpenMCL では問題無し。SBCL では (setf nthcdr) の未定義でエラー。

% ./dppccl
Welcome to OpenMCL Version 1.0 (DarwinPPC32)!
? (setf x '(a b c))
(A B C)
? (setf (nthcdr 2 x) '(1 2))
(1 2)
? x
(A B 1 2)

MCL 系に依存したコードみたいね。>>921 の本は ANSI CL という
よりは MCL の使い方を書いた本なんで問題無すぃ。

924 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 01:20:08 ]
>>915
Windows以外はまだOSスレッドに対応してないんだっけ。8.0でも変わらないのかな。

925 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 02:01:16 ]
>>831
VB だが。

www.cs.stevens.edu/~dlong/vbecl/

926 名前:918 [2006/01/22(日) 09:23:08 ]
皆さんありがとうございます。
ANSI標準のCommon Lispを勉強したかったんで、別の本を探して見ます。
Common Lispならどの処理系でも同じなのかと思ってました。

927 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 10:50:15 ]
>>916
前は10万円以下のがHPでセールスしてたが今はアカデミック向けのが99ドルで載ってるな。

928 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 11:53:28 ]
>>918
> ANSI標準のCommon Lispを勉強したかったんで、別の本を探して見ます。
仕様には規定されている事とされていない事がある。specified と unspecified ね。
さらに実装依存(implementation-defined)と定義されている事もある:
(例) (disassemble) での表示形式とか
declare で最適化するとかしないとか
は規格で「実装による」と規定されている。だから本 + HyperSpec をつきあわ
せながら勉強してけばいいんじゃね。ANSI Common Lisp (Paul Graham) あたりは
入門にはちょっと難しいと思われ。英語でもがんがる気合いがあるなら
Practiclal Common Lisp がオススメ

>>927
もう卒業したんでアカデミックダメポ…。学生時代はアカデミックが安ければ
いと思っていたけどな。アカデミックが安いだけではダメな事に気がついた。
予算は Win なら MSDN にもってかれちゃうしな。




929 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 12:00:57 ]
>>924
してない.
7 -> 8 の差分ってすごく小さい





930 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 13:19:36 ]
>>895
> >>894
> 情報サンクス
> 言語解析はそんなレベル高いものではない(と思う)
> というのも認知心理学ちょっとやりたくて買った本が
> 「Lispで学ぶ認知心理学」ってやつ。

おおおっ、もしやサンプルがAPPLE LISP でプログラムされているやつでは!






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

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

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