1 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:41:07 ] 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))
720 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:36:45 ] やはりschemerの方が知能が上みたいですね。 CommonLispは小手先だけ器用になりそなイメージです。
721 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:48:11 ] i < おまえより知能の高い酸のブロッブを知っているぞ
722 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:51:27 ] >>719 毎回比較したがるクセは直したほうがいいね
723 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:10:10 ] 関数定義が (define hogehgoe (lambda (x) ...) ってのがムカツク。引数の数がちょっと見ではわかりづらい。 しかし、(define (hogehoge x) ...)ってのはなんとなく呼び出した結果を定義してるみたいで嫌だ。 (defun hogehoge (x) ... は良い。hogehoge っていう(関数)シンボルを定義してるんだなーって感じがしてわかりやすい。
724 名前:715 mailto:sage [2007/10/17(水) 00:27:32 ] 回答していただいてありがとうございます。 リストは基本的なデータ型しか入れられないんですね。 だから関数を入れると型が不明のシンボルとして扱われてしまうと。 勉強になりました。ありがとうございます。
725 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:49:47 ] >>724 なんかちょっと誤解してるみたいだけど、まあそれはおいといて、 schemeでわかんなくなったら本スレの方においで。 このスレの住人はschemeコンプレックス発動で それどころじゃないみたいだし。
726 名前:デフォルトの名無しさん [2007/10/17(水) 00:50:29 ] common lispで gauche の util.math みたいなのありませんか? 無くても自分で作るんですが。 arnesiのmatcherが惜しい。
727 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:57:43 ] 質問の仕方がなってないな gaucheのutil.mathとやらが何を提供してるのかまず書け
728 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 01:52:07 ] どっちが上とか、コンプレックスなんて持ってるのは初学者だけだよ。 ある程度やってる人は、Common Lisp も Scheme わかってる。 どの言語が上とか下とかじゃなくて、用途によって使い分けてるだけ。
729 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 01:59:05 ] >>723 コード中で(func args)っていう呼び出しを思いついたら、 そのまま(func args)をコピってきて(define (func args) 〜)とできるから むしろ便利だと思うけどな。そもそも構文唐なわけだし。 defunは括弧の位置を修正しなきゃいけない。
730 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 02:19:14 ] >>727 申し訳ない。 ML likeなパターンマッチライブラリで・・・と clikiに似たのがあったので終了します。 ググっても無くググ子っても見付からないのでつい聞いてしまった。(code search)
731 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 10:27:00 ] >>716 715では無いが>>715 をマクロでやろうとするとどうなるんだ?
732 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 13:08:09 ] (defun keisan1 (l) (list (second l) (first l) (third l))) (defmacro keisan (l) (keisan1 (second l))) (keisan '(1 + 1))
733 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:27:18 ] (defmacro m (lst) `(,(second lst) ,(first lst) ,(third lst))) (m (1 + 2)) => 3
734 名前:デフォルトの名無しさん [2007/10/18(木) 00:29:10 ] WINのGCLで一文字入力を待つのはどうやるのでしょうか CLISPだとread-charでなんとなくできてしまうのですが GCLだと待ってくれません。
735 名前:デフォルトの名無しさん [2007/10/18(木) 06:38:01 ] (dotimes (x 10) (progn (princ "hello") (sleep 1) )) などとやって1秒ごとに表示させたい場合GCLではどうやれば いいのでしょう。CLISPだとできるのですが GCLだと10秒後にまとめて表示されてしまうのでうまくいきません。
736 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 07:08:21 ] バッファをフラッシュしなさい。 force-output。
737 名前:デフォルトの名無しさん [2007/10/18(木) 10:45:26 ] ありがとうございます。 1秒ごとにちゃんと止まりました。 (dotimes (x 10) (progn (princ "hello") (read-char) )) みたいなことはできないのでしょうか。一個表示するたびに ユーザがなにかキーを押すまで待たせたいのですが、 LISP的には普通どうやるのでしょうか。 prognはLISP的にはよろしくないのでandをつかえ、と 本に書いてありましたが、 ということはLISPは逐次処理はタブーなのでしょうか・・・?
738 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 14:11:17 ] >>737 > prognはLISP的にはよろしくない なんでよくないの?
739 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:43:18 ] >>737 Common Lisp で文字単位の入力を行う互換性のある方法は無いので、 今のところは read-line を使って Enter 入力待ちで妥協しておくのがいいよ。 ところで今更なぜ GCL?
740 名前:デフォルトの名無しさん [2007/10/18(木) 15:56:13 ] andにするべきだそうです。
741 名前:デフォルトの名無しさん [2007/10/18(木) 15:58:14 ] WINだとマルチバイトのファイル名と(SYSTEM)がつかえるのが便利ですね
742 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 23:23:50 ] GCLって今更な処理系なんですか?
743 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 00:43:51 ] うんそうだね
744 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 10:46:00 ] 今年の7月まではcommitが続けられてたし、今更って言う程終了したプロジェクトでもないぞ。 確かにこのまま停滞が続く可能性は否定できないが。
745 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 12:05:13 ] LISP作ってる人ってなんだか Windowsではあきらかにやる気ないですよね。
746 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:01:21 ] Lisp に限った事じゃ無いと思うけど。
747 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:57:03 ] 切ないですね。
748 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 14:37:22 ] Windowsみたいな処理系でやる気を出せというのが難しい。 まずはUNIX処理系で形にしておいて、それをWin用にポーティングするのが常に賢い。 Microsoftは答えじゃない。Microsoftは質問だ。そして、答えはNOだ。 -- Erik Naggum
749 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:31:59 ] OSを処理系と呼ぶ人も珍しいね。
750 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 17:46:03 ] >>745 逆。Windows の人たちが Lisp に興味ないんだよ。 ほとんどの Lisp 処理系の開発者は仕事でやってるわけじゃないので 他のプラットフォームへの移植までは難しい。 Windows プログラマから貢献がないとどうにもならないわけ。 自分の例で恐縮だが、俺程度でも SBCL の開発に手を出したら FreeBSD での問題はずいぶん減ったし、thread や amd64 も 動くようになった。 どこの処理系も人材難だから、Windows プログラマが一人参加 するだけでも状況はずいぶん変わるはずだよ。使いたい処理系が Windows でうまく動かないって思ってる人は、その処理系のソースを 眺めてみたら?
751 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 19:50:18 ] Unix系でちゃんと動いてる処理系が多いのは、それが簡単だから。 Win32でちゃんと動かすってのは結構大変なんだよ。設計がぐちゃぐちゃだから。 いっそのこと .NET CLR 用に作るとか考えるほうが建設的な気がするな。
752 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:09:46 ] >>750 =旧よろずやの中の人
753 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:14:50 ] >>750 FreeBSD ユーザーな Lisper の一人としてあんたには感謝しているぜ! SBCL のスレッドに釣られて Linux に走る Lisp 仲間は多かったからな。
754 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:18:36 ] >>752 >>750 は SBCL だろ? よろずやの人は CLISP じゃなかったっけ。
755 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 20:55:29 ] >>754 よろずやの人はcmucl -> sbclメイン他いろいろ です....って何かストーカーみたいだなw
756 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:15:31 ] >>744 つうか数人のデベロッパしかないLisp系プロジェクトでは数ヶ月〜数年commitがないなんて良くあること。 基本的にLispのみで喰えてる人はいないんで、みんな余暇にしか作業しないからな。 先にRubyとかを見ていると止っているように見えるのかもね。 >>755 754はデベロッパーとしての話なんじゃないか。
757 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 00:11:05 ] まあGCLはいろいろあったからね
758 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:00:01 ] って何?
759 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:22:30 ] 確かメインの開発者が事故で亡くなられた。
760 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:28:23 ] GCLってGNU Common Lisp?
761 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 01:45:23 ] (質問は)そっちかよ…
762 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 02:07:02 ] >>759 >亡くなられた 偉いなw 俺だったら"逝っちゃった"とか平気で書きそうな気がorz
763 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:33:05 ] KCL な神たちはかかわってないの? GCL になってからは
764 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:08:11 ] かかわってない
765 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:11:49 ] LISPってリアルタイムの制御とかには使えるんですか。
766 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:47:41 ] ゲームとかロボットで使ってる例はあるけど GC とメモリフットプリントの問題を何とか しなくてはいけない
767 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 18:28:20 ] ロケットか衛星の制御に使ってて宇宙空間にあるのを地上からデバッグした という話がどっかにあった。
768 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 00:36:44 ] なんでもLispなんだよ あっちに見えてる掃除用ロボットだってそうだよ 再帰できたらやりてえんだよ おれ人工知能が書けるほどハッカーになれねえかな 計算機科学の巨人だよ でもそうなったら自分で作った知能とやっちゃうかもしれねえな 機械だって色っぽいよお
769 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:30:51 ] リストをシャッフルする以下のような関数を書いてみたんですけど、コンスがあったりしてあんまり上手くないと…… 他に上手い書き方ってないでしょうか? (defun shuffle (lst) (labels ((shffl (lst acc) (if (null lst) acc (let ((*random-state* (make-random-state t)) (len (length lst))) (let ((rand (random len))) (let ((nthrand (nth rand lst))) (shffl (remove nthrand lst :count 1) (cons nthrand acc)))))))) (shffl lst nil)))
770 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 22:49:39 ] >>769 破壊的にやってみた (defun shuffle (list) (let ((st (make-random-state t)) (len (length list))) (dotimes (i len list) (rotatef (car (nthcdr (random len st) list)) (car (nthcdr (random len st) list))))))
771 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 20:25:05 ] ありがとうございます。参考にします。
772 名前:デフォルトの名無しさん [2007/10/25(木) 22:56:58 ] 8パズルを盲目的探索、深さ優先探索、幅優先探索を用いて解け 盲目的探索 初期状態#(8 3 1 0 4 7 6 5 2) 深さ優先探索 初期状態#(0 8 1 4 3 7 6 5 2) 幅優先探索 初期状態#(4 8 1 0 3 7 6 5 2) この3つの目標状態は#(1 2 3 4 5 6 7 8 0)とする 実行フォームは(time...)で囲むこと この問題が全くわかりません。。。どなたかお願いします
773 名前:デフォルトの名無しさん [2007/10/25(木) 23:35:20 ] SBCLに組み込まれている関数のリファレンスとかありませんか? あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・ →トップレベルで (setf xxx 111)で定義したxxxの一覧とか
774 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:57:23 ] HyperSpec
775 名前:773 mailto:sage [2007/10/25(木) 23:58:15 ] 自己レスだが、リファレンス見つけた 全部英語だが・・・ orz ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node1.html#SECTION00100000000000000000 >あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・ >→トップレベルで (setf xxx 111)で定義したxxxの一覧とか ↑これはご存知のかた教えてください m(_ _)m
776 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 01:32:57 ] (loop for s being the symbols in *package* if (boundp s) collect s) とか?
777 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 16:55:01 ] 777ゲット!
778 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:24:23 ] 与えられた引数が文字列であるか数値であるかを判断する…ってのはどないしたらいいんでしょうか。。
779 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:29:18 ] numberpとかstringpじゃだめなの?
780 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:33:16 ] >>779 ありがとうございました。
781 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:36:22 ] Lispからテーブル形式のデータを出力して、エクセルなどで開いたり、逆に表形式のデータを読み込んで変数に値を貼り付けたりしたいのですが、そういうことは可能なのでしょうか。 Lispは、Allegro Common Lispを使っています。
782 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:53:10 ] >>781 CSV
783 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:35:10 ] CSVファイルを読み書きするプログラムを書けばいいんですね。 頑張ってみます。ありがとうございます。
784 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:19:42 ] 2つ以上続くアルファベットを、文字列に変換するにはどうしたらいいですか。 例えば以下のように。 abc -> "abc" coerseだと一文字の場合しか変換できなくて困ってます。
785 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:28:39 ] (string 'abc) "abc" とか (format nil "~A" 'abc) "abc" とか? xyzzyだとできるけど、他のはわからん できないならスレ違いすまんw
786 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 00:32:07 ] >>784 エスパーレスすると、君の知りたいのは symbol-name
787 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 15:32:34 ] >>785 string使えました。ありがとうございます。 >>786 symbol-nameで、やりたかったことができました。 勉強不足ですみません。
788 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 21:48:52 ] Lispって何ができますか?
789 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 22:33:52 ] プログラムの記述ができます
790 名前:デフォルトの名無しさん [2007/11/05(月) 01:29:11 ] 初心者に適した本はない? もしくはサイトでもOK。 興味が沸いてきた。
791 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:34:58 ] usir.kobe-c.ac.jp/users/miura/2001/Sc289/index.html
792 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:44:58 ] いまANSI Common Lisp読んでる
793 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:54:11 ] >>791 GIFアニメが鬱陶しくて集中できないw
794 名前:デフォルトの名無しさん [2007/11/10(土) 17:44:40 ] www.ibm.com/developerworks/jp/opensource/library/os-eclipse-lispcusp/index.html きたぁぁぁぁぁぁっぁぁぁぁぁぁぁぁlっぁああああああぁぁぁぁl!!!!!!!!!!!!!!!!!!!!!!
795 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 07:56:47 ] >>794 I love emacs だけど Cusp は気になるなー。
796 名前:デフォルトの名無しさん [2007/11/11(日) 10:52:05 ] 気になるが、本スレ向けの話題じゃね?w
797 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:00:05 ] 本スレは最近調子がわるいのだ
798 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:10:04 ] Eclipse自体が重いうえに、ちょっとした拡張にも手間がすげーかかるんで正直あんまり魅力を感じない…。 でもEmacs使わない層には評判いいね。見た目とか、IDEをマウスで操作したい層にはいいのかも。
799 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:20:48 ] Emacs + slimeで十分だろ,常識的に考えて...
800 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:02:27 ] JavaとかC++とかそのへんの、人間が面倒な手間を強要される言語だと かなり便利なんだよ、IDE。
801 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:45:43 ] >>799 emacsの代わりにeclipseなだけで基本slimeだから エディタとのインターフェースにelisp使うかjava使うかってだけな話だよねぇ?
802 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:15:11 ] newlisp使ってる香具師いる?
803 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:50:35 ] CMUCLやSBCLでPOSIX Pipeなどを使って外部プロセスと データのやり取りをするにはどうすればいいのでしょうか?
804 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 11:09:27 ] doxygen みたいな自動ドキュメント化ツールってありますか? 日本語が使えると嬉しいのですが.
805 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:11:15 ] >>804 作ればいいだろ。 それがLispクオリティ
806 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:25:20 ] 確かに Lisp でなら3日で作れそうな気がするな 気がするだけだがw
807 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:43:22 ] >>806 (loop for x being each symbols in :mypkg when (and (fboundp x) (eql (symbol-package x) (find-package :mypkg))) collect (list x (documentation x 'function))) とりあえずドキュメント文字列取りだしたから、後は任せた
808 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:30:25 ] >>804 doxygenを使えばいいのかと 日本語も使えるわけなんだし。
809 名前:804 mailto:sage [2007/11/20(火) 00:25:15 ] 質問した私がアホでした。皆様ありがとうございます。 凝った事をしないで自分専用のツールにするんだったら、 html ぐらいまでは簡単に出来ますね。 >>807 パッケージの中の定義済みシンボルもそうやってすれば取り出せるんですね。
810 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 14:58:45 ] PracticalCommonLisp の第22章だけ訳してみたんだけど、 投下してみるべき? それともチラシの裏に留めるべき?
811 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:09:52 ] とりあえず投下してみるよろし。
812 名前:810 mailto:sage [2007/11/20(火) 18:43:39 ] ttp://www.uploda.org/uporg1121370.zip.html 機械翻訳並みでもよければ…
813 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 06:41:28 ] パッケージ a と b を両方共存させる方法はないですか? (in-package a) (in-package b) とすると、a のパッケージで定義されたシンボルが 未定義になってしまいます。
814 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 06:47:23 ] もうひとつ。異なったディレクトリにあるパッケージを、 C の include, libxxx.a の仕組みの様に使う一般的方法はありますか? 今の所以下の様にしていますが、allegro でしか使えません。 (setq system:*load-search-list* '(:first (:newest-do-compile #.(make-pathname :type "fasl") #.(make-pathname :type "cl")) (:newest-do-compile #.(make-pathname :directory "~/src/lib-lisp" :type "fasl") ...
815 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 11:50:47 ] >>812 もっかいうpたのむ
816 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 13:12:38 ] 俺からもうpたのむ 通報するから
817 名前:810 mailto:sage [2007/11/22(木) 18:44:50 ] >>815 物持ちのいいうpろだ探し中 >>816 原著がネットで公開されててもまずいかなやっぱり
818 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 19:04:18 ] 基本的には、原著作者が、翻訳して公開することを明示的に許可してないと ×
819 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:16:36 ] >>816 どうでもいいだろ,地下文章なんだから 堂々とWebに公開したらそりゃまずいだろうけど pass付きzipで短期間だけ公開なら問題ないだろ
820 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:54:34 ] lions' 本も現在なら ファーストコピーのスキャン画像が流通するのかしらん