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パワーズ
266 名前:デフォルトの名無しさん mailto:sage [05/01/27 03:13:58 ] lispでプログラムを書けという課題がでました。 ωを自然数のリストとする。 MAX(ω)=0(ωがNILのとき) ωに含まれる最大の数 例ω=(8,13、25、10)のときMAX(ω)=25 組み込み関数 LESSTHAN(n,m)=T(n<m) NIL(n≧m)を使用すること。 もしよろしければ教えていただけないでしょうか? どーも基礎がよくわかってないみたいで・・・
267 名前:デフォルトの名無しさん mailto:sage [05/01/27 05:04:48 ] 2chではなくて、学内のお友達と相談しながら 解決するのがよろしいかと。
268 名前:デフォルトの名無しさん mailto:sage [05/01/27 09:16:18 ] (defun MAX (ω) (if (null ω) 0 ((lambda (n m) (if (LESSTHAN n m) m n)) (car ω) (MAX (cdr ω)))))
269 名前:デフォルトの名無しさん mailto:sage [05/01/27 12:59:45 ] マクロって関数みたいに変数に代入できないの? (defmacro macro()()) (setq m 'macro) (a)->error 呼べないのかな
270 名前:デフォルトの名無しさん mailto:sage [05/01/27 13:15:32 ] (a)->error 間違い× (m)->error
271 名前:デフォルトの名無しさん mailto:sage [05/01/27 13:17:39 ] (defmacro foo (x) `(car ,x)) (setq a (macro-function 'foo)) (funcall a '(foo a) nil) => (CAR A)
272 名前:デフォルトの名無しさん [05/01/27 16:11:34 ] windowsで動くcmuclが完成したら、ソフトウェア業界は 変わる、と思っていますが正しいですか?
273 名前:デフォルトの名無しさん [05/01/27 16:14:28 ] >272 実現可能性とシナリオは? 市場アクションは?
274 名前:デフォルトの名無しさん mailto:age [05/01/27 16:32:14 ] age
275 名前:デフォルトの名無しさん [05/01/28 07:58:09 ] Clisp使ってます。 Clispってパイプありますか?
276 名前:デフォルトの名無しさん mailto:sage [05/01/28 09:07:27 ] >>275 30.8.2. Pipes clisp.cons.org/impnotes.html#pipe
277 名前:デフォルトの名無しさん mailto:sage [05/01/28 10:27:48 ] >>273 ごめんなさい
278 名前:デフォルトの名無しさん mailto:sage [05/01/29 19:30:21 ] (setq data '(1 2(3 4(5)))) (length 'data)->error (length '(1 2(3 4(5))) )->3 なぜ・・・?データとしてはまったく同じリストだと思うんですが
279 名前:デフォルトの名無しさん mailto:sage [05/01/29 19:49:12 ] (length 'data)のquoteが余分ですだ。だんなさま。
280 名前:デフォルトの名無しさん mailto:sage [05/01/29 19:56:15 ] サンクスです ということはlengthってマクロですか
281 名前:デフォルトの名無しさん mailto:sage [05/01/29 20:26:28 ] >>280 ハァ? シンボルにlengthを適用しようとしたからエラーになってるんだぞ?
282 名前:デフォルトの名無しさん mailto:sage [05/01/29 20:42:35 ] そうか・・・勉強してくる
283 名前:デフォルトの名無しさん mailto:sage [05/01/29 21:20:19 ] 次の患者さんどぞ〜
284 名前:ウエシマ [05/01/30 08:23:10 ] 毛が抜けるんですが・・・
285 名前:デフォルトの名無しさん mailto:sage [05/01/30 10:13:31 ] 抜けるだけの毛があったことに感謝なさい。
286 名前:デフォルトの名無しさん mailto:sage [05/01/30 15:51:35 ] ・おなにーを控える(多くても週一ぐらい) ・タバコをやめる(ただしやめることでストレス増加なら逆効果) ・2日に一回は頭を洗ってマッサージし頭皮を清潔にする ・生活リズムを整える(徹夜しない) ・風の強い場所に長くいない(そゆときは帽子着用) ・暑い場所に長くいない(タオルで小まめに汗をふき取る) ・ストレスを溜めず、感情的にならない ・水泳するときは帽子着用(プールの水は髪にあまりよくない)
287 名前:デフォルトの名無しさん [05/01/31 10:50:36 ] コンパイルしたらJAVAのクラスになるようなCLの処理系って ありませんか?
288 名前:デフォルトの名無しさん mailto:sage [05/01/31 22:54:47 ] Allegro JILとLinjくらいしか知らない。他にもあるんだろなぁ、Lisperは何でも作っちゃうから。
289 名前:デフォルトの名無しさん mailto:sage [05/02/01 11:26:22 ] >>288 ありがとございます Allegro JILとか機能的に便利だけど、金かかるのか。。。 買うしかないかなぁ
290 名前:デフォルトの名無しさん mailto:sage [05/02/01 20:54:30 ] そろそろでつね。行く人れぽよろ jp.franz.com/base/seminar-2005-02-03.html
291 名前:デフォルトの名無しさん [05/02/02 20:10:19 ] xyzzyでLispモードを使用する時、Lispの予約語の インテリセンスってどうやればよいのでしょうか?
292 名前:デフォルトの名無しさん mailto:sage [05/02/02 20:11:27 ] 誰かtuareg-modeをxyzzyに移植してください
293 名前:デフォルトの名無しさん mailto:sage [05/02/02 20:31:44 ] >>291 Lispには予約語はありません。
294 名前:デフォルトの名無しさん [05/02/02 20:45:30 ] (defun foo()()) <foo> (undefun 'foo) <undefun-foo> のような一度defunしたものをリリースするundefunのような 関数ってCLにありますか?
295 名前:デフォルトの名無しさん mailto:sage [05/02/02 20:51:48 ] intern unintern
296 名前:デフォルトの名無しさん mailto:sage [05/02/03 00:02:20 ] >>293 ()は予約記号。
297 名前:デフォルトの名無しさん mailto:sage [05/02/03 01:00:32 ] ちゃんとした処理系なら括弧もリーダーマクロで変えられるんじゃなかったか m4みたいに
298 名前:デフォルトの名無しさん [05/02/03 22:13:49 ] CLにはJAVAのHashMapみたいなものはありますか? (hashmap obj "KEY" "OBJECT") みたいな
299 名前:デフォルトの名無しさん mailto:sage [05/02/03 22:35:42 ] JAVAのHashMapとやらの機能を教えちくり。
300 名前:デフォルトの名無しさん [05/02/03 23:09:12 ] HashMap hobj = new HashMap(); String key "KEY"; String object = "OBJECT"; hobj.put(key,object); System.out.println( hobj.get(key) );//"OBJECT"が表示される こんなんです
301 名前:デフォルトの名無しさん mailto:sage [05/02/04 00:14:26 ] ハッシュテーブルあるよ。 データ構造でなくJavaのHashMapが質問に出てくるところがなんだかなー。
302 名前:デフォルトの名無しさん mailto:sage [05/02/04 00:46:59 ] 一旦定義したメソッドに引数を追加して定義しなおそうと思ったら Attempt to add the method #<STANDARD-METHOD ほげほげ> to the generic function #<STANDARD-GENERIC-FUNCTION ほげほげ>, but the method has "more" optional arguments than the generic function. と怒られてしまいます。開発中にいちいち処理系を起動しなおすのはかったるいので なんとかならないかと思うんですが、どうすりゃいいんでしょ。
303 名前:デフォルトの名無しさん mailto:sage [05/02/04 08:30:38 ] >>302 ANSI CLのdefgenericの説明では、defgenericの:methodオプションで定義した メソッドと、defmethodで定義したメソッドは区別されるみたい。 defgenericの場合はラムダリストを変更して再定義することが許されている様子。 GNU CLISPではエラーになったけど。CMUCLでは可能。 (defgeneric foo (a b) (:method (a b) (list a b))) => #<GENERIC-FUNCTION FOO> (foo 1 2) => (1 2) (defgeneric foo (a b &optional c) (:method (a b &optional c) (list a b c))) => #<GENERIC-FUNCTION FOO> (foo 1 2 3) => (1 2 3) あとは、find-methodとremove-methodでメソッドを削除してからdefgenericとか。
304 名前:デフォルトの名無しさん mailto:sage [05/02/04 14:09:51 ] ふむふむ。 今度はfind-method/remove-methodでやってみます。 今まではシンボルごとuninternしちゃってました。 どうもありがとうございました。
305 名前:デフォルトの名無しさん mailto:sage [05/02/04 16:10:05 ] 継続って何ですか?
306 名前:デフォルトの名無しさん mailto:sage [05/02/04 16:11:50 ] >>305 テンプレ嫁 pc5.2ch.net/test/read.cgi/tech/1100229366/
307 名前:デフォルトの名無しさん [05/02/05 22:42:02 ] lispで簡単(テキストファイルの送受信程度)なネットワークプログラム作りたいのですが、 その辺の情報の載ったサイトとか本ありませんか?
308 名前:デフォルトの名無しさん mailto:sage [05/02/05 22:56:09 ] perlでも使えよ
309 名前:デフォルトの名無しさん mailto:sage [05/02/05 23:06:09 ] まずは処理系のマニュアルを眺めてみるのがよろしいのでは。
310 名前:デフォルトの名無しさん mailto:sage [05/02/06 17:36:15 ] CLISPでMOPがサポートされtらしいのですが、 どうやって使うものなんでしょうか?
311 名前:デフォルトの名無しさん mailto:sage [05/02/06 18:48:22 ] MOPってMeta Object Protocolのこと? もしそうなら使い方がわからない時点で貴方には必要のないものだと思うのですが。 AMOPは読破・理解されましたか?
312 名前:デフォルトの名無しさん mailto:sage [05/02/06 21:10:14 ] >>310 MOPはオブジェクトシステム(CLOS)をカスタマイズするときに使います。 CLOSを実装するのに必要となる、ある程度の動作が規定された一連のジェネリック関数が存在し、 それらのメソッドを独自に定義することにより、カスタマイズを行います。 たとえば、永続化をサポートしたオブジェクトをシステムに組み込むなんて ときに使うこともあれば、CLOSに標準化される前の古いオブジェクトシステムを エミュレートしたりするときに使うこともあるでしょう。 MOPの仕様は公開されているので読んでみてはいかが? www.lisp.org/mop/index.html
313 名前:デフォルトの名無しさん [05/02/07 20:28:56 ] dylanという言語は素晴らしい。 Lispより素晴らしい。 何よりIDEが素晴らしい。 と、言語マニアな友人が言っていた。 マジかぁ?
314 名前:デフォルトの名無しさん mailto:sage [05/02/07 23:04:49 ] >>313 >dylanという言語は素晴らしい dylanって何?
315 名前:デフォルトの名無しさん mailto:sage [05/02/07 23:44:28 ] まあマカの言う事だし
316 名前:デフォルトの名無しさん [05/02/07 23:58:42 ] ぬるぽぅ?
317 名前:デフォルトの名無しさん mailto:sage [05/02/08 21:35:26 ] >>314 dylan pc5.2ch.net/test/read.cgi/tech/1004242854/
318 名前:デフォルトの名無しさん [05/02/13 16:57:45 ] append という関数について質問なのですが、 (append '(1 2) '(3 4)) => (1 2 3 4) 仕様では前半の '(1 2) は新しいセルを作って内容を コピーするらしいのですが、なんで前半の最後を後半の 最初に繋げるだけじゃ駄目なんですか?
319 名前:デフォルトの名無しさん mailto:sage [05/02/13 17:37:26 ] CL-USER> (setf x (list 1 2)) (1 2) CL-USER> x (1 2) CL-USER> (append x (list 3 4)) (1 2 3 4) CL-USER> x (1 2) CL-USER> (nconc x (list 3 4)) (1 2 3 4) CL-USER> x (1 2 3 4) CL-USER>
320 名前:デフォルトの名無しさん mailto:sage [05/02/13 18:26:58 ] 319を見て318はダメな理由が思いつくかしらね、と。
321 名前:デフォルトの名無しさん mailto:sage [05/02/14 08:40:44 ] >>318 > なんで前半の最後を後半の最初に繋げるだけじゃ駄目なんですか? それにはnconcという別の関数が用意されている(「駄目」とかじゃなく 別々の使い方に対応するためにappendとnconcが用意されている)。 なぜappendが現在の仕様になっているかというと、 あるリストを参照している変数や自分の一部として参照しているLisp objectは 複数存在する可能性があって、そういうリストを1つの参照元が勝手に変更すると、 そのリストが変更されるとは想定していない別の参照元で混乱が生じるときがあるため。 (setq x (list 1 2)) => (1 2) (setq y (cons 0 x)) => (0 1 2) ;; yが参照しているリストは勝手に変更されないとプログラマーは想定しているとする。 (setq z (nconc x '(3))) => (1 2 3) y => (0 1 2 3) ;; えっ! (0 1 2)と変わっとるやないけ! なぜnconcが用意されているかといえば、appendより速度、空間的なコストが安くあがる 可能性が高いため。 こんなんでどうでしょう?
322 名前:デフォルトの名無しさん mailto:sage [05/02/14 08:44:13 ] 上の例での動作がプログラマが望むものであるときもnconcを使うよね。
323 名前:デフォルトの名無しさん mailto:sage [05/02/14 11:20:10 ] >>318 > (append '(1 2) '(3 4)) => (1 2 3 4) '(1 2), '(3 4)は定数なのでテキストセグメントなど変更できないメモリ領域に とられる可能性がある。そうするとappendの代わりにnconcを使って前半のリストを 変更すると、bus errorで落ちる。
324 名前:デフォルトの名無しさん mailto:sage [05/02/14 23:28:54 ] 気味が悪いくらい皆親切だな。何かあったのか?
325 名前:デフォルトの名無しさん mailto:sage [05/02/14 23:30:05 ] >>324 実は童貞だけどチョコレートもらえたんだ。
326 名前:デフォルトの名無しさん mailto:sage [05/02/24 23:09:02 ] ML使いの香具師いる?
327 名前:デフォルトの名無しさん mailto:sage [05/02/25 00:41:40 ] MultiLanguage
328 名前:デフォルトの名無しさん mailto:sage [05/02/27 13:28:46 ] >>326 Ocaml ならちょくちょく使うよ.
329 名前:デフォルトの名無しさん [05/02/27 16:41:12 ] (setq n '(func foo)) n (defmacro macro(x) `(defun ,(car x) (y) (print y) ) ) このマクロがエラーになるのですがどうしてでしょうか? `(defun ,(car n) (y) (print y)) これと同じ事をしているつもりなんですが・・・
330 名前:デフォルトの名無しさん mailto:sage [05/02/27 17:35:58 ] 自己解決しました お騒がせしました
331 名前:デフォルトの名無しさん [05/03/01 20:56:04 ] 引数がアトム型なら"atom"、そうでなければ"false"と表示するマクロを 作成したいんですが、 (defmacro macro(x) `(if,(atom ,x) (print "atom") (print "false") ) 上のようなマクロで動くんですが、 展開したときに (macroexpand-1 '(macro 'a)) -> (print "atom") となるようしするにはどうすればいいんでしょうか??
332 名前:デフォルトの名無しさん mailto:sage [05/03/01 22:23:19 ] ifを外側に出せばいいのでは。 `(print ,(if (atom x) "atom" "false"))
333 名前:デフォルトの名無しさん mailto:sage [05/03/01 22:32:27 ] (if (atom x) '(print "atom") '(print "false"))
334 名前:デフォルトの名無しさん mailto:sage [05/03/02 01:15:22 ] >>332 、>>333 ありがとうございます。 マクロは凄い機能ですね、昔C++でどうしてもできなくて挫折した 機能をわずか数行で実現できました。
335 名前:デフォルトの名無しさん mailto:sage [05/03/02 03:02:22 ] scheme と common lisp ってどのくらい違うのでしょうか? なにが決定的に異なるかでもいいですが。 schemeを覚えたからといってcommon lisp のプログラムがかけるとか、そういうことは無いのですか?
336 名前:デフォルトの名無しさん mailto:sage [05/03/02 03:30:08 ] |← これくらい →|
337 名前:デフォルトの名無しさん mailto:sage [05/03/02 04:14:03 ] >>355 個人的には、最初にぶつかる大きな違いは define-syntax と defmacro の違いかなあと思います。 call/cc は……scheme で call/cc 使いこなせるくらいになったら、 common lisp の特殊形式諸々で何とかできない……のかなあ。 私は call/cc 使いこなしてるわけじゃないので何とも。 clos も plt やら gauche を使えば、まあ、それなりに、て気もするし。 名前空間辺りは、好みはあっても、基本的にはすぐに慣れるでしょう。 たまにうっかり #' 付けたり付け忘れたりしますけど。あと funcall とか。 まあ、scheme やってればすぐ common lisp で書けるようなるかっていうと、 やっぱり慣れるのに時間は必要でしょうけれど、やってないよりは遥かに楽に入れるとは思います。
338 名前:デフォルトの名無しさん mailto:sage [05/03/02 05:25:45 ] call/ccなんて使わない奴は全く使わないでしょ
339 名前:デフォルトの名無しさん [05/03/04 17:44:07 ] lispで正規表現ってできますか? Clispでうありたいんですけど。。。
340 名前:デフォルトの名無しさん mailto:sage [05/03/04 18:57:18 ] >>339 はいな。 clisp.cons.org/impnotes.html#regexp
341 名前:デフォルトの名無しさん mailto:sage [05/03/04 19:01:02 ] >340 さんくすです
342 名前:デフォルトの名無しさん [05/03/05 12:43:02 ] >>337 schemeな人が「Lisp?(プゲラ」みたいなことよく言ってるけど、 こうしてみると、別にそれほどLispが劣ってるようには見えないなあ。 大して違わないじゃん。
343 名前:デフォルトの名無しさん mailto:sage [05/03/05 13:31:47 ] 趣味でいやなことやんなくていいときはScheme 仕事で泥臭いことも泣く泣くやらなきゃいけないときはCommon Lisp フリーソフト作ってみんなに自慢したいときはEmacs Lisp
344 名前:デフォルトの名無しさん mailto:sage [05/03/05 14:56:15 ] 別に泣く泣くとか泥臭いとか言うほど違わないじゃん。 ちっとも泥臭くない。
345 名前:デフォルトの名無しさん mailto:sage [05/03/05 16:46:25 ] >>343 仕事で泣く泣くCommonLispなんて選択する奴いるのかね。
346 名前:デフォルトの名無しさん mailto:sage [05/03/05 17:31:16 ] こんなこと言うと怒られるかも知れんが、 lispとschemeで相違点あるのか? ほとんど同じようなもんじゃないのか?
347 名前:デフォルトの名無しさん mailto:sage [05/03/05 19:10:12 ] それ以上はスレ違い このスレ、なんのために立てたんだ?
348 名前:デフォルトの名無しさん mailto:sage [05/03/05 19:11:19 ] >schemeな人が「Lisp?(プゲラ」みたいなことよく言ってるけど、 どこで言ってたのか教えてくれよ(プゲラ
349 名前:デフォルトの名無しさん mailto:sage [05/03/05 20:39:24 ] 正直言って Scheme の define-syntax はいまいち馴染めん。 call/cc も catch/throw で代用できるケースしかあまり使わない。 (そうでないケースで使うと極端に効率の悪い処理系もある) srfi の実装も結構まちまちで、ポータビリティを考えると結構めんどくさい。 ってなわけで、最近は Scheme より Common Lisp を使うことが多いね。
350 名前:デフォルトの名無しさん mailto:sage [05/03/05 23:32:23 ] Lisp と Scheme を比較って、意味がわからんぞ。 Lisp +- Common Lisp +- Scheme +- Emacs Lisp +- その他の Lisp 方言 :
351 名前:デフォルトの名無しさん mailto:sage [05/03/05 23:48:15 ] LOOPマクロが嫌いな奴はみなSchemeに流れたよ
352 名前:デフォルトの名無しさん mailto:sage [05/03/06 00:01:58 ] >>350 このスレの流れは >>335 から派生しているのだよ。
353 名前:デフォルトの名無しさん mailto:sage [05/03/06 00:40:06 ] >>351 あぁ、あれか。あれは Common Lisp 派の漏れでも醜いなと思う。 CLtL2 を読んだとき目を疑ったよ。Common Lisp の汚点だ。w 漏れ的にはループは do がデフォかな。loop は無条件繰り返しのときだけ使う。
354 名前:デフォルトの名無しさん mailto:sage [05/03/06 00:44:47 ] >>349 CommonLispにだってperlやrubyみたいな単一の実装があるわけじゃないんでしょ? だったらポータビリティの問題はschemeとかわらないんじゃない?
355 名前:デフォルトの名無しさん mailto:sage [05/03/06 00:54:25 ] んなこたあない
356 名前:デフォルトの名無しさん mailto:sage [05/03/06 00:57:40 ] >>354 Common Lisp なら言語で定義されている範囲で済むことでも、Scheme の場合は ちょっとした便利関数でも R5RS では定義されてないから結局 SRFI のお世話に なってしまう。そのときの処理系間のばらつきが割と大きいように思えるということ。 別に Scheme が嫌いなわけじゃないよ。念のため。
357 名前:デフォルトの名無しさん mailto:sage [05/03/06 01:26:26 ] Schemeってモジュールやオブジェクト指向といった、現代のプログラミングでは 欠かせない重要なことすら処理系依存じゃん。 そういうのは嫌なとこだよね。
358 名前:デフォルトの名無しさん mailto:sage [05/03/06 06:10:36 ] SRFIでライブラリの標準化を進めるのはいいが、 定義された関数仕様が気に入らない マクロ覚えたて厨が考えたみたいなマクロとか、 どこぞの処理系の実装そのまんまとか ところで、ここはCommonLispスレじゃなかったのか
359 名前:デフォルトの名無しさん mailto:sage [05/03/06 11:49:49 ] まぁ対比することで Common Lisp の良さが見えてくることもあるからいーじゃない。
360 名前:デフォルトの名無しさん [05/03/06 20:03:24 ] ところでおまいらどの処理系使ってる? ちなみに漏れは CLISP だが。
361 名前:デフォルトの名無しさん mailto:sage [05/03/06 20:27:09 ] ACL trial
362 名前:デフォルトの名無しさん [05/03/06 22:20:39 ] やっぱりemacsかな 日本語とデバッガと独自関数の便利さから。 しかしcommon lispと結構違うのが痛い。 日本語と環境(デバッガ)とフリーという三つの条件入れるとこれしか選択肢ないんだよな。 Schemeは全滅。
363 名前:デフォルトの名無しさん [05/03/06 22:51:10 ] >>362 最近の CLISP は GNU libiconv 使ってて国際化は結構充実しているっぽいよ。 clisp.cons.org/impnotes/encoding.html
364 名前:デフォルトの名無しさん mailto:sage [05/03/07 05:40:28 ] clispいい。 eclipseみたいな環境があればもっといい。 エディタは飽きた。
365 名前:デフォルトの名無しさん mailto:sage [05/03/07 09:20:21 ] CommonLispではまともなのはCLISPしか選択肢ないよな。 環境が多少悪いかもしれないけどこれしかないんだから 我慢するしかない。
366 名前:デフォルトの名無しさん mailto:sage [05/03/08 06:21:06 ] そうか、CLISPはIDEがないのか。 JAVAでさくっと作ってみるかな。。。