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パワーズ
930 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 13:19:36 ] >>895 > >>894 > 情報サンクス > 言語解析はそんなレベル高いものではない(と思う) > というのも認知心理学ちょっとやりたくて買った本が > 「Lispで学ぶ認知心理学」ってやつ。 おおおっ、もしやサンプルがAPPLE LISP でプログラムされているやつでは!
931 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 13:28:49 ] APPLE LISP は8bitマシンであるAPPLE ][ 用に慶応大の大西先生が 実装した処理系ですね。 6502のマシン語で書いたそうです。 メモリの一部がグラフィックメモリと共用なのでガベージコレクションして いるのが”見えた”ので教育用としても有用だった。
932 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 13:48:36 ] >>931 をいをい、大西先生じゃねーよ。中西先生な。死んじゃったけど。
933 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/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 mailto:sage [2006/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 mailto:sage [2006/01/23(月) 01:43:11 ] >>935 にて >ちょいいじってDLL出力させてみたとこ、ヘッダーとDLLでてきますた。 訂正: すいません、勘違い訂正します。 もともとあったexampleフォルダ内で用意されてたtestdll.dllを利用しますた んー最近すれよごしばかり。 少し書き込み控えます。
937 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 00:52:04 ] c.l.l.のなが〜いスレッド読んで知ったこと。 ACLって成果物(って呼び方でいいんだろか)配布するのに毎年ライセンス料を払い 続けなければいけないらしい。へぇ。だから皆高い高いって言うんだ。 これってGCCで作ったバイナリ勝手に配っちゃダメって言ってるのと一緒でしょ? 間違ってたら訂正願います>詳しい方
938 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 01:23:54 ] まぁ (loop (print (evel (read)))) みたいなのコンパイルしてバイナリ配ったら Lisp そのものになっちゃうからな。配布ライセンスが必要という気持ちも理解 できないことはない。 個人的にはフリーソフトの発展に期待。
939 名前:831 mailto:sage [2006/01/26(木) 00:44:57 ] 例題をやってて呼び出せない関数がいくつか。 put (putpropもだめ) unpack (explodeもだめ) maknam (pack inplodeもだめ) 現在、Corman LIsp使ってます。 これら関数の別名もしくは使い方知っているひといたら教えてください。 >>Corman Lisp使っている人 trace の使い方、教えてください。 ・・・教えて訓ですいません
940 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 00:51:37 ] >>939 それぞれ setf + get symbol-name make-symbol で代用すべし。つーか、Common Lispの仕様持ってないの?
941 名前:831 mailto:sage [2006/01/26(木) 01:05:18 ] >>940 情報サンクス >つーか、Common Lispの仕様持ってないの? 今週末、本買いにゆきます すいません〜
942 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 01:06:13 ] >>939 その聞き方じゃ現代 Lisper にはわかんねーよぅ
943 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 01:23:25 ] car とか cdr とか禁止で 短くていいじゃんと思う俺はきっと汚染されてる
944 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 05:11:44 ] >>939 (trace 'func) でトレースしたい関数の記号を引数にとる。 あとは普通にfuncを実行すればトレースの結果が表示される ところで、いい加減Javaくらいできないとマズいかなと思い 借りてきた本の著者が井田昌之だった
945 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 09:56:04 ] lispができるならJavaいらんだろ。CがまだならC、CができるならC++かC#にしとけ。
946 名前:デフォルトの名無しさん [2006/01/29(日) 13:22:00 ] gclのソースを弄って、gclを立ち上げるときに、 自動的にこちらの指定したlispのコードを実行させるようにしたいのですが、 どうすればいいでしょうか?
947 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 13:36:57 ] 宿題は自分でやれ。
948 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 13:59:48 ] >>946 そんなのソースをいじらんでもコマンドラインオプションでできねーか?
949 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 14:04:10 ] どこの小学校だ、変な宿題出しているのは。
950 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 16:00:26 ] 理素譜
951 名前:デフォルトの名無しさん [2006/01/29(日) 16:29:24 ] gclを弄って、gclが起動したら、自動的にlispのコードが実行されるようにするのが、 課題なんです。 gclのstdinに、lispのコードでもプリントで書き込めばいいのでしょうか? わけわからん。
952 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 16:39:04 ] お前にはセンスも才能も将来もないことはよくわかった。 向上心が少しでも残されてるなら宿題は自分でやれ。
953 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 16:50:14 ] ってか出題者は何を意図してんだろ。本気で小学校レベルなのかな。
954 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 17:06:54 ] >>953 ”翻訳”を通すとこうなる。 よくあることなので気に病まないほうがよい。
955 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 17:09:21 ] 少なくともLispの課題ではないのだろう。(C言語の課題かな?) 正しい質問場所を見つけるのも課題なのかな。w
956 名前:デフォルトの名無しさん [2006/01/29(日) 17:31:19 ] 日本人です。 gclを起動→自動的にlispの関数が実行され、 読み込み状態になる。 を実現しなきゃいけないんです。 処理系弄るの初めてなので、 ちょっと困ってます。
957 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 17:35:50 ] >>956 そうですか。ちなみに私は困っていません。
958 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 18:23:55 ] おまいらちゃんと>>1 を読み直せ。このスレはまた〜りが信条じゃなかったのか? GCLってとこが致命的だな。いまどきGCLメインで使ってる人ってどれくらい居るんだろ。 普通に考えたらREPL起動前にユーザ定義の処理を走らせるとかその程度のことは処理系が 持ってるはずなんで>>948 の言い分を調べてみるのが先決かと。 調べた結果「無い」ってことならそれを実装しろってのが課題の主旨と思われるので REPLに突入する前に自前のコード突っ込めば終わりじゃね?
959 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 18:29:04 ] Lispの授業じゃなくてコードリーディングみたいなのの課題なんじゃない? さすがにスレ違いだと思うよ。
960 名前:デフォルトの名無しさん [2006/01/30(月) 00:02:17 ] gclに、iniファイルとかは使えますか?
961 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 00:14:34 ] 2ch でだいぶんトンデモ質問にも慣れたと思っていたけどこれは… もう超能力で補うしかねぇな。まっとうなところなら A. GCL のオプション設定を ini ファイルで指定できますか? → コマンドラインからの ni ファイルの解析を自分でやらないと標準で ini ファイル B. GCL で ini ファイルを読み書きするライブラリは標準でついていますか? → ついてません。ini ファイルの読み書きがしたい場合は自力でなんとかしてください。 C. GCL で ini ファイルを読み書きする事は可能でしょうか? → 自分で処理を書く、Win32API を呼び出すなどすればできます。が C でini が扱える程度の技術が必要です。 どれか当ってねぇかな〜と期待
963 名前:デフォルトの名無しさん [2006/01/30(月) 00:22:34 ] すみません。 gclを起動したら、初期設定ファイルを読み込んで、 こちらの指定したコードを実行させるようにはできないかと思ったのです。 schemeではiniファイルを読ませることができたので。 どうすればいいですか?
964 名前:958 mailto:sage [2006/01/30(月) 00:30:10 ] ぉ。風呂から出てきたら俺が質問者になってるみたいだな。 ほんじゃ>>961 の回答は以下でファイナルアンサーってことでよろしく。 D. 誰か次スレ立ててね はぁと(w あと質問してる人、sage覚えてね。
965 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 00:36:19 ] >>958 殿へ どうみても誤爆です。 拙者責任をとって切腹つかまつるゆえ次スレは立てられませぬ。
966 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 00:38:39 ] 次スレいらんだろ。 このスレ使いきるまで一年以上かかってるし、本スレに合流でいい。
967 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 00:49:46 ] >>961 > 本当に GCL を改造 main関数をmain2とかに改名して、 argcとargv弄るだけ…でいいんだろうか。 それだと学校の課題としては変だよなぁ…。
968 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 00:54:34 ] GCLの質問する奴、みんな質問の仕方が妙だよな。 気になるから誰か課題の全文をウプ汁。 おじさんが模範解答を作ってやる。
969 名前:デフォルトの名無しさん mailto:sage [2006/01/30(月) 01:18:05 ] 何か盛り上がりそうだけど本スレ汚すのも気が引けるんであふれたら 過疎化したスレのリサイクルにご協力をお願いします。 【一日】CommonLisp【一門】 pc8.2ch.net/test/read.cgi/tech/1106587515/
970 名前:963 [2006/01/30(月) 01:22:43 ] >>967 「他のcのプログラムから、gclのmain関数を呼び出し、 その時点で、こちらの指定したlispのコードが実行され、 ユーザの入力待ち状態にすること」 です。
971 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 01:50:05 ] >>970 ほんとにそんなダメ日本語な問題なのか?思い込みで解釈せずに正確に写せ。 あと Mail 欄には sage と入力してください。それができたら解答する。
972 名前:デフォルトの名無しさん mailto:sage [2006/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 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 02:32:09 ] Lispで記述された結構な量のライブラリがあって、これをC/C++から簡単に呼び出せる ようにしたいのですがお勧めの処理系はどれになりますか? LispからC/C++を呼び出す例はいろんな処理系でドキュメントが整備されてますが 逆はあまりやられてないようなので。ECLがC/C++との親和性が高いかなと思っていじって いるんですがどの程度規格に準拠してるかとか、いまのライブラリがそのまま コンパイルできるかなとか疑問な点がまだ多いので識者の意見をお聞かせいただければ、と。
974 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 04:04:49 ] 授業でLISP習ったんだけど 最初なんじゃこりゃ頭いてーと思ったけど これ結構おもすれー(^ω^)
975 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 23:01:02 ] (eval '(^ω^)) おもすれー おもすれー
976 名前:デフォルトの名無しさん [2006/02/14(火) 16:39:01 ] JAVAからclispを呼び出せるようになったのだが、何に使えるだろう?
977 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 19:36:49 ] >>976 JAVAからclispを呼び出すのに使える
978 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 19:48:30 ] >>977 それには気がつかなかった
979 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 21:49:00 ] >>977 目からうろこが(ry ま、clispがjavaから呼べてもLISPを使用しなければならない 業務処理が思いつかん。 やhり無駄なものを作ってしまったか。
980 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 21:55:01 ] Servlet を Common Lisp で書けたりすると面白いかも。 そうなると Lisp 自体も Java VM 上で動かして、高速に相互呼び出しできる ようにしたくなるね。
981 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 21:58:04 ] じゃ、ABCL で。
982 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 22:37:55 ] >Java VM 上で動かして それってjavaでlispの処理系を書くということ? どこかにありそうな気がするな。 基本的にjarかなんかでjavaコードの中でlispコードが 走れば最高なんだけどな。 XMLのパースとか楽になるんだが。
983 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 22:40:37 ] >>982 それが >>981 (armedbear.org/abcl.html ) です...
984 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 23:03:52 ] >>983 すごいねコレ。 早速使ってみるわ、thx
985 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 23:10:57 ] (format t \"Hello, world!~%\")が8秒かかるんだが、 compileすれば早くなる?
986 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 23:16:04 ] スマソ。俺はちゃんと使った事がある訳じゃないんで詳細は知りません。 テキストエディタに使われているくらいだから、そんなに遅くはないと 思いたいけど。 armedbear-j.sourceforge.net/ JavaVM の起動とクラスのロードに時間が掛かってるとかじゃなくて?
987 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 23:21:24 ] >JavaVM の起動 それだ。 別のVMを起動するのに時間がかかっているのか。 同一VMで動くようにすれば早そうだ。
988 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 23:53:28 ] うちではこんな感じ。jikes でコンパイルしてたから、javac ならもっと速いかも。 別の VM を起動したりはしないと思うよ。初回だけ妙に遅いね。 % ./abcl Armed Bear Common Lisp 0.0.9 (built Tue Feb 14 2006 23:40:55 --900) Java 1.4.2_09 Apple Computer, Inc. Java HotSpot(TM) Client VM Low-level initialization completed in 2.388 seconds. Startup completed in 9.052 seconds. Type :HELP for a list of available commands. CL-USER(1): (time (format t "hello, world~%")) hello, world 5.287 seconds real time 62770 cons cells NIL CL-USER(2): (time (format t "hello, world~%")) hello, world 0.0020 seconds real time 67 cons cells NIL CL-USER(3):
989 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 00:54:59 ] うちは Windows でやってみたが、やはり一発目は遅いね。 クラスライブラリのロードか何かだろう。 Armed Bear Common Lisp 0.0.9 (built Wed Feb 15 2006 00:49:19 --900) Java 1.5.0_04 Sun Microsystems Inc. Java HotSpot(TM) Client VM Low-level initialization completed in 0.563 seconds. Startup completed in 2.172 seconds. Type :HELP for a list of available commands. CL-USER(1): (time (format t "hello, world~%")) hello, world 1.203 seconds real time 62770 cons cells NIL CL-USER(2): (time (format t "hello, world~%")) hello, world 0.0 seconds real time 67 cons cells NIL CL-USER(3):
990 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 01:19:54 ] すみません、インストールしてabclからjreのメソッドとかは呼び出せるんですがサンプルのhello.javaがコンパイルできません。 どうすれば・・・いいんでしょう F:\abcl-0.0.9\examples>javac hello.java hello.java:1: パッケージ org.armedbear.lisp は存在しません。 import org.armedbear.lisp.*; ^ hello.java:8: シンボルを見つけられません。 シンボル: クラス Interpreter 場所 : hello の クラス Interpreter interpreter = Interpreter.createInstance(); ^ hello.java:8: シンボルを見つけられません。 シンボル: 変数 Interpreter 場所 : hello の クラス Interpreter interpreter = Interpreter.createInstance(); ^ エラー 3 個
991 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 01:38:37 ] >>990 cd examples javac -classpath ../abcl.jar hello.java java -classpath ../abcl.jar;. hello みたいな感じで動いたよ。
992 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 01:46:49 ] >>991 おお!動いた、動きましたありがとう!
993 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 13:05:42 ] ABCLでだが Interpreter interpreter = Interpreter.createInstance(); LispObject obj = interpreter.eval("(print (directory \"c:/\")"); これが動かない理由が分からない。 XYZZYだと動くんだが。
994 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 13:54:15 ] >>993 Common Lisp の仕様判ってる? xyzzy なんて方言を持ち出されても・・・
995 名前:ゲハシマ mailto:sage [2006/02/15(水) 19:17:27 ] >>994 偉そうに言うだけか? 仕様とやらを示してみろよ
996 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 20:17:09 ] >>995 大馬鹿発見!!
997 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 20:18:53 ] とりあえず >>102
998 名前:993 mailto:sage [2006/02/15(水) 20:59:40 ] >994 主にjavaしか触らないので言語仕様は良くはしらないが、 XYZZYとは微妙に違うということは解った。 >995 あんた誰?
999 名前:993 mailto:sage [2006/02/15(水) 21:12:49 ] あるディレクトリの拡張子が指定されたものであった場合に、条件に 合致する全てのファイルを削除するlisp式ってどう書きます?
1000 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 21:21:35 ] CL-FAD を使えば (fad:walk-directory #p"/home/onjo/tmp/" ;; ディレクトリを指定 #'(lambda (p) (when (string-equal (pathname-type p) "txt") ;; 条件判定 (fad:delete-directory-and-files p))))
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。