【入門】CommonLisp【 ..
809:デフォルトの名無しさん
05/12/27 01:47:02
car => これ
cdr => それ
cdadar => そこそこれ
810:デフォルトの名無しさん
05/12/27 01:55:43
car/cdr は箱(コンスセル)から要素を取り出す操作だから、
car: とりだす
cdr: つぎをとりだす
cdadar: つぎのまえのつぎのまえをとりだす
関数は動詞且つ和語で統一したい所だけど、苦しいかな...
811:デフォルトの名無しさん
05/12/27 02:26:21
>>809
それイイネ
812:デフォルトの名無しさん
05/12/27 10:26:20
>>809
anaphoric ifのitはどうすんだ
813:デフォルトの名無しさん
05/12/27 11:57:15
>>812
「あれ」
814:デフォルトの名無しさん
05/12/30 19:42:32
URLリンク(clozure.com)
x86 の文字がちらほら見えるけど、OpenMCL も x86 に移植されるみたいだね。
素晴らしい。
815:デフォルトの名無しさん
06/01/09 22:24:16
lispで作った関数なんかは、何処に保存されてるのでしょうか?
lispのコードをいじる課題が出たのですが、
コードの保存を自分でやらなきゃならなくなって困ってます。
816:デフォルトの名無しさん
06/01/09 22:52:09
教官に聞け
817:デフォルトの名無しさん
06/01/09 22:59:50
それを見つけるのが課題。。
818:デフォルトの名無しさん
06/01/10 10:08:05
「エディタで新規にファイル作ってその中に書け」が答のような気もする
っていうかLisp関係ないな
対話的にしかLispを使わない授業だったと推測するが
819:デフォルトの名無しさん
06/01/10 14:24:33
>>815
それ、Smalltalk使いの私も訊きたいです。
Smalltalkでは、関数(メソッド)が自身のソースを属性として持っていて比較的
容易にたぐれるんですが、Lispでは環境内でのソース管理はどうなっているんでしょうか?
818の行間を読むと、対話的に作られた場合、関数は自身にかかわるソース情報を
(デコンパイルなどで特殊な方法で別途得る以外)他の一般的な言語と同様、
いっさい失ってしまうのが当り前…というような印象を受けるのですが。
820:デフォルトの名無しさん
06/01/10 22:47:35
>>819
ANSI CL の範囲では無いと思う。ANSI Smalltalk もソースコードの管理までは
規定してないでしょ?
821:デフォルトの名無しさん
06/01/10 23:15:09
function-lambda-expression()
lambda 式が取れなくても規格合致だけど
822:デフォルトの名無しさん
06/01/11 06:36:04
>>819
「関数」はソース+定義環境だから、ソースだけ取れてもそれを保存
するみたいなことには向かないだろうね。デバッグの助けにするだけなら
いいだろうけれど。
(let ((n 0))
(defun incr (k)
(incf n k)))
なんてした時に、incrのソースはどこからどこまで? ってことね。
823:デフォルトの名無しさん
06/01/11 16:34:30
なるほど。Smalltalkのブロック(クロージャ)のソースは、メソッド(関数)のそれと
違って容易にはたぐれない…のと状況は似ていそうですね。ありがとうございます。
824:デフォルトの名無しさん
06/01/11 17:02:36
URLリンク(www.shiro.dreamhost.com)
これ読んでLisp使いたくなりました。
入門サイト教えろこの野郎m(__)m
825:デフォルトの名無しさん
06/01/11 18:29:40
>>824
ぐぐれこの野郎(^^)
826:デフォルトの名無しさん
06/01/11 18:41:45
>>824
URLリンク(www.geocities.jp)
xyzzy向けの内容が入ってるけど
827:デフォルトの名無しさん
06/01/11 20:37:58
>>824
URLリンク(www.h7.dion.ne.jp)
日本語のサイトではここが一番良かった。
828:デフォルトの名無しさん
06/01/13 19:50:45
すまんがLispで生産性があがるってのはどのへんのせいなのでしょうか?
>>824 の本を読んで興味持ったんだけれどよくわからんです。
コンパイル->実行とかの過程も処理対象にできるっていうのはやりようで面白いことできそうかと思ったんですが。
いまはC#つかいなのですが、.NETでのReflection,CodeDOMあたりの機能でしょうか。
829:デフォルトの名無しさん
06/01/13 20:10:48
いろんな要素が絡んでるから難しいけど。
最近機能が増えた言語や開発環境(なんでもいい)で、これが入って
生産性が上がったなーってもんをリストアップしてみ。
そのリストはLispの生産性の高さの理由のリストとかなり重なると思うよ。
830:デフォルトの名無しさん
06/01/14 01:43:00
使用者への効果でいうと「マルチパラダイム」が一番大きいと思う.型がない.
手続き型でも関数型でも論理型でも並列型でもオブジェクト指向型でも,それ
に合わせられる.クラスによる分類が向かない分野では,迷う事なくそれ以外
の手法をとれるしね.
マクロによるプログラム変形とかはそういった言語カスタマイズのための道具
で,本当はこの「どんなパラダイムでもどんとこい」というのが最大のメリッ
トだと思う.個人的にはね.
831:デフォルトの名無しさん
06/01/14 04:40:52
あのー
おばかで申し訳ないですが、
自分、VC++でコンソールアプリ作っております。
一部のc++の関数をLispで置き換えたいと思っておるのですが、
これって可能なんでしょうか?
おしえてえらいしと
832:デフォルトの名無しさん
06/01/14 13:24:37
>>831
だいたいできると思うけど、GC関係でいろいろややこしいところは覚悟しないといけない。
833:デフォルトの名無しさん
06/01/14 14:01:57
可能だけど,ある程度 C++ と Lisp の知識がいるよ.
1) DLL を出力できる Lisp コンパイラをもっている (普通の DLL と同じ)
2) ecl を組み込む
3) プロセス間通信する
3. がいちばん簡単かなー
834:デフォルトの名無しさん
06/01/14 17:27:18
>>829
C++からC#にかわったんだけど
・Generics(これはC#1.0になかったものとして) テンプレートでないのがちょっと不満。
・リフレクション
・デリゲート 呼び出しをオブジェクト化することでいろいろ使える。
・イベント デリゲートの呼び出し管理の簡略化
・リモーティング プロセス間呼び出しを楽にした感じ
・インテリセンス(これは開発環境) これあってすごい楽になった。ヘルプとか引く回数激減。
条件に基づいてコード生成、それの管理とかできるともっといろいろ面白いことできるのかなぁとおもうけど。
835:831
06/01/14 17:46:11
>>831
>>832
情報dクス
・・・ここ数日間、GCL,CLisp ( Chicken, Gambit-C )
が吐き出すCコードをVCでコンパイルして.Libを作成しようとしてますた
直接 DLLを出力できるLispコンパイラ使わないと駄目何すね
・・・DLLを出力できるLispコンパイラ、知っていたら教えてくらはい
(上で騒がれてた、ACLってやつなのかな?)
教えて訓でスマソ
836:831
06/01/14 17:48:34
↑
↑ 自分に礼いってた orz
>>832
>>833
ですた
837:デフォルトの名無しさん
06/01/14 17:55:44
>>834
敢えて挑発的に書けば...
Generics: 動的型なら元から不要
リフレクション: 元からある
デリゲート: クロージャの劣化再発明
イベント: クロージャが無いから無理してる
リモーティング: S式送ってevalさせればいいだけじゃん
インテリセンス: 80年代からあると思うけど
もちろん、静的型言語が持つ型安全性の保証とかはLispは弱い。
自分でがりがり書けば出来なくはないけれど。
条件に基づいてコード生成って?
838:デフォルトの名無しさん
06/01/14 18:10:18
LispWorks はできるよ.ACL もできるんじゃねーかな.
ECL もできる.GCL もできそうだけど… GCL 知らないスマン
# しかし CLISP は C コード吐かないだろう.
839:831
06/01/14 18:43:48
>>838
どうもっす
ECLでゆきます
・・CLisp、間違えます田
色んなのためしてたらわからなくなてた
ありがとうございました
840:デフォルトの名無しさん
06/01/14 19:04:59
>>837
C++から入ってC#やってるのでその辺の概念がまったくわからんです。
なんか最近頭がうにになってるし。
オブジェクト指向に頭が固まってる希ガス。
Lispというか関数型の利点がいまいちわかってないのでC++とかだとこんな風にしかできないけどそこをこんなエレガントにできるよって感じで教えてもらえないですか?
条件に基づいてコード生成ってのは、画面の生成とかをXAMLみたいなスクリプトに落として扱ってるんだけれどそれをそのままプログラムコードで生成したりしとか操作に基づいてロジックを生成してそのままプログラム中で扱えたりするといろいろできるかという話。
841:デフォルトの名無しさん
06/01/14 20:25:20
>>840
>操作に基づいてロジックを生成
これって具体的にはどういうイメージで言ってるの?
842:デフォルトの名無しさん
06/01/14 23:07:07
gclでウィンドウを生成してその中で二点を定めて
線を引くというような簡素なプログラムを組みたい
のですがどうすればよいでしょうか?どなたかご存知な
方お願いします。
まずウィンドウを生成するやり方からわかりません。。
843:デフォルトの名無しさん
06/01/14 23:29:43
GCL 使った事無いけど、これじゃないの?
Tcl/Tk は別途インスコする必要あるかもしれないけど。
URLリンク(www.sunsite.ualberta.ca)
844:デフォルトの名無しさん
06/01/15 00:02:22
>>841 行った操作を覚えたりとか、拡張言語として使うとかですかね。
845:デフォルトの名無しさん
06/01/15 00:41:22
>>843
ありがとうございます。
結構使えそうです。
846:デフォルトの名無しさん
06/01/15 02:04:13
>>837
> インテリセンス: 80年代からあると思うけど
あればなんでもいいってわけじゃないだろw
開発環境が(良くも悪くも)重厚長大ですげえんだよMSのは。
847:デフォルトの名無しさん
06/01/15 02:22:14
>>846
世界の狭い奴だな
848:デフォルトの名無しさん
06/01/15 04:14:14
lispのコンソールから打ち込んだ文字(プログラムを走らせる前)
をすべて保存するようにしたいのですが、
打ち込んだ文字列は、なんていう変数やらストリームに保存されてるんですか?
849:デフォルトの名無しさん
06/01/15 04:21:20
つURLリンク(www.franz.com)
850:デフォルトの名無しさん
06/01/15 04:33:06
ありがとうございます。
でも、コマンドラインの変数名も知りたいのです。
わからないでしょうか?
851:デフォルトの名無しさん
06/01/15 08:15:48
あ、そういうことか。失敬。
それは処理系依存だと思う。例えばAllegroならcommand-line-argumentsという
関数で取れる。処理系のマニュアルを読むべし。
852:デフォルトの名無しさん
06/01/15 09:38:00
>>847
しかしあのMSの統合開発環境に太刀打ちできる環境はないな。
853:デフォルトの名無しさん
06/01/15 09:51:57
まーGeneraの頃とはソフトウェアの規模が違うのは認めるが。
854:デフォルトの名無しさん
06/01/15 10:18:37
MSの貧者の統合環境ってどうなんだろうね。
敷居を下げたのが功か無能を引き入れたのが罪か。
855:デフォルトの名無しさん
06/01/15 10:29:10
レベルの低い開発者をふるい落とすのは開発環境の役目ではない
856:350
06/01/15 11:06:09
>>351
kyoto common lispのコマンドラインの変数名を知りたいのですが、
ネットでは見つかりません。
しらないでしょうか?
857:デフォルトの名無しさん
06/01/15 11:07:04
優れたデバッガのおかげで本来動くはずのないプログラムが出たとこ修正で動くようになる。当然、潜在バグてんこ盛り。
論よりRUNとか言っているアフォも居るし。
Lispもそんなもんなのか?
858:デフォルトの名無しさん
06/01/15 11:46:22
>>856
アホがよって来るから、メール欄に sage って入れてくれ。
859:デフォルトの名無しさん
06/01/15 14:30:44
早く common-lisp.net 復旧しないかな...
860:デフォルトの名無しさん
06/01/15 14:37:43
.NETで使えるLispというのはないんでせうか?
ちょっとみたけれどわからず・・・
861:デフォルトの名無しさん
06/01/15 14:43:09
>>860
ある。
862:デフォルトの名無しさん
06/01/16 00:04:23
ソースつきサンプルが標準でどっかのディレクトリに入って滝がした
863:デフォルトの名無しさん
06/01/16 01:34:22
>>860 .NET 向けなら LSharp ってのがあるよ.まぁ,Common Lisp でも Scheme でもないけど.
864:デフォルトの名無しさん
06/01/16 03:23:56
kyoto common lispのコマンドラインの変数名を知りたいのですが、
誰か知りませんか?
865:デフォルトの名無しさん
06/01/16 05:06:02
つうかなんで今更KCL?
GCLならsi:*command-args* みたいな名前の変数だったと思う。
とりあえず、aproposでそれらしい名前を探してみたら?
866:デフォルトの名無しさん
06/01/16 14:29:04
オブジェクト指向が染み付いてるんですが、LISPってどんなイメージでプログラミングするの?
867:デフォルトの名無しさん
06/01/16 16:35:33
クラスを定義してメソッドを書いてゆく。(こともできる)
868:デフォルトの名無しさん
06/01/16 16:38:07
>>867 それオブジェクト指向とどう違うの?
869:デフォルトの名無しさん
06/01/16 16:51:22
違わないだろ
Lispでもオブジェクト指向やれますよって言ってるんだから
870:デフォルトの名無しさん
06/01/16 17:05:27
んじゃ、オブジェクト指向的に書くとして、その場合のJava、C++などとの違いはどこに出るの?
871:デフォルトの名無しさん
06/01/16 17:22:49
>>870
括弧
872:デフォルトの名無しさん
06/01/16 17:35:38
>>871
まあ、依然としてLispである、ってとこかな。
873:デフォルトの名無しさん
06/01/16 18:12:17
>>872 そのLISPであるのはどこ?
874:デフォルトの名無しさん
06/01/16 18:15:40
>>873
括弧
875:デフォルトの名無しさん
06/01/16 18:20:36
単に「JavaやC++と比べてLispはどう違うのか」の答と一緒かと
876:デフォルトの名無しさん
06/01/16 18:27:39
>>875
最初の質問に戻るかも試練が・・・わかんねーよウワァン。
877:デフォルトの名無しさん
06/01/16 18:29:17
On Lisp の最初の方を読むといいかも。
878:デフォルトの名無しさん
06/01/16 18:42:58
>>877
みつけますた。よんでみます。
ただまとめて印刷できるページがほしかった・・・
879:デフォルトの名無しさん
06/01/16 20:41:02
スピード面とか考慮したうえでLispに向くもの向かないものってあるんでしょうか?
880:デフォルトの名無しさん
06/01/16 22:37:05
LSharp以外に.NETでつかえるLispあるならつかいたいんだがどうよ。
881:831
06/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:デフォルトの名無しさん
06/01/17 00:06:55
>>880
何で .NET が良いのか、LSharp の何が気に入らなかったのかを書いたら
教えてやらんでもないけど、マイナーな処理系使っても幸せにはなれないよ。
>>876
個人的には REPL の有る無しが大きい。データを直に触りながら書く感じ。
883:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/17 02:17:35
>>882
.NETの理由:既存資産があるしライブラリあるから
LSharp以外の理由:LSharpは気に入らなかったのではなく比較のため。
885:884
06/01/17 02:20:44
眠いとだめだな日本語おかしい・・・orz
ライブラリ->マイライブラリ
LSharpは->LSharpを
886:デフォルトの名無しさん
06/01/17 02:24:04
>>884,885
ほい。
URLリンク(dotlisp.sourceforge.net)
URLリンク(www-sop.inria.fr)
887:デフォルトの名無しさん
06/01/17 02:46:43
>>884, 885
ほれ.
RDNZL - A .NET layer for Common Lisp
URLリンク(www.weitz.de)
888:デフォルトの名無しさん
06/01/17 02:48:57
>>884,885
あと、この辺かな。
URLリンク(weitz.de)
URLリンク(foil.sourceforge.net)
URLリンク(bc.tech.coop)
URLリンク(bc.tech.coop)
URLリンク(bc.tech.coop)
せっかく答えてくれたのに、参考にならなかったらスマソ。
889:デフォルトの名無しさん
06/01/17 02:50:32
わぉ、こんな夜更けに被ってしまった...
890:デフォルトの名無しさん
06/01/17 03:27:55
>>879
Lisper は環境に合わせて Lisp 処理系を書いてしまうから、向かない物は無いとも言える。
GOOL とか XS Lisp とか LispMe とか Schemix とか。LispM もあったし。
向いてないのは、人月投入してナンボのプロジェクトとかかな。Lisper は希少種だから。
891:デフォルトの名無しさん
06/01/17 10:55:18
正式発表キタ!!
>A port of OpenMCL to X86-64 (AMD64) Linux is underway;
>it's scheduled for release in Q2/2006.
URLリンク(openmcl.clozure.com)
892:デフォルトの名無しさん
06/01/17 10:59:58
>>886-888 さんくすこ。みてみます。
893:831
06/01/18 01:04:30
>>883
情報サンクス
使い勝手、よさそうですね
マニュアルのページ参照できますた
Personal Editionだとファイル出力できないことがたった今判明。
..約11万かぁ 要検討します
おっしゃるとおり、組み込み系、Lisp共に超初心者です、はい。
Lispは本を1時間よんだくらい。まずは環境整備と思い、現在に至ります。
Cはちょいとかじってます。
言語解析やりたくてLIspはじめようかと。
ついでに質問いいですか?教えて訓ですみません。
CまたはC++に組み込む場合、.DLLに加えて.h,.libファイルが必要ですよね?
マニュアルにこれらの出力関数が見当たらなかったんすけど、
きちんと装備されています?、LispWorks。
まちがい、かんちがいあったらすいません。
宜しくお願いします。
sage気おつけます。2ch書き込みも実は831がはじめて。
894:デフォルトの名無しさん
06/01/18 01:44:47
> 言語解析やりたくてLIspはじめようかと。
自然言語解析だとすると LispWorks は日本語対応が UNICODE のみなんで,お
すすめできないなぁ.あんまり日本語処理強くないよ.最終目標はどんなかん
じなの?
> CまたはC++に組み込む場合、.DLLに加えて.h,.libファイルが必要ですよね?
DLL を LoadLibrary して使えます.でも普通は Lisp から C の DLL を呼ぶと
思うけどなー.そっちのほうが資料が充実してるし楽だ.あるいはソケットで
通信とかね.
895:831
06/01/18 21:35:14
>>894
情報サンクス
言語解析はそんなレベル高いものではない(と思う)
というのも認知心理学ちょっとやりたくて買った本が
「Lispで学ぶ認知心理学」ってやつ。
そこにでてくるプログラム参考に勉強していこうかと。
ただ、1980年に出版されたもんだからユニコードうんぬんではないのです。
たとえば "NINCHI" "SHINRIGAKU"とかで、全部ローマ字で処理。
文章とかの階層構造を定義したいなぁ、なんて。
ただここの本にでてくる考え方は学んでみたいとおもい、& 組み込み対象が自作のC++プログラム。
っていうかんじです。
引き続き、組み込み向けのLisp、ソケット通信調べてみます。
長文駄文ソマソ。
896:デフォルトの名無しさん
06/01/19 00:43:18
>>895
URLリンク(clisp.sourceforge.net)
URLリンク(clisp.sourceforge.net)
URLリンク(common-lisp.net)
897:831
06/01/19 01:00:17
>>896
・゚・(ノд`)・゚・ なんでそんなにやさしいんですか?
有難う御座います。
がんばります。
...職場の人だってここまでやさしくない
898:デフォルトの名無しさん
06/01/19 05:00:56
>>895 あれってMACLISPじゃなかったっけか?
899:831
06/01/20 00:25:21
>>898
ども。
本には「APPLE LISP」を基準にしているとの記述が。
中まだ呼んでないからわからないけど
defun を DE で記述ますね。
今日は帰りが遅かったからほとんど手付かず。
週末はLisperになりたい。
900:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/20 21:09:46
kyoto common lispのコマンドラインの変数名を知りたいのですが、
誰か知りませんか?
902:デフォルトの名無しさん
06/01/20 21:21:08
変な宿題出してるがっこがあるようだな。
スレリンク(tech板:349番)
903:デフォルトの名無しさん
06/01/21 00:10:07
いまどき KCL ???ネタか?しかも本スレとマルチ?
メール欄に sage もしくは学生番号を書いたら考えるけど……
904:デフォルトの名無しさん
06/01/21 00:42:29
>>856 >>864 も
アフォは無視すれ
905:831
06/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
06/01/21 01:20:28
orz 絵がずれちゃいました。
訂正
-----Lispソース(FFI含む)--------------
| インターフェース部を書いたCソースを|------------------------->C/C++で組み込み可能なDLL
| コンパイルしたdll__________________| Clispでコンパイル
--------------------------------------
またずれたら逝きます
907:831
06/01/21 01:33:09
スレよごしすいません
再訂正
1. インターフェース部を書いたCソースをCコンパイラ(VC++)でDLLを作成
2. VCからでできたDLLをLispソースに組み込んで、CLisp(FFIパッケージ使用)でコンパイル。
3. CLispからでてきたDLLをC/C++に組み込む
...すいませんでした。
908:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/21 01:46:17
CLISP は DLL を出力できません.ので,C のアプリから CLISP で作った機能を呼び出すには
1. ソケットを使う
2. パイプを使う
3. 共有メモリを使う (CLISP に拡張がいるかな?)
のいずれかの手段が必要です.
910:831
06/01/21 02:01:40
>>908
解説、ありがとうございます。
自分、英語苦手なのばれちゃいましたね。
学生のときC/C++で記憶のモデルをつくってますた
へたれな出来だったけど。
へたれソフトには一応それなりに考えて実装しますた。
それはそのままにして、新しい機能をLispで加えられたらと。
当時の研究、あまりいい結果でなかったけど
おもしろかたんで社会にでても時間みつけてつづけてるって感じです。
...素直にLispWorks購入しようかな
911:831
06/01/21 02:08:25
おお、
すいません、すれちがっちゃいました。
まずはアドバイスのとおり1,2,3について調べてみます
情報ありがとうございます。
ホント、世話になってます
912:デフォルトの名無しさん
06/01/21 11:06:07
WindowsならCorman Common Lispって手もある。IDE使わなきゃ無料だし、
ソースコードもついてたハズなんで見てみれば?
トライアル版とはいえAllegro Common Lispに手を出してしまうとアホらしくて
他の処理系を使う気が失せるが個人で購入するには高すぎて手が出せない罠。
913:デフォルトの名無しさん
06/01/21 12:30:40
Cormanって日本語使えるようになったの? 以前試したときはダメだったけど。
914:デフォルトの名無しさん
06/01/21 13:28:16
>>912
そんなに高くは無いだろ。
915:デフォルトの名無しさん
06/01/21 22:49:24
Allegro, UNIX でもマルチスレッドに対応にしてくれると
多少高くても買うんだけどなあ…
916:デフォルトの名無しさん
06/01/21 23:07:47
>>914
え?いくらなの? 50 万くらいかと思ってたけど
しかもそれでランタイムライセンスなしみたいな…
俺騙されてた?
917:デフォルトの名無しさん
06/01/21 23:21:37
一番安いのだと十数万じゃなかったっけ。
918:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/22 00:05:42
URLリンク(www.lispworks.com)
The consequences are undefined if literal objects (including
self-evaluating objects) are destructively modified.
本の名前晒せ
920:デフォルトの名無しさん
06/01/22 00:14:11
Mac Common Lispの動作としてそうなるという説明であれば正しい
記述なのかもしれない。>>919の言うように現在のCommon Lispの
仕様としては「不定」が正解。
ただし、動作が不定であるということが明確化されたのはCLtL2から
だからそれ以前の本ならそういう記述があっても止むを得ない。
921:デフォルトの名無しさん
06/01/22 00:21:24
>>919
本はこれです。
プログラミング言語Lisp入門からマルチメディアまで ASCII SOFTWARE
URLリンク(www.amazon.co.jp)
今初めてアマゾンでレビュー見たんですが、
どうやらMacに依存した内容が多いようですね。
上のコードはMacじゃないと動かないという事なんですね。
922:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/22 01:20:08
>>915
Windows以外はまだOSスレッドに対応してないんだっけ。8.0でも変わらないのかな。
925:デフォルトの名無しさん
06/01/22 02:01:16
>>831
VB だが。
URLリンク(www.cs.stevens.edu)
926:918
06/01/22 09:23:08
皆さんありがとうございます。
ANSI標準のCommon Lispを勉強したかったんで、別の本を探して見ます。
Common Lispならどの処理系でも同じなのかと思ってました。
927:デフォルトの名無しさん
06/01/22 10:50:15
>>916
前は10万円以下のがHPでセールスしてたが今はアカデミック向けのが99ドルで載ってるな。
928:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/22 12:00:57
>>924
してない.
7 -> 8 の差分ってすごく小さい
930:デフォルトの名無しさん
06/01/22 13:19:36
>>895
> >>894
> 情報サンクス
> 言語解析はそんなレベル高いものではない(と思う)
> というのも認知心理学ちょっとやりたくて買った本が
> 「Lispで学ぶ認知心理学」ってやつ。
おおおっ、もしやサンプルがAPPLE LISP でプログラムされているやつでは!
931:デフォルトの名無しさん
06/01/22 13:28:49
APPLE LISP は8bitマシンであるAPPLE ][ 用に慶応大の大西先生が
実装した処理系ですね。 6502のマシン語で書いたそうです。
メモリの一部がグラフィックメモリと共用なのでガベージコレクションして
いるのが”見えた”ので教育用としても有用だった。
932:デフォルトの名無しさん
06/01/22 13:48:36
>>931
をいをい、大西先生じゃねーよ。中西先生な。死んじゃったけど。
933:デフォルトの名無しさん
06/01/22 15:02:48
>>923
OpenMCL では本当に問題ないのかなあ。CMUCL や SBCL では
(setf x '(a b c))
(setf y '(a b c))
(setf (cdr x) '(1 2))
(print (list x y))
をコンパイルしてロードすると、リテラルが共有されるため
((A 1 2) (A 1 2))
となるんだけど、そういった想定外のことが起こったりしない?
934:デフォルトの名無しさん
06/01/22 15:47:12
OpenMCL では↓になったけど、リテラルリストに破壊的操作をするのは良くないですね。
((A 1 2) (A B C))
(proclaim '(optimize (speed 3) (space 0) (debug 0))) しても一緒でした。
OpenMCL が SBCL や CMUCL に比べて遅いと言われてるのは、こういう所からなのかな。
935:831
06/01/22 23:26:26
どもです。
>>912
情報サンクス
Corman Lisp 調べてみますた。
これ、なかなか使いやすそう。
お値段も 249$ (3万弱?)くらいで手が届く。
サンプルソースから推測するに、
実はこれC/C++に組み込めるのでは?(しかもCとのインターフェース部、自分でも扱えるレベル!?)
ちょいいじってDLL出力させてみたとこ、ヘッダーとDLLでてきますた。
LoadLibraryでVC++から読み込ませたら一応コンパイルは通った。
実行させると ダイアログで 「Cormanなんとか.dll」がなんとかかんとかって言ってた。
お金はらえば、わたすの願いかなうんですかね?
ソケット通信調べる前に、もうちょいいじってみます。
>>925
情報サンクス
ダウンロードさせていただきます田。
時間あるとき、いじらさせて頂きます。
>>930、931
自分、全くの初心者なんでAPPLE Lispのすごさわかりませんが、とても読みやすいと感じますね。
環境整えてからって思ってたけど、今日からこの本を読み恥じめてます。
自分の場合、手段(Lisp)と目的(認知)が同時に学習できますんで、効率的だと思ってアマゾンで購入。
3巻同時に手に入れられたのは運がよかった。
んー ホントにLisperになりたい。
900さんにも言われたとおり、
アルゴリズムに集中して勉強してゆきます〜
936:831
06/01/23 01:43:11
>>935 にて
>ちょいいじってDLL出力させてみたとこ、ヘッダーとDLLでてきますた。
訂正:
すいません、勘違い訂正します。
もともとあったexampleフォルダ内で用意されてたtestdll.dllを利用しますた
んー最近すれよごしばかり。
少し書き込み控えます。
937:デフォルトの名無しさん
06/01/25 00:52:04
c.l.l.のなが〜いスレッド読んで知ったこと。
ACLって成果物(って呼び方でいいんだろか)配布するのに毎年ライセンス料を払い
続けなければいけないらしい。へぇ。だから皆高い高いって言うんだ。
これってGCCで作ったバイナリ勝手に配っちゃダメって言ってるのと一緒でしょ?
間違ってたら訂正願います>詳しい方
938:デフォルトの名無しさん
06/01/25 01:23:54
まぁ (loop (print (evel (read)))) みたいなのコンパイルしてバイナリ配ったら
Lisp そのものになっちゃうからな。配布ライセンスが必要という気持ちも理解
できないことはない。
個人的にはフリーソフトの発展に期待。
939:831
06/01/26 00:44:57
例題をやってて呼び出せない関数がいくつか。
put (putpropもだめ)
unpack (explodeもだめ)
maknam (pack inplodeもだめ)
現在、Corman LIsp使ってます。
これら関数の別名もしくは使い方知っているひといたら教えてください。
>>Corman Lisp使っている人
trace の使い方、教えてください。
・・・教えて訓ですいません
940:デフォルトの名無しさん
06/01/26 00:51:37
>>939
それぞれ
setf + get
symbol-name
make-symbol
で代用すべし。つーか、Common Lispの仕様持ってないの?
941:831
06/01/26 01:05:18
>>940
情報サンクス
>つーか、Common Lispの仕様持ってないの?
今週末、本買いにゆきます
すいません〜
942:デフォルトの名無しさん
06/01/26 01:06:13
>>939
その聞き方じゃ現代 Lisper にはわかんねーよぅ
943:デフォルトの名無しさん
06/01/26 01:23:25
car とか cdr とか禁止で
短くていいじゃんと思う俺はきっと汚染されてる
944:デフォルトの名無しさん
06/01/27 05:11:44
>>939
(trace 'func)
でトレースしたい関数の記号を引数にとる。
あとは普通にfuncを実行すればトレースの結果が表示される
ところで、いい加減Javaくらいできないとマズいかなと思い
借りてきた本の著者が井田昌之だった
945:デフォルトの名無しさん
06/01/27 09:56:04
lispができるならJavaいらんだろ。CがまだならC、CができるならC++かC#にしとけ。
946:デフォルトの名無しさん
06/01/29 13:22:00
gclのソースを弄って、gclを立ち上げるときに、
自動的にこちらの指定したlispのコードを実行させるようにしたいのですが、
どうすればいいでしょうか?
947:デフォルトの名無しさん
06/01/29 13:36:57
宿題は自分でやれ。
948:デフォルトの名無しさん
06/01/29 13:59:48
>>946
そんなのソースをいじらんでもコマンドラインオプションでできねーか?
949:デフォルトの名無しさん
06/01/29 14:04:10
どこの小学校だ、変な宿題出しているのは。
950:デフォルトの名無しさん
06/01/29 16:00:26
理素譜
951:デフォルトの名無しさん
06/01/29 16:29:24
gclを弄って、gclが起動したら、自動的にlispのコードが実行されるようにするのが、
課題なんです。
gclのstdinに、lispのコードでもプリントで書き込めばいいのでしょうか?
わけわからん。
952:デフォルトの名無しさん
06/01/29 16:39:04
お前にはセンスも才能も将来もないことはよくわかった。
向上心が少しでも残されてるなら宿題は自分でやれ。
953:デフォルトの名無しさん
06/01/29 16:50:14
ってか出題者は何を意図してんだろ。本気で小学校レベルなのかな。
954:デフォルトの名無しさん
06/01/29 17:06:54
>>953
”翻訳”を通すとこうなる。
よくあることなので気に病まないほうがよい。
955:デフォルトの名無しさん
06/01/29 17:09:21
少なくともLispの課題ではないのだろう。(C言語の課題かな?)
正しい質問場所を見つけるのも課題なのかな。w
956:デフォルトの名無しさん
06/01/29 17:31:19
日本人です。
gclを起動→自動的にlispの関数が実行され、
読み込み状態になる。
を実現しなきゃいけないんです。
処理系弄るの初めてなので、
ちょっと困ってます。
957:デフォルトの名無しさん
06/01/29 17:35:50
>>956
そうですか。ちなみに私は困っていません。
958:デフォルトの名無しさん
06/01/29 18:23:55
おまいらちゃんと>>1を読み直せ。このスレはまた〜りが信条じゃなかったのか?
GCLってとこが致命的だな。いまどきGCLメインで使ってる人ってどれくらい居るんだろ。
普通に考えたらREPL起動前にユーザ定義の処理を走らせるとかその程度のことは処理系が
持ってるはずなんで>>948の言い分を調べてみるのが先決かと。
調べた結果「無い」ってことならそれを実装しろってのが課題の主旨と思われるので
REPLに突入する前に自前のコード突っ込めば終わりじゃね?
959:デフォルトの名無しさん
06/01/29 18:29:04
Lispの授業じゃなくてコードリーディングみたいなのの課題なんじゃない?
さすがにスレ違いだと思うよ。
960:デフォルトの名無しさん
06/01/30 00:02:17
gclに、iniファイルとかは使えますか?
961:デフォルトの名無しさん
06/01/30 00:05:06
>>958
もうちょいまともな聞き方すれば数日前に答えが手にはいったのにな。
ちょっと酷いからスルーしてしまってた。
1. まず hogehoge.lisp ってファイルをエディタでつくる。
% vi hogehoge.lisp
2. -load オプションをつかって gcl を起動する
% gcl -load hogehoge.lisp
最近の GCL ならこれで gcl が起動し hogehoge.lisp を読み込まれる
もし本当に GCL を改造しろという課題なら 2ch でダメダメな質問してる時点
で自力で解くのは諦めたほうがいい。クラスのできそうなやつに飯でもおごる
とかしてやってもらうのが唯一の方法だろ。
>>958 行動を選択してください [A/B/C]
A. 知りたい事がわかったので礼も言わずに消える
B. 礼を言って消える
C. 回答が的はずれだ俺の知りたい事はxxxxとかいいだす
962:デフォルトの名無しさん
06/01/30 00:14:34
2ch でだいぶんトンデモ質問にも慣れたと思っていたけどこれは…
もう超能力で補うしかねぇな。まっとうなところなら
A. GCL のオプション設定を ini ファイルで指定できますか?
→ コマンドラインからの ni ファイルの解析を自分でやらないと標準で ini ファイル
B. GCL で ini ファイルを読み書きするライブラリは標準でついていますか?
→ ついてません。ini ファイルの読み書きがしたい場合は自力でなんとかしてください。
C. GCL で ini ファイルを読み書きする事は可能でしょうか?
→ 自分で処理を書く、Win32API を呼び出すなどすればできます。が C でini が扱える程度の技術が必要です。
どれか当ってねぇかな〜と期待
963:デフォルトの名無しさん
06/01/30 00:22:34
すみません。
gclを起動したら、初期設定ファイルを読み込んで、
こちらの指定したコードを実行させるようにはできないかと思ったのです。
schemeではiniファイルを読ませることができたので。
どうすればいいですか?
964:958
06/01/30 00:30:10
ぉ。風呂から出てきたら俺が質問者になってるみたいだな。
ほんじゃ>>961 の回答は以下でファイナルアンサーってことでよろしく。
D. 誰か次スレ立ててね はぁと(w
あと質問してる人、sage覚えてね。
965:デフォルトの名無しさん
06/01/30 00:36:19
>>958 殿へ
どうみても誤爆です。
拙者責任をとって切腹つかまつるゆえ次スレは立てられませぬ。
966:デフォルトの名無しさん
06/01/30 00:38:39
次スレいらんだろ。
このスレ使いきるまで一年以上かかってるし、本スレに合流でいい。
967:デフォルトの名無しさん
06/01/30 00:49:46
>>961
> 本当に GCL を改造
main関数をmain2とかに改名して、
argcとargv弄るだけ…でいいんだろうか。
それだと学校の課題としては変だよなぁ…。
968:デフォルトの名無しさん
06/01/30 00:54:34
GCLの質問する奴、みんな質問の仕方が妙だよな。
気になるから誰か課題の全文をウプ汁。
おじさんが模範解答を作ってやる。
969:デフォルトの名無しさん
06/01/30 01:18:05
何か盛り上がりそうだけど本スレ汚すのも気が引けるんであふれたら
過疎化したスレのリサイクルにご協力をお願いします。
【一日】CommonLisp【一門】
スレリンク(tech板)
970:963
06/01/30 01:22:43
>>967
「他のcのプログラムから、gclのmain関数を呼び出し、
その時点で、こちらの指定したlispのコードが実行され、
ユーザの入力待ち状態にすること」
です。
971:デフォルトの名無しさん
06/02/01 01:50:05
>>970
ほんとにそんなダメ日本語な問題なのか?思い込みで解釈せずに正確に写せ。
あと Mail 欄には sage と入力してください。それができたら解答する。
972:デフォルトの名無しさん
06/02/02 03:22:43
>2006-01-30 02:39 gb
>
> * lisp-kernel/freebsd8664/: Makefile, elf_x86_64.x: New files.
>
> FreeBSD make (and gmake) both want to rebuild all .s files, but
> this otherwise seems to work.
FreeBSD にも対応するのかな。
973:デフォルトの名無しさん
06/02/04 02:32:09
Lispで記述された結構な量のライブラリがあって、これをC/C++から簡単に呼び出せる
ようにしたいのですがお勧めの処理系はどれになりますか?
LispからC/C++を呼び出す例はいろんな処理系でドキュメントが整備されてますが
逆はあまりやられてないようなので。ECLがC/C++との親和性が高いかなと思っていじって
いるんですがどの程度規格に準拠してるかとか、いまのライブラリがそのまま
コンパイルできるかなとか疑問な点がまだ多いので識者の意見をお聞かせいただければ、と。
974:デフォルトの名無しさん
06/02/07 04:04:49
授業でLISP習ったんだけど
最初なんじゃこりゃ頭いてーと思ったけど
これ結構おもすれー(^ω^)
975:デフォルトの名無しさん
06/02/13 23:01:02
(eval '(^ω^))
おもすれー
おもすれー
976:デフォルトの名無しさん
06/02/14 16:39:01
JAVAからclispを呼び出せるようになったのだが、何に使えるだろう?
977:デフォルトの名無しさん
06/02/14 19:36:49
>>976
JAVAからclispを呼び出すのに使える
978:デフォルトの名無しさん
06/02/14 19:48:30
>>977
それには気がつかなかった
979:デフォルトの名無しさん
06/02/14 21:49:00
>>977
目からうろこが(ry
ま、clispがjavaから呼べてもLISPを使用しなければならない
業務処理が思いつかん。
やhり無駄なものを作ってしまったか。
980:デフォルトの名無しさん
06/02/14 21:55:01
Servlet を Common Lisp で書けたりすると面白いかも。
そうなると Lisp 自体も Java VM 上で動かして、高速に相互呼び出しできる
ようにしたくなるね。
981:デフォルトの名無しさん
06/02/14 21:58:04
じゃ、ABCL で。
982:デフォルトの名無しさん
06/02/14 22:37:55
>Java VM 上で動かして
それってjavaでlispの処理系を書くということ?
どこかにありそうな気がするな。
基本的にjarかなんかでjavaコードの中でlispコードが
走れば最高なんだけどな。
XMLのパースとか楽になるんだが。
983:デフォルトの名無しさん
06/02/14 22:40:37
>>982
それが >>981(URLリンク(armedbear.org)) です...
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5382日前に更新/244 KB
担当:undef