1 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:52:46 ] 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) (url pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3))
809 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:35:14 ] ANSI CommnLispの日本語版が一番安価に入手できる。
810 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:04:10 ] あれ?とおもったからしらべたけど、 PAIPは1992でANSIは1996だったよ。PCLは2005かな。
811 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:05:25 ] >>809 あれ難しいわw つか、Lisp自体が難しいんだろうけど、
812 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:33:57 ] >>810 内容が。。。
813 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:36:27 ] >>811 Lispはコード量が少なくて済む分、一行の重みが濃密だからね。 そのかわり、一度臨界点を越えると生産性が高い。
814 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:37:12 ] >>813 まあ、関数型はみんなそういえるかな。
815 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:44:20 ] >>813 可読性はどうですか? 修行が足りないせいか、めちゃくちゃ読みにくいです(涙)。
816 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:00:36 ] >>815 はじめて最初の1〜2ヶ月はバックグラウンド次第ですごく混乱します。 この辺はJava/C++/C組が挫折するところ。これらのグループよりプログラミングバージン の方が上達が速いかもしれません。 当初のとっつきにくさを乗り越えると、単純な法則のもとでプログラムがかかかれている のがわかるから、それから理解が深くなってくるよ。 もっとも、自然言語学習と同じでボキャブラリを増やす過程は苦しいかな。 わからんでもいいからとりあえずなれることを重視して続けていけば良い。 感覚的な理解ってのは論理的な理解より時間がかかるんで、そのギャップが多いときは どうしても辛くなりがちだから。
817 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:09:03 ] >>816 アドバイス、ありがとうございます。 僕は、まさにその通りのバックグランドを持ってて 再帰に少し慣れてきたかなぁ・・・って段階です。 ちょっと不安が解消されました。 ところで、Lispは可読性が低くないという解釈で良いですか?
818 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:19:26 ] >>817 s式の括弧を読んでインデントをサポートしてくれるエディタとペアならそれほど苦痛じゃないよ。
819 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:30:23 ] >>818 インデントの問題はないので、やはりまだ修行が足りないだけですね。 精進します。 ありがとうございます。
820 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:45:34 ] C++のvirtual, const, explicit, throwsがどうのってのよりは よほど学びやすいと思うけどな... Boostのソースとかもう意味不明だし
821 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 03:37:40 ] 読みやすくはねえけど、意味不明ってほどか?
822 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 09:42:30 ] >>821 まじでか。 boost/iterator/*の怒涛のコメント読むだけで知恵熱出そうだが。
823 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:37:47 ] C++のテンプレやマクロはプログラムに密に作用するから ブラックボックスとして使いにくいんだよな。 他のテンプレと競合したりする割に、やけにパーツ分割にこだわるし。 思想についていけない。
824 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:43:14 ] boost lambda は確かに動くなぁと確かめたきりで実戦で使った記憶が無い。
825 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:51:53 ] boostはvisual studio必須だと思った lisp の自動インデントみたいなもの
826 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:32:03 ] リストの各要素を足す関数はどのように作れば良いですか 例えばxが'(1 2 3 4)だとすると (lsadd x)の様にして>10とかえってくるような関数を作りたいのです。 よろしくお願いします。
827 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:57:57 ] applyという機能を見つけて作成することができました CommonLispに搭載されている関数はどこで確認できるのでしょうか
828 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:00:43 ] Lisp ってあの括弧がなぁ~ インデントで、なんとかならんの?
829 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:10:57 ] >>827 (apropos シンボル)でひっかけてみな あとはHyperSpecをググって
830 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:38:24 ] >>828 式の解析、マクロを生成するマクロでは、インデントのみだと扱いが難しい。 AST(抽象構文木)と同様の構造だから、いろいろ実験できるんじゃないか?
831 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:39:31 ] Lisp のコードを読む分には括弧は無視していい。 ちゃんとインデントつけて綺麗に書けばね。 で、書く時はエディタに助けてもらえばいい。
832 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:52:13 ] >>828 インデントベースのlispと言う物はschemeの規格に既にあるが。
833 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:06:32 ] >>831 それは良く聞くんだけど、実際は書きながらエラーがでない程度に 間違ってしまうこともあるし、 読むときも、しっかりと読んでおかないと、対応関係がインデントと 微妙にずれたコードもすくなからず存在する。
834 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:08:59 ] >>833 > 読むときも、しっかりと読んでおかないと、対応関係がインデントと > 微妙にずれたコードもすくなからず存在する。 読むときもエディタで一度インデントしなおせばいいんじゃ?
835 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:58:40 ] 与えられた「変なインデントのソース」を、何もいじらずそのまま読む必要は無いよね。 これはLispに限らず、C系でも「整形しなきゃ読めねえよ!」なソースは、多かれ少なかれ 自分でインデントいじって読むと思う。
836 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:08:17 ] おい、変態インデントはここでは禁句だぞw
837 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:29:14 ] Googleなどで探してみたのですが 解決できないのでよろしくお願いします。 ある数の約数をリストにして出力してくれる関数はどのように 作れば良いのでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:06:43 ] 宿題丸投げの季節か……
839 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:12:41 ] >>838 すいません 宿題ではなくて作業自動化のために自主作成しているアプリケーションの 一部なのですが・・・・ まだLisp脳になっていないようで考え方がいまいちつかめないのです
840 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:12:56 ] >839 何にしてもLisp以前の問題 数学勉強し直せ
841 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:03:39 ] >>839 「自分のコードでは遅くて使い物にならない」ならまだしも、 「どのように作ればいいか?」は馬鹿にされても仕方ないんじゃないかな。 お前さん、ある数の約数を得たいとき、どういう風に計算する?
842 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:19:53 ] >>841 初心者さんが最初に感覚を掴めないってのはざらにあるから、バカにしないほうがいいよ。 >>839 感覚が掴めないのはなれるしかないから。最初は大きなものを作ろうとするより、ちいさな ユーティリティーでいいよ。とかく経験をつんでいけば大丈夫だから。
843 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:34:13 ] ↑ばーかばーか
844 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:02:05 ] >>839 Cでも何でもいい、まずお前さんが使える言語で書いてみたら? それをLispに移植すればいいんじゃない Lispは手続き型言語みたいに書くこともできるんだし Lispっぽく書くのはその後でもいいと思うよ
845 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:18:38 ] >>842 俺自身は馬鹿にしないけど、>>840 とかへのフォローもできない。 約数を求める数学的な知識があって、 Lispの入門書とか、マニュアルとかがあって、 さらにGoogleまで使えるなら、効率が悪かろうが、動かなかろうが、 自分なりの物くらいは作れると思うんだよ。 プログラミング初心者とかなら分かるんだけど、 そんな人間が「Lisp脳になっていない」とか言うか? 関数的な書き方が分からない、とかなら分かるんだけど。
846 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:39:15 ] >>239 PerlとGaucheで書いてみた sub yakusuu { my $x=shift; my @y; for (my $i=2;$i<$x;$i++) { if (($x % $i)==0) {push @y,$i} } return @y; } print yakusuu(100); sub yakusuu2 { my $x=shift; return grep {(($x % $_)==0) ? $_ : 0} (2..$x-1); } print yakusuu2(100);
847 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:39:42 ] こっちはGauche (define (yakusuu x) (let ((y ())) (do ((i 2 (+ i 1))) ((>= i x)) (if (= (remainder x i) 0) (push! y i))) (reverse y) ) ) (print (yakusuu 100)) (use srfi-1) (define (yakusuu2 x) (filter (lambda (a) (if (= (remainder x a) 0) a #f)) (iota (- x 2) 2)) ) (print (yakusuu2 100)) どっちも似たような感じになってるのが分かると思う あんまり変に考えないで気楽にLispに触れるのがいいよ そのうち馴れるさ yakusuu2はおまけですw Lisp脳ってたぶんこんな感じのを想像したんじゃないかな?
848 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:41:49 ] 239ってなんだよorz >>846 の239は839な
849 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:07:31 ] 「Paul と Graham で書いてみた」に見えた 寝よ…
850 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:25:16 ] あえてコモンリスプ以外で書いたのですね わかります
851 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:45:51 ] >>847 SRFI-42マジオススメ。
852 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 06:34:36 ] >>840-851 ありがとうございます。 C言語では #include <stdio.h> int main(void){ int a,b=1; printf("start:"); scanf("%d",&a); while(b<=a){ if(a%b==0){ printf("%d¥n",b); b=b+1; } else{ b=b+1; } } return 0; } となりました。 「Lisp脳」という言葉を使ったのは 偉大なLispHackerの皆さんは意外なそして美しいコードで いつも解決しているので、何か簡潔な方法が有るのではと思い使いました。
853 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:44:36 ] >>852 それは「早すぎる最適化」かもしれない より良い方法を探すのは、必要に迫られてからでよい それに、探し出すよりも偶然見つかることのほうが多い
854 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 09:41:37 ] (defun yakusuu (n) (let ((head '()) (tail '())) (loop for i from 1 to (sqrt n) if (zerop (mod n i)) do (push i head) (push (/ n i) tail)) (nreconc (if (= (car head) (car tail)) (cdr head) head) tail)))
855 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:16:09 ] mod関数はCommonLispでも使えるんですね!! 余りを出す関数があると自力でも出来そうです
856 名前:855 mailto:sage [2008/06/10(火) 17:35:22 ] できました 皆さん本当にありがとうございました!! (defun numlist (x) (let ((nlist '()) (i 1)) (loop (if (> i x) (return (reverse nlist)) (if (= (mod x i) 0) (progn (push i nlist) (incf i 1)) (incf i 1))))))
857 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:15:28 ] >>856 よかったな。これからもcommon lispをかわいがってやってください。 甘えすぎは非難の元だけど、分からなかったらいつでもおいでね。
858 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:30:08 ] >>856-857 名作みたいな展開。
859 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 07:32:31 ] WindowsでCLISPをやりたいと思って、 EclipseでCUSPをいれてちょこちょことやってるんだけど、 GUIとか、もうちょっとDLLを呼び出して、DirectXを操作とかとなると大変? GUIだとなんか幾つかそれっぽいのが見つかるんだけど(MacOSXとかLinux・Unixが目立つが) DLLを呼び出すのは無理??
860 名前:入ってしまえば天国なんだね…。 mailto:sage [2008/06/11(水) 11:01:38 ] LISPに最初から挫折しそうになって、あちこち見ています。 使用者例が少なすぎて発想パターンを断言できないけど、 思考‐発想タイミングから言えば基本的に敷居「だけ」が 高い言語のようだし、初心者を甘やかしても良さそう。 ところで、この言語で言えば印欧語族のロシア語みたいな 性格を見て今、ぐぐってみたんだが…ちょw大当たりww これは…すごいのはキャラが立ってるLISPだなwww これが、印欧語族の中では英語的なC言語系だと… ぐぐってみた…ごめん、もう何も言う事ないwwww (英語は「敬語」を始め、高度習得が困難です。) 対照的すぐる…(もうちょいがんばれば、あるいは…?
861 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:15:00 ] 独り言はチラシの裏かnotepad.exeに書けよ。
862 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:17:59 ] というかどう見てもbotです 本当にありがとうございました
863 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:37:43 ] 英語とかロシア語に例えるから挫折しそうになるんじゃないのかなw
864 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:17:05 ] >>859 cffiではdllをよべるみたいだが、詳しくはonjoさんところみてくれ。 lispuser.net/memo/lisp/2007-08-08-23-53.html
865 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:50:56 ] Lispは素晴らしい言語だと思うのですが Lispが生き残ってるのはEmacsのおかげ 実用には耐えないが一部ハッカーの趣味で使われている など否定的な意見のみが見られてイマイチ本気になれません Lispで作られたアプリケーションを教えていただけないでしょうか
866 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:04:59 ] 無理に使う必要はないよ。 アプリは↓この辺ね。 wiki.alu.org/Industry_Application それから独断で単純に割り切って無視しようとするのは、 プログラマとしてはそんな性格だよ。 よいところはどんどん吸収するようにしないと頭が固くなる。
867 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:19:56 ] >>865 emacs
868 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:38:58 ] >>866 ありがとうございます。 自分としては気に入っているのですが 周りがそんな事をいってくるので ちなみにLispが向いている方面を教えてください
869 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:56:06 ] ご自分の発言を良くお読み頂き、 用法・用量を守って、正しくご使用下さい。
870 名前:865 mailto:sage [2008/06/11(水) 18:19:03 ] >>869 >Lispは素晴らしい言語だと思うのですが これが僕の意見 >Lispが生き残ってるのはEmacsのおかげ >実用には耐えないが一部ハッカーの趣味で使われている これが周りの意見 >イマイチ本気になれません Lispいいよねって周りにいうと 「やめとけよ役に立たない」とかいわれるので・・・
871 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:27:46 ] >>868 お前の人生は何に向いてますか? >>870 Lispに向いているものをやるもんじゃなくて 解きたい問題をLispで解くもんだ。 フレームワークについての話ならともかく 汎用言語はみんなそんなもんだ。 おまえの人生や周りの事情なんか知らん。
872 名前:865 mailto:sage [2008/06/11(水) 18:33:31 ] >>871 ありがとうございます。 たとえば望んでいたreplyはLispでMacOSXで動作するGUI動画再生ソフトは 作りづらいとおもうのですが そんな感じでどちらかというとこんな感じのを作るときには 苦労するよというようなものだったのです すいませんでした
873 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:38:08 ] 自分で良い物を判断できないってのは、現代の病なのか?
874 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:51:39 ] >>872 >MacOSXで動作するGUI ここ何か意味あるの? Mac OS X 上の Lisp 環境は他のプラットフォームと遜色ないし、 Cocoa を呼び出すのも他の言語に比べて難しいとは思わないけど。
875 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:16:43 ] ぅぁ…半分寝てた時の文だw ときどきイルカ状態になるんだ…orz (特定能力だけ寝てる。脳内血行が偏る珍体質。 血流検査結果見たら昔の級友は爆笑&納得) 吊って来る… ああ、LISPって論理綺麗だな…
876 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:33:21 ] 病院行け。
877 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:44:20 ] 自分が良いと思っても周りがそうでないならばそれに迎合してしまうおれはチキンorz
878 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:47:34 ] >ぅぁ…半分寝てた時の文だw 責任転嫁がお上手ですね。 その調子で残りの人生も済むといいね。
879 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:54:32 ] >>872 mcl系をしらべたらいい。最近フリーになったし。また、 closure cl(旧openMCL)はMACのGUIに合わせてるよ。
880 名前:859 [・∀・] mailto:sage [2008/06/11(水) 20:05:25 ] >>864 さん ありがとうございました。 これから、ちょっとづつ弄くって勉強してみます。
881 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:12:00 ] >>875 pc11.2ch.net/test/read.cgi/tech/1118944895/662-666 眠い時に書きまくるなよ。
882 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:47:51 ] >>875 そのレスも半分寝てるようだな
883 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:13:57 ] >>875 その特異能力を生かして、普通のやつらの斜め上を行ってください。 きみならできる。
884 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:31:41 ] >>883 ナナメかよ!
885 名前:865 mailto:sage [2008/06/11(水) 23:15:16 ] >876-884 なんだか皆さんの雰囲気をみだしてしまったようですいません なんだか気になるので一応かいておきますが>>865 ≠>>875 ですよ
886 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:14:13 ] www.bk1.jp/product/02997001 Practical Common Lispの日本語版がとうとうでるみたいだね。原著の 評判はかなりいいので楽しみですね。 今は洋書の値段も上昇ぎみだって時だから、5000円って高価だけど 和書のほうが易くすみそうですね。 個人的には原著を持ってるのでかわないけど、訳が素晴らしければ おすすめできますよ。でもね。なまえをみてonjoさん(lispuse.netの中 の人)でしょ。それなら予約しても大丈夫だと思う。
887 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:17:02 ] 訳者も出版社も勇気あるなあ モニタに向かってPDFで読むの好きじゃないから出たら買わせてもらうよ
888 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:12:11 ] 訳書のタイトルは『実用Common Lisp』になるのかな、と思ってたけど、違ってたか。
889 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:23:41 ] 表紙が心配だな
890 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:31:58 ] まだ翻訳作業中?らしいんだが来月ってマジか?
891 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:43:13 ] Schemeと違って教科書採用もあてにできないし、数がでないから高いんだろうな…。
892 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:49:45 ] サイズは書いてないけど、原書の太さを考えるとそこそこの太さになるんじゃないか?
893 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:45:05 ] 原書が昨日届いたばかりだ。
894 名前:865 mailto:sage [2008/06/13(金) 20:01:45 ] CommonLispで使用できるライブラリはどこで確認できるのでしょうか
895 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:25:20 ] aproposとかdescribeの事? それともHyperspecの方? プロダクト探すんだったらclikiとか?
896 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:58:15 ] >>895 回答ありがとうございます。 現状では関数を羽で作っているだけなので これからCommonLispで本格的にアプリケーションを作るにあたり 利用できるライブラリは利用する方が便利ですし、 ライブラリのソースコードをみて学習することで自分の学習にもなりますので 下さったページで学んでみたいと思います。 ありがとうございました。
897 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:17:23 ] 「実践Common Lisp」の出版日は7月何日なんだろう?
898 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:25:52 ] timeマクロで,関数単位でベンチが取れますが. 値はprintで表示されてしまいますよね. これをプログラムの中に取り込んで加工したいのですが,その場合 どうすればいいのでしょうか?
899 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:38:53 ] printを再定義すればおk
900 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:14:40 ] *standard-output*に何か別のストリームつっこんで取り出しちゃえば?
901 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 07:19:49 ] time の結果なら (with-output-to-string (*trace-output*) (time ...)) print した値なら (with-output-to-string (*standard-output*) (time ...)) でどうだろう。
902 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:01:53 ] マクロで(newaddres x y z)と入力すると (setf (get 'x 'y) 'z)と属性リストに代入することができるようにする マクロはどのように実現すれば良いのでしょうか
903 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:24:32 ] (defmacro newaddres (x y z) `(setf (get ',x ',y) ',z)) だが、本当にあなたがやりたい事はマクロが必要なのかな? (defun f (x y z) (setf (get x y) z)) でもいいんじゃないの?
904 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:11:17 ] >>903 >(defmacro newaddres (x y z) `(setf (get ',x ',y) ',z)) ありがとうございます。 ',の部分がわからなかったので助かりました。 >(defun newaddres (name title contents) (setf (get name title) contents)) としたのですが 定義した後(newaddres tanaka live yokohama)とするとTANAKA has no value と言うエラーが出てしまいます。
905 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:23:30 ] それだと、tanakaというシンボルを評価した結果 == 未定義な変数TANKAを参照しちゃう。評価を止めるには、'クォートをつける。 (newaddres 'tanaka 'live 'yokohama) クォートするのが面倒だって?だが、評価を ' で ON/OFF できるっつーことはだ、↓のようにできるってこと。 (setf yokohama-list '(tanaka yamada sato steve)) (dolist (who yokohama-list) (newaddress who 'live 'yokohama)) そもそもシンボル?評価?意味不明というならまた別途説明するよ。
906 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:51:27 ] いや、結構です。
907 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:10:49 ] >>906 やめて下さいよ 違う人がレスするのは
908 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:13:59 ] そういう用途にシンボル使う時は、印字表現に注意。特に空白。
909 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:31:41 ] scをみたけど、 巷にはcでlispインタプリタを作ってみたって人は多い。逆に lispでcインタプリタを作ってみたという人はきいたことがないな。 作る必要もないものね。
910 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:58:18 ] てか不可能。
911 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:00:45 ] cでcインタプリタは昔Cマガで見たな。 c++ならまだしもcのインタプリタなんて教育用途でも微妙だと思ったが。
912 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:32:10 ] >>910 理由は? # 「性能とかの実用性は度外視して」が前提だが。
913 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:40:25 ] Cインタプリタくらいあるだろ ttp://wiki.osdev.info/?C%2F%A5%A4%A5%F3%A5%BF%A5%D7%A5%EA%A5%BF
914 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:59:40 ] 2進数を10進数に変換する関数なのですが (defun two2ten (x) (let ((n 0) (goukei '())) (loop (if (< (1- (length x)) n) (return (lsadd goukei)) (progn (push (lsadd (mapcar #'(lambda (a) (* a (expt 2 n))) x)) goukei) (1+ n)))))) と言う関数がどこかが終わらないのか15秒ほど待ってみても答えが出ません。 何処に原因が有るのかおしえていただけませんでしょうか? lsadd:与えられたリストの全要素の合計を数で返す関数 自作ですがこれは確実に動作します。 xはリスト形式で式に与えています。(1 0 0 1 1 0)の様な形式です。
915 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:41:06 ] >>914 下を見れば分かるかな。その変数 n を出力してみるといいよ。 1+ だけじゃ値は増えてないから。 cl-user(12): (setq x 10) 10 cl-user(13): (1+ x) 11 cl-user(14): x 10
916 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:59:58 ] >>715 ありがとうございます。 忘れてしまっていました。 ありがとうございます。
917 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:21:57 ] 忘れるなよ。
918 名前:デフォルトの名無しさん [2008/06/21(土) 07:42:57 ] LispでDLLを作って他のプログラムから呼び出すことはできますか?
919 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 08:10:47 ] LispWorks, ECL はできるよ。CLISP, SBCL はできない。他の処理系はしらない。
920 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:38:23 ] CommonLispのメーリングリストを開設しようと思うのですが Yahooの提供サービスで良いのでしょうか YahooIDをお持ちでない先輩がいらっしゃるといけないので
921 名前:920 mailto:sage [2008/06/21(土) 19:43:34 ] GoogleMLは広告が入らないそうなのでこちらも良さそうなのですが これについても上と同様の質問についてお答え願います。