1 名前:デフォルトの名無しさん [2011/07/06(水) 17:15:15.55 ] 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) (url pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4) (url pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5) (url pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6) (url hibari.2ch.net/test/read.cgi/tech/1270370267/l50 :part 7) □テンプレート置き場□ ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
643 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 14:00:11.39 ] emacs23+clisp+slimeの環境でcommon lispやってるんだけど 入力するとこの>より前がBreak 1 SWANK-LOADER[2]>ってなってるんだが これだと何かまずいのかな? みんなCL-USER>ってなってるみたいなんだが
644 名前:デフォルトの名無しさん [2011/12/20(火) 15:25:34.48 ] lispboxのwindows版を落としたはいいものの インストール方法がわかりません;
645 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:41:50.55 ] >>644 公式ページを辞書片手に訳せ
646 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:42:53.92 ] >>643 多分、起動時に何らかのエラーが出てると思われるので、 *inferior-lisp*バッファで出力を確認することを勧める。 >>644 ファイルを展開したら出てくるlispbox-0.7を適当な場所に放りこんで、 その中のlispbox.batを実行でハッピー。
647 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:34:44.51 ] >>646 ありがとうございます!
648 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:19:08.23 ] CCLとsbclで自身のファイル(test.lisp)のファイル名を取得するには どうすればよいでしょうか?
649 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:59:41.07 ] >>648 compile-file前提なら (defvar *file* #.*compile-file-pathname*) でいける気がするけど、REPLとは相性が悪いと思うので、お勧めしない。 具体的にはどういうことがしたいの?
650 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 02:31:49.09 ] >>649 自分のファイル名に.exeをつけたパスで 実行ファイルを作成しようとしました test.lisp->test.lisp.exe hoge.lisp->hoge.lisp.exe こういう風にです
651 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:04:40.92 ] >>650 save-applicationとかsave-lisp-and-dieは実行すると処理系が終了するけど、 その辺りの考慮は大丈夫? その辺はばっちり考慮していて、インタラクティブに評価するときに注意するなら、 ある種のkludgeとして>>649 を使えば良いと思う。自分は他の方法は思い付かない。 そのアプリケーションの詳しい機能が分からないので何とも言えないけど、 あるいは、makeで拡張子を利用したルールでビルドした方が楽かもしれないよ。
652 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:17:25.65 ] >>651 >あるいは、makeで拡張子を利用したルールでビルドした方が楽かもしれないよ。 その手を考えていませんでした。ご指摘ありがとうございます。
653 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 02:56:58.14 ] Common Lispの勉強に役立つサイトでおすすめのところを教えてください。 clispを入れて、カーとクダーは覚えました。他にどんな関数があるか知りません。 末尾再帰とか以前に再帰がわかりません。CLOSに興味があります。
654 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 03:17:56.14 ] >>653 www.geocities.jp/m_hiroi/index.html あとはこのスレのテンプレとか見て
655 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:33:27.39 ] >>654 ありがとうございます。参考にさせていただきます。
656 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:37:27.23 ] 指定したファイルの更新時刻を変更するにはどうすればよいのでしょうか 取得するのは file-write-date でできましたが 任意の時刻に書き換える方法がわかりません
657 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:03:07.29 ] SBCL@UNIXならsb-posix:utimes
658 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:09:07.78 ] >>656 標準ではないみたい。 rosettacode.org/wiki/File_modification_time#Common_Lisp OSのAPIにアクセスするには、OsicatかIOLibを使えばできる。 SBCLならPOSIXモジュールがあるよ。 IOLib common-lisp.net/project/iolib/ Osicat common-lisp.net/project/osicat/ 使い方分からなかったら教えて。
659 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:26:56.74 ] >>658 > OSのAPIにアクセスするには、OsicatかIOLibを使えばできる。 うーん
660 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:32:42.97 ] >>659 ごめん。表現の仕方が悪かった? POSIXのAPIにアクセスするなら、ではどう?
661 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:02:25.66 ] そこにutime(2), utimes(2), futimes(2), utimensat(2)があるわけ?
662 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:03:40.58 ] >>661 はあ? あるに決まってんじゃん、この前ソース眺めたとき確かに見たわこのボケが! と思って見返したら、どうみても俺が痴呆です本当にありがとうございました。 代わりに供物を用意したので命だけは見逃してください。 paste.lisp.org/display/126696
663 名前:656 mailto:sage [2011/12/27(火) 03:05:55.45 ] 書き忘れていました。osはwindowsでsbclです。 >>658-662 ありがとうございます。>>662 でokでした。
664 名前:662 mailto:sage [2011/12/27(火) 03:21:58.01 ] >>663 大変失礼致しました。指摘の通り、>>658 の4行目以降は嘘なので信じないでください。 また、余談ですが、Windows APIのバインディングとして、 Doors https://github.com/Lovesan/doors というDmitry Ignatievによるライブラリがございまして、 https://github.com/Lovesan/doors/blob/master/system/time.lisp に今回のような時刻関係のAPIが定義されている様ですので、興味をお持ちになったらお試しください。 というわけで、どうぞ上の恥ずかしいアレっぷりを記憶から速やかに抹消してください。 さもないと枕元に立ちます。
665 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 11:31:19.14 ] SBCLで大文字・小文字を区別する方法ってありませんか? CL-USER> (setq L '(1)) (1) CL-USER> L (1) CL-USER> l (1) 商用CLは大文字・小文字を区別すると聞くのでその処理系と互換を持たせた仕様 だとすばらしいです。
666 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 14:21:17.64 ] >>662 > (窓)paste.lisp.org/display/126696 おお、O_RDWR | O_APPENDでopenしてすぐcloseするオールドスタイル!
667 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:42:39.91 ] >>665 商用でなくともCLは大文字と小文字を区別する readtable-caseで検索すればいいと思う
668 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 20:39:28.46 ] readtable-caseは>>436 あたりからの話を見れば
669 名前:デフォルトの名無しさん [2011/12/30(金) 11:18:57.56 ] emacs+slimeでお インデントがうまくいかないないのですが うまくいくヒント設定方法よろしくお願いします。
670 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:21:41.50 ] ついこないだこんな設定を加えた (setq-default indent-tabs-mode nil) でもどううまくいかないか具体的に書いたほうがいいよ
671 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:44:17.22 ] indent がうまくいかないなんてあったっけ。
672 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:11:35.74 ] unwind-protectのformを次の行に置くとき、期待した場所より余計に下がったり、 handler-caseのインデントが狂ったりしたことは前にあったな。詳しく調べてないけど。
673 名前:デフォルトの名無しさん [2011/12/31(土) 01:28:06.63 ] >>669 ifのインデントなんですが
674 名前:デフォルトの名無しさん [2011/12/31(土) 01:35:17.77 ] >>673 ifの次が下がり過ぎるのですが
675 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:39:54.69 ] >>674 こうしたい、という例と、こうなる、という例を貼ってくれ。 そうすれば、もっとみんな適切に回答できる。
676 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:42:13.47 ] (if nil 1 2) うちはこんなんだな
677 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:53:00.16 ] >>676 うちもこんなんだな。 ( if nil 1 2 ) マジレスすると俺のはこんなんだが、 (if nil 1 2) もしかして、伝統的なスタイルを期待してんのかね? thenとelseを揃えないRMSの好きなあれ。
678 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:54:24.33 ] (if nil 1 2) これか?
679 名前:デフォルトの名無しさん [2011/12/31(土) 04:40:35.58 ] (if (test) (do こうしたいのですが (if (test) (do こうなってしまいます。
680 名前:デフォルトの名無しさん [2011/12/31(土) 04:43:00.81 ] ↑間違いましたすみません (if (test) (do こうしたいのですが (if (test) (do こうなってしまいます。
681 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 07:18:16.08 ] 言語構造よりライブラリの豊富さが実用上大事だ。 LISPとか教科書・勉強で使うくらいしかないんでは。 LISPでC#やJavaやPHPの代替できるくらいにライブラリあるのかよ。
682 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 07:34:44.41 ] そうなんだよ。だからこんな所に来なくて大丈夫だ。お疲れ。
683 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:38:14.04 ] >>679 これじゃだめ? M-x common-lisp-set-style Specify Common Lisp indentation style: classic
684 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:04:33.81 ] >>683 それってなんていう.el? M-x common-lisp-set-styleなんてないし、aprops-variableでも関連変数が引っかからないんだが
685 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 17:29:40.54 ] >>684 横からあれだけど slimeのcontribの中に入ってなかったっけ?slime-setupだかでなにかロードさせる必要があったような。 今PCの前にいないんで曖昧で間違ったこといってるかもしれないけど。
686 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 19:31:34.40 ] >>684 >>685 が書いてるように ${SLIME_ROOT}/contrib 下に入ってる slime-setup の引数で渡すとロードしてくれる うちの .emacs は以下のような設定になってる (slime-setup '(slime-fancy slime-indentation))
687 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:06:41.50 ] >>686 サンクス こういうのかあるのね M-X common-lisp-set-style basic classic modern sbcl
688 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:09:05.09 ] 皆さんよいお年を! 2012はCommon Lispが大復活することを願って。
689 名前:デフォルトの名無しさん [2012/01/01(日) 03:51:43.39 ] >>687 詳しくお願いします。
690 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 07:29:22.27 ] 去年、John McCarthy総裁が崩御されたし、今年一年は大人しくするぜ。 再来年をCommon Lispの飛躍の年にしましょう。 >>688 >>683 >>684 自分 >>685 >>686 の流れだよ。 slimeが入っていたら動くんじゃないかな。 >>685-686 のcontribは自分の環境だと/usr/share/emacs/site-lisp/slime/contrib/ のことなのかな。よくわからん。特別設定せずにM-X eval-regionして>>683 のが 動いちゃったし。classic入力の所でTabを押すと他の候補が出てくるよ。 老婆心だけど、(slime-setup '(slime-fancy slime-indentation))をマークして M-x eval-regionするとemacs lispで評価されて設定される。 navi2ch上でマークしても評価されるんじゃないかな。
691 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:56:10.75 ] 力尽きた。まだ追加することあったら誰かやって。 cl.cddddr.org/index.cgi?SLIME%3aslime-indentation
692 名前:デフォルトの名無しさん [2012/01/03(火) 01:56:05.82 ] ↑ありがとうございます。
693 名前:デフォルトの名無しさん [2012/01/04(水) 06:25:02.26 ] >>691 追加お願いします。
694 名前:デフォルトの名無しさん [2012/01/04(水) 10:39:17.77 ] >>683 691うまくできませんでした 設定方法よかったらお願いいたします。
695 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:21:46.13 ] >>694 >>683-693 までを3回読め、文盲
696 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:18:50.00 ] >>694 どのように上手くいかなかったのかkwsk。 どういう設定をして、どういうエラーが出たとかを「可能な限り詳細」に。
697 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:58:13.38 ] >文盲 よめません
698 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 04:49:20.75 ] 関数の引数リストを取得する方法って標準の範囲であるんでしょうか sbclのdescribe(呼ぶと引数リストも表示する)だと内部でsb-kernel:%simple-fun-arglistを呼んでいるぽいですけど
699 名前:デフォルトの名無しさん [2012/01/05(木) 07:15:50.25 ] >>694 .emacsに (slime-setup '(slime-fancy slime-indentation)) を書く M-x common-lisp-set-styleすると M-x common-lisp-set-style[No match]
700 名前:デフォルトの名無しさん [2012/01/05(木) 07:28:30.22 ] >>696 ↑間違いました。 .emacsに (slime-setup '(slime-fancy slime-indentation)) を書く M-x common-lisp-set-styleすると M-x common-lisp-set-style[No match]
701 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 07:57:07.40 ] とりあえずEmacs再起動してみるとか
702 名前:デフォルトの名無しさん [2012/01/05(木) 08:04:00.79 ] >>701 Emacs再起動してもだめなんですよ。
703 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:12:37.95 ] slime のバージョンは? そもそも slime のインストールディレクトリに contrib/slime-indentation.el と contrib/slime-cl-indent.el のファイルある?
704 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:16:17.89 ] >>699 環境は? Lispbox? 普通にインストールしたEmacs? (slime-setup '(slime-fancy slime-indentation)) をC-x C-eで評価するとどうなる? 起動時に何かエラーメッセージは? *Messages*に何かエラーが出てる? >>699 の状況を説明すると、正常にslime-indentationがロードされていない。 だからそこで定義されているcommon-lisp-set-styleも実行できない。
705 名前:デフォルトの名無しさん [2012/01/05(木) 08:41:25.08 ] C-x C-eで評価するとEnd of file during parsing 普通にインストールしたEmacsです。 contrib/slime-indentation.el はあるけど contrib/slime-cl-indent.el はない
706 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 10:40:33.98 ] >>705 環境を晒せよ、バカ
707 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 10:47:45.62 ] そういや、環境晒し方みたいなのってないね。 emacs関連だけでも書いておくといいかも。
708 名前:デフォルトの名無しさん [2012/01/05(木) 21:58:26.64 ] >>705 ubunto11.04 sbcl emacs23.2.1
709 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:33:15.35 ] 肝腎要のslimeのバージョンは?
710 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:19:40.86 ] >>709 "普通"と言っているんだから、このバージョンなんじゃない。 環境設定苦手なのであとはよろしく。 Package: slime Version: 1:20100722-1 Depends: emacsen-common, dpkg (>= 1.15.4) | install-info Recommends: cl-swank (= 1:20100722-1), info | info-browser, emacs23 | emacs22 | emacs-snapshot | xemacs21 Filename: pool/universe/s/slime/slime_20100722-1_all.deb Size: 1269716 ftp://ftp.riken.jp/pub/Linux/ubuntu/dists/natty/universe/binary-amd64/Packages.bz2 ftp://ftp.riken.jp/pub/Linux/ubuntu/pool/universe/s/slime/
711 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:00:15.48 ] Ubuntu Nattyではslime-indentation.elは入ってるけどslime-cl-indent.elは入ってない packages.ubuntu.com/ja/natty/all/slime/filelist で、どうやらslime-cl-indent.elは最近入ったファイルらしい lists.common-lisp.net/pipermail/slime-cvs/2011-May/009688.html random-state.net/log/3513839648.html ちなみにUbuntu Preciseには入る模様 packages.ubuntu.com/precise/all/slime/filelist で、どうすればいいかはUbuntu使ってないので私もわかりますん
712 名前:デフォルトの名無しさん [2012/01/06(金) 00:00:24.01 ] >>709 slime 1:20100722-1
713 名前:710 mailto:sage [2012/01/06(金) 00:23:29.38 ] ubuntuを使い込んでいなので不具合が起きても知りません。elispだからOSには悪影響が出ないで しょう、きっと。 環境Kubuntu10.04 amd64だけど、無理やりslime_20111027-2_all.debを入れると>>683 が出るね。 wget ftp://ftp.riken.jp/pub/Linux/ubuntu/pool/universe/s/slime/slime_20111027-2_all.deb sudo dpkg -i slime_20111027-2_all.deb (setq inferior-lisp-program "/usr/bin/sbcl") (require 'slime) (setq slime-default-lisp "sbcl") ;; いらないかも (slime-setup '(slime-repl)) (slime-setup '(slime-fancy slime-indentation)) >>711 公式のcurrentバージョン(2012-01-05)のChangelogを読んだけど、書いてなかったなあ。 作法としてChangelogをみるのが正しくないのかね。
714 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:00:08.28 ] quicklisp から slime 導入するのが楽。
715 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 07:20:57.78 ] >>713 slime/ChangeLogではなくslime/contrib/ChangeLogに書いてあるよ
716 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:26:33.41 ] >>715 本当だ 2011-05-10 Nikodemus Siivola <nikodemus@r****dom-state.net> * slime-cl-indent.el: New file. Copy of cl-indent.el from current GNU Emacs HEAD. Replaces the ancient copy previously kept as part of slime-indentation.el. * slime-indentation.el (slime-handle-indentation-update): Deleted. Since we now directly replace the previous version of cl-indent.el, the normal version defined in slime.el works fine. ALSO DELETED: the inline copy of 1995 vintage cl-indent.el. slime-cl-indent.clと言い始めた人は某ディストリを使っていたのかな。 2011-05-10 以前の設定ってどうするんだろうなあ。今はそっちを推奨した方が 良いかもなあ。 それかyum, aptなどのパッケージシステムで極力管理せずにquicklispで swank(slime?)さえも管理させるか。
717 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:24:13.51 ] ちなみにLispbox on linux 64bitはslime-20110205.092829で>>683 が効いていない。
718 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:29:18.55 ] >>716 indentをイジりたいなら(特に)2011-05-10 以前の設定はこんな感じかな。 他にもっと適切な設定があるかもしれないけど。 .emacs.el (setq lisp-indent-function 'common-lisp-indent-function) ;;(setq lisp-indent-offset nil) ;;(setq lisp-indent-offset -2) (setq lisp-indent-offset 2)
719 名前:デフォルトの名無しさん [2012/01/07(土) 01:25:01.92 ] もっと適切な設定おねがいします。
720 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 07:41:14.53 ] >>716 emacs関連ってyum, aptなどを使わないのがデフォじゃないのか? Linux系以外のOSと操作感変わるのはいやじゃね?
721 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 10:38:28.61 ] >>720 自分の話ではなく、emacsを使い始めて1年以内の人を対象にしているんだけど、 1年以上の人は自力でがんばって設定してくれと思う。 あと仮想OSも安定したし、マルチプラットフォームの操作感の統一性は求めて いないなあ。ssh経由環境を整えた方が労力が少ないよ。
722 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:14:50.58 ] emacs を使い始めて35年か。。。。 という人はおらんか?
723 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:35:48.33 ] RMSです。日本の皆さん、はじめまして。 って話?
724 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 17:03:50.76 ] ttp://www.amazon.co.jp/dp/4320024141 この本が出たのが88年だから24年前か
725 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:03:57.95 ] 20年以上前のRMSってヒッピー族って雰囲気だったのにな。 いまや教祖。。。
726 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:10:55.78 ] d.imagehost.org/0086/richardstallmanyoungg.png www.wikinoticia.com/images/www.vivalinux.com.ar.xml.rss/i44.tinypic.com.aau5i9.png assets.cio.com/documents/cache/images/slideshows/2009/04/hippie_programmers.jpg www.computerhistory.org/timeline/images/1983_stallman_large.jpg www.foreignremarks.com/images/2007_0607stallman0029.jpg あるlispハッカーの変遷。
727 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:39:46.75 ] まさに、どうしてこうなった、を素で行くRMS様だぜー。 まあでも、今でも痩せればイケメンなのは間違いない。
728 名前:デフォルトの名無しさん [2012/01/08(日) 03:24:39.80 ] 設定の話どうなったの?
729 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 19:17:24.09 ] 最後に麻原を混ぜる
730 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 22:57:13.63 ] lisperってemacs使ってる人が多いのかな? vi使ってる人いる?P・Gはvi派らしいけど
731 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:12:26.42 ] viスキーも割と見掛ける気がする。VimにもSwankクライアントあるし。 自分はEmacsのキーバインドがダルくてviper-mode使ってるけど、 Vimpulseとか使ってる人も中にはいるかもしれない。
732 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/01/09(月) 00:13:04.38 ] LISPer だと vim スクリプトはだりぃーとか思っちゃうかもね。 仕事の内容によってはカスタマイズされた環境に慣れるのは良くない こともあるだろうから、そういう人は vi を使うと聞いたことがあるよ。 グレアム御大はエディタでなく言語の側で頑張れ派なので vi を使うとどこかで読んだ。
733 名前:デフォルトの名無しさん [2012/01/09(月) 00:26:34.09 ] >>インデント?
734 名前:デフォルトの名無しさん [2012/01/09(月) 00:29:45.25 ] >>728 インデント?
735 名前:デフォルトの名無しさん [2012/01/09(月) 00:30:28.89 ] >>728 インデント?
736 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 01:31:58.40 ] >>732 > グレアム御大はエディタでなく言語の側で頑張れ派なので vi を使うとどこかで読んだ。 viでshellコマンド使えるよね? vi を使って、LISPでパースしたりうんたらしたりしているのかね。LISPでvi上で文字を 色付けしたりとかもできるのかな。SHELLを何を使っているか、知らないけど、SHELL側から 色付けアプローチができるんかな。 vi使いのLISPerの動画ってないかね。マジでみてみたいんだよなあ。 超高等テクニックを紹介している英語サイトでもいい。
737 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 11:48:05.90 ] まず最初にvimを使おう。
738 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 13:48:06.72 ] >>737 プログラム組むんならそれもありだろうけど, Linux 以外でデフォで vim ってあるんかよ?
739 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 15:10:37.13 ] >>737 vimは使えるわ。 viの話が聞きたい。 >>738 Linuxでもvimは標準で入っていないのが多いよ。
740 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 06:28:23.08 ] monadをlispの文法で説明しているサイトないでしょうか
741 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 07:16:19.47 ] >>740 okmij.org/ftp/Scheme/monad-in-Scheme.html
742 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 07:28:41.91 ] ああ、ごめん。早合点した。モナド自体の解説も必要なのか。 それならこっちか。 groups.google.com/group/comp.lang.functional/msg/2fde5545c6657c81 英語だけど端的でとても分かりやすいと思う。
743 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 09:50:31.71 ] in dente
744 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 12:51:58.52 ] John McCarthy 追悼記事 cacm.acm.org/magazines/2012/1/144801-john-mccarthy-1927-2011/fulltext >he was also one of the first to investigate how to rigorously prove properties of programs この一文がよく分からない 証明関係の話だとは思うんだがどういうことなんだろう それとこの一文に興味を持ちました >McCarthy was "a very, very clear thinker regardless of the topic—politics, sociology, the water supply in the San Andreas Basin, anything," recalls Hayes. paul graham御大のようにずけずけと切り込んでいくスタイルだったんでしょうかね エッセイ集のようなものがあれば読んでみたいな そうそう、figureにある御大の若い日の姿がいい deliveryimages.acm.org/10.1145/2070000/2063187/figs/uf1.jpg なんというか、目つきが鋭くて黒ひげが凛々しい
745 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 14:53:18.17 ] チェス盤があるところを見ると Kotok-McCarthy のデバッグ中かな?
746 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 15:37:08.04 ] 質問ですが、 >>1 のパワーズとはどういう人なのですか
747 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:31:29.46 ] "MOJO"
748 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:47:31.46 ] >>744 後ろに説明あるじゃない。 >He invented abstract syntax; created the nonmonotonic logic technique called circumscription; and invented the garbage collector.
749 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 09:19:35.64 ] サーカムスクリプションじゃなくてこっち。 www-formal.stanford.edu/jmc/basis.html
750 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 15:38:06.07 ] blog.livedoor.jp/s-koide/archives/1846185.html >2003年ニューヨークのConferenceではものすごく感動的なトークをし マッカーシーは2003年にどんなトークをしたのでしょう?
751 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 18:28:37.32 ] Tutorial:Lispで人工知能 cl.cddddr.org/index.cgi?Tutorial%3ALisp%E3%81%A7%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD 例はAllegro Common Lispで開発を進めるということになっていますが、 windowsのsbcl+emacs+slimeで試したいです blog.livedoor.jp/s-koide/archives/1877088.html >そのほかの Common Lisp システムで進めるかたは,ご自分で環境設定とか,コードの修正などをお願いいたします. こう書いてあるのですが、case-sensitiveにするために (setf (readtable-case *readtable*) :preserve) と書くのはわかったのですが、ほかにどういう設定をしてpaipのソースファイルをどこに置けばいいのですか
752 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 20:43:49.62 ] >>750 comp.lang.lispでも話題になったから検索してみて。 John "Practical" McCarthy でたどれると思う。 しかしそのページILCのIがInternetになってるな。 近くの人教えてあげて。
753 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:04:07.76 ] どうもありがとうございます https://groups.google.com/group/comp.lang.lisp/browse_thread/thread/6c75cae46f065843/f06272a6e41dfdfa?hl=ja&lnk=gst&q=John+%22Practical%22+McCarthy#f06272a6e41dfdfa Anton van Straatenさんの発言をまとめると… マッカーシーはチャーチのラムダ計算の考えをlispに部分的に取り入れた、 万が一ラムダ計算をlispのデザイン全体に持ち込んでいたら 実用的なプログラミング言語というものを誤って推し進めたかも、 純粋な型無しのラムダ計算にひどく捕らわれていたかもしれない で、実際のところは無名関数を設けるラムダの表現の意味を拝借したのだ、と lispを開発していたときマッカーシーは チャーチの本のコピーを持ってはいたが最初から最後まで読んだわけでは無かった 飛ばし読みをしていた そのおかげで上のようなデメリットが避けられた lispを作った本人がlispの限界とその理由をかいつまんで解説したと 理解したのですが、これでいいでしょうか
754 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:41:45.59 ] Yコンビネータで再帰定義、再帰実行とか、 理論的整合性の泥沼にはまらずに済み、 実践的な言語設計をすることが出来たってことでしょ。 もともと数式評価するFORTRANライブラリ書いていたわけだから、 下手すりゃSucc(Succ(Zero))とか別の方向行っちゃうもんね。
755 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:18:30.24 ] 結局、動的スコープ以外はほぼ間違いなかったわけだしな
756 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 19:25:58.91 ] こないだエロ漫画雑誌を見てたら、姉弟でセクロスしてるところを母親に見付かった場面で「続きは単行本××で」 ってひっぱってたけど、たぶんこの母親もまじえて3Pになる展開なんだろうなぁってのが容易に予想できるので、 ここで予想を裏切るシチュを期待したい。
757 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:03:22.08 ] すいません。誤爆しました。忘れてください。
758 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:06:12.33 ] テンプレに入れといてやんよ
759 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 21:09:33.86 ] クラブを持ったリスコフ婆さんも乱入だ
760 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 22:07:26.48 ] 質問なんですが、Common Lispで三目並べを作ろうとしているのですが、 対戦相手のグラとして画像を表示させることもできますか? できるのでしたら、関数を教えていただければ幸いです。
761 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:35:40.98 ] >>760 要は「GUIアプリケーションを作れるか」ってことで合ってる? そういう話なら「作れる」んだけど、Common Lisp標準のGUI APIというのはないので、 ライブラリを使ったり、FFI経由で各種APIにアクセスする必要がある。 そして、どういう風に作れば良いのかは、環境と方法によって全然違うので、 対象とする環境とかを教えてもらわない限りは答えにくいと思う。
762 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:43:52.42 ] やっぱり X プロトコルを喋らせないと。
763 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:51:28.76 ] >>761 環境はLisp IDEというフリーのエディタ。全文英語になっとる。 >要は「GUIアプリケーションを作れるか」ってことで合ってる? たぶんあってる。ググったのを見る限り。
764 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:19:47.99 ] つLTK
765 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:25:26.08 ] >>764 なんか今使っとるのより断然よさげですね。 ありがとうございました。頑張ってみます。
766 名前:デフォルトの名無しさん [2012/01/15(日) 08:26:04.65 ] 宣教師と人喰人問題で4人ずつ、ボートに3人まで乗れる。 この条件でプログラムを教えて欲しいです。
767 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 08:46:19.56 ] Prolog向きの問題じゃなかったっけそれ
768 名前:デフォルトの名無しさん [2012/01/15(日) 08:51:22.80 ] ググってたんですけど、これでできるかな? d.hatena.ne.jp/jits/20100718/1279443182
769 名前:デフォルトの名無しさん [2012/01/16(月) 17:26:23.02 ] LISPさっぱりわからん… 俺向いてないわ
770 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:39:15.42 ] >>769 Lispに特有の概念(S式とかマクロ)はとっても簡単なので、 再帰とかクロージャとか、そっちの方が理解し辛いのかな? それらは他の言語でも役立つので、覚えて絶対損はしないと思う。 根気良く覚えていくことをお勧めする。 あとは、具体的にどの辺が分からないか書いてくれると、 ここを見てる他の人が、分かりやすく説明をしてくれたり、 分かりやすい説明の場所を教えてくれたりするかもしれないよー。
771 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:43:29.86 ] Haskellに比べたらLispはまだわかりやすいな・・・
772 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:23:45.93 ] MITハッカーにあこがれてCLISPをとりあえず入れてみた いまいち何をすればいいかわからん
773 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:24:42.76 ] Lispでもモナドとか使ったりすればHaskell並に難しくなったりするので、 Haskellが殊更難しいっていうのは、Haskellにとってもフェアじゃない気がする。 前提とする知識の多さを「難しい」って表現するなら、確かにそうなんだろうけど。 うーん。でもやっぱ軽く嫉妬入ってるかも。
774 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 20:03:31.30 ] >>773 Haskell使いの被害妄想はすごいなあ。 遠征して書くことか。
775 名前: ◆QZaw55cn4c mailto:sage [2012/01/16(月) 23:58:33.67 ] >>769 処理系の作成の教科書を読むといいかも
776 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:24:41.47 ] >>769 酔っ払いの竹内の本は読むなよ。お金の無駄だ。 編集者が文字を書き起こしたらしいんだが、それだけの手間をかけるなら新しく書けよ、 団塊の世代。
777 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:32:17.99 ] そもそもあれCommon Lispじゃないし、 「文字を書き起こした」ってのもどうなのよw
778 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:51:27.54 ] 竹内本は例題や練習問題が豊富だしそんな悪くないと思うけどな 初心者がコーディングする段階で詰まるポイントをよく捉えてるので 実際に手を動かしながらる本を読む人には向いてるんじゃないかと 概念本としてはそんないいとは思えなかった
779 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:28:57.76 ] >>778 新しく本を書いた本を書いた方が良くない? 例題・練習問題はネットに転がっているから困らないでしょ。
780 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:45:47.24 ] じゃあ竹内本みたいな構成で例題が載ってるサイト挙げてみて
781 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 02:22:48.45 ] 竹内本みたいな構成でないとダメならない
782 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 06:51:50.80 ] >>774 反応が予想外過ぎるw俺がHaskellerだったら、何に嫉妬してんだw Lispのシンプルさとか? ないだろー。 Lispでも時と場合によってはモナドとか遅延とか使ったりするのに、 それがHaskellだけのものみたいに思われがちなのは、正直面白くない、って話。 Lisp書きがHaskell書きに嫉妬してんの。
783 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 07:51:26.36 ] >>782 はいはい。 さっさと巣にお帰り。
784 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 07:53:52.34 ] 構文エラーと言われたら書き直すのが筋
785 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:00:29.72 ] 構文エラーな手書き文章から本を作るお仕事
786 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:23:58.09 ] >>773 言語が難しいと言うより、解こうとしている問題が難しいだけだと思うが。 将来はもっと簡潔&理解し易い表現方法が開発されるかもしれないが、そういう表現形式の開発自体、鶏・卵の関係だからな。
787 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 11:51:20.71 ] >>786 同感だし、一応そういう主張。 GitHubでも、他言語由来の概念のLispへの導入とか結構見掛けるけど、 まだ手探りな感じが強い気がする。こういった流れも、数が増えていけば、 よりLisp的に洗練されていくのかなー、とか考えると面白いよね。
788 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:47:41.83 ] >>786 表現形式の開発自体が卵だとすると鶏って何?
789 名前:デフォルトの名無しさん [2012/01/18(水) 08:03:50.21 ] 実践CommonLispてどの位時間でよめますか?
790 名前:デフォルトの名無しさん [2012/01/18(水) 08:05:53.51 ] 実践CommonLispてどの位の時間で読めますか?
791 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:06:14.90 ] >>790 「読めますか」…そんな言葉は使う必要がねーんだ。 なぜなら、オレや、オレたちの仲間は、 その言葉を頭の中に思い浮かべた時には! 実際にそれを読んじまって、もうすでに理解しているからだッ! だから使った事がねェーッ。 >>789 、オマエもそうなるよなァ〜〜〜、オレたちの仲間なら… わかるか?オレの言ってる事…え? 『読んだ』なら、使ってもいいッ!
792 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:48:45.82 ] partake.in/events/e9956e93-dd82-4b63-96bb-f9f75370dc5d >訳がアレな部分がある paipの日本語版を持っていますが、具体的にはどこなのでしょうか
793 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 03:56:16.14 ] (setq alist (acons 1 "uno" (1 . "one") (2 . "two")))) => ((1 . "uno") (1 . "one") (2 . "two")) ではなくて (setq alist (acons 1 "uno" (1 . "one") (2 . "two")))) => ((1 . "uno") (2 . "two")) となるような aconsの拡張に標準的な名前はついてないのでしょうか
794 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:08:34.82 ] www.aoky.net/articles/paul_graham/vw.htm viawebのスナップショットがあるけど なんというかシンプルなんだね それに競合他社を欺くためのテクニックがあざとくて笑った
795 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:26:39.48 ] 「その理由」のリンク、昔、別の記事にもあったんだけど、大笑いしたなぁ
796 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:41:57.08 ] ロバート・モリスが、表に名前を出すのを避けてた、ってのは初めて知った話という気がする
797 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:53:38.16 ] >>793 俺は知らない。たぶんないんじゃない? cltl に「assoc と rplacd でできるけど、お勧めはしない」って書いてある。 ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html 本当に update が必用なら hash table 使うのが普通だと思う。 あるいは property list。
798 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 00:54:45.05 ] Lisp。入門書を読んでみたが、 この言語のなにがすごいのかよくわからない。 PROGとか手続き型となにが違うのかと。 カッコも多くてめんどくさい。 普通の手続き型言語、例えばCで同じ内容のプログラムを書いた場合と比較して、 手間が省けるプログラムって例示できる人いるの?
799 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:52:13.58 ] >>798 っpractical-scheme.net/trans/icad-j.html
800 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 04:22:59.22 ] >>798 Lisp全般の話がしたいのならLisp Schemeスレでね。 丁度向こうでも同じ話題が出ているので、>>798 にも都合が良いと思う。 こちらでもflame warを起こすのが目的じゃなければ、の話だけどね。 Lisp Scheme Part33 toro.2ch.net/test/read.cgi/tech/1318150738/ >>799 プログラムを出せと言ってるんだから、そこで挙げるなら、例えば www.atmarkit.co.jp/news/200909/07/lltv02.html practical-scheme.net/vault/lltv-shiro.tar.gz 辺りでしょ。
801 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:04:24.58 ] >>798 入門書とか読むだけだとLispのすごさや便利さはあまり腑に落ちないよ。 1000行くらいの簡易実装(マクロつき)を読み下すと、 CやJavaの不自由さがよくわかると思うよ。
802 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:17:46.65 ] Lispのぱっと見の印象がそんなに悪くなる入門書ってなんだろな
803 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 19:07:55.33 ] >>802 lyrical.bugyo.tk/
804 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:16:05.40 ] twitter.com/lipsmagazine
805 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 01:39:03.94 ] >>804 それ舌足らずやない唇や
806 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 15:22:56.95 ] >>804 のアイコンを俺が今作ってる処理系に使いたい
807 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 10:40:03.82 ] (format nil "~{ ~}" '(l i s t)) とすると一気にメモリを消費してしまうのは仕様ですか?
808 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 11:29:50.10 ] >>807 仕様かどうか知らんけど 間に~aか何か置かないと引数のリストがいつまでたっても消費されないんじゃない? (format nil "~{~a~}" '(l i s t)) => "LIST"
809 名前:806 mailto:sage [2012/01/29(日) 19:47:07.24 ] >>808 言われてみれば確かに。 slimeで勉強中にこの式をたまたま評価したらいつの間にかメモリを食い潰してしまって焦ってしまいました。 で、こういう事態に備えてヒープサイズ?を制限しようかと思ったのですが、clozureでは可能なのでしょうか。 sbclなら--dynamic-space-sizeで指定したメモリ以上は使わないようにできました。 しかしclozureでは--heap-reserve 1Gと指定しても、topで見る限り128Gまでメモリ使用を許可しているようです。 当然そんなにメモリを積んでいないし、>>806 のような馬鹿をすると1Gを超えてメモリを食い出しました。
810 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 01:20:22.90 ] >>809 >>806 がdisられてる件について。 --heap-reserve 8Mくらいで>>807 試すと普通にメモリ不足ですぐ例外発生したりしない? Windows XP SP3 32-bit + CCL 1.8-dev-r14962-trunkだとそんな感じだけども。 一応、CCLのヒープ関係はこういう仕組みになってるとのこと。 ccl.clozure.com/manual/chapter16.1.html#Heap-space-allocation (cl:room)するとどうなってる?
811 名前:デフォルトの名無しさん [2012/01/30(月) 05:34:46.27 ] CL-USER> 0.123e20 1.23e19 理解できないのですが どなたか説明お願いします。
812 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 05:39:05.44 ] eで桁が減ってるから合ってるじゃん。
813 名前:デフォルトの名無しさん [2012/01/30(月) 07:05:19.17 ] ↑ありがとうございました。
814 名前:807 mailto:sage [2012/01/30(月) 08:34:25.72 ] すいません>>806 じゃなくて>>807 でした。 ccl64 --heap-reserve 4Mで(cl:room)としたとき、 pproximately 24,117,248 bytes of memory can be allocated before the next full GC is triggered. Total Size Free Used Lisp Heap: 39190528 (38272K) 24117248 (23552K) 15073280 (14720K) Stacks: 51246288 (50045K) 51211592 (50011K) 34696 (34K) Static: 19070896 (18624K) 0 (0K) 19070896 (18624K) -4071.375 MB reserved for heap expansion. となります。OSはlinux(64bit)で、clozureはccl-1.7-linuxx86.tar.gzの中にあるccl64を動かしています(cclはエラーになる)。 (swank:start-server :port 4005 :stlye :spawn :dont-close t)でswankサーバを建ててslime-connectして使っています。 この状態で、>>807 をC-c C-cとし、数秒後に(cl:room)を実行すると Approximately 33,554,432 bytes of memory can be allocated before the next full GC is triggered. Total Size Free Used Lisp Heap: 2548170752 (2488448K) 33554432 (32768K) 2514616320 (2455680K) Stacks: 51246288 (50045K) 51210424 (50010K) 35864 (35K) Static: 19070896 (18624K) 0 (0K) 19070896 (18624K) -6464.125 MB reserved for heap expansion. となります。
815 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 15:25:59.61 ] LispのマクロはJsとかでいわれているラムダ的な物と考えてよいのでしょうか?
816 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 18:19:23.92 ] >>814 Oh... 凄く…負の値です…。バグなのかなー。>>810 の環境で普通に起動するとこう。 Approximately 7,864,320 bytes of memory can be allocated before the next full GC is triggered. Total Size Free Used Lisp Heap: 20119552 (19648K) 7864320 (7680K) 12255232 (11968K) Stacks: 31317648 (30584K) 31304808 (30571K) 12840 (13K) Static: 20140352 (19668K) 0 (0K) 20140352 (19668K) 844.812 MB reserved for heap expansion. 予約された領域の表示は、ccl:%reservedbytesで領域の境界同士を引いて算出してる。 負の値になるってことは、多分境界の値がおかしなことになってるんだと思うんだけど。 trac.clozure.com/ccl/ticket/890 に、"This affects me."とか書きつつ、環境と(room)の結果でも貼ってみたらどうだろう。 blo.udoidio.info/2008/10/out-of-memory-sad-case.html を見ると、少なくとも1.2の時点からある問題みたいだ。
817 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 18:49:29.05 ] >>815 ラムダは関数だから違う。強いて言うならC++のテンプレートが近い。 用途は色々あるけど、総じて他の言語ならコンパイラの書き替えや別言語の実装が必要なレベルの抽象化が出来る。
818 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 19:01:05.30 ] >>817 なるほど、C++のテンプレートにちかいのですね。 この考えを取っ掛かりとしてもう一度勉強してみます。
819 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 19:24:25.09 ] >>818 強いて言えばだから、テンプレートの勉強をしてもあまり参考にならないと思うよ。 Lispマクロ自体を勉強する方が良いと思う。 Paul=Grahamやgaucheの作者の書いた物がお勧め。
820 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 21:57:34.69 ] >>819 いっしょだと思う. template_expand と template_expand_1 さえあれば...
821 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 07:26:04.21 ] >>820 条件分岐の面倒さや再帰の深さ制限とか、実行時型情報とかやはり違うと思う。Lispにはリーダマクロ等もある。 boostにもよりLispマクロを目指したmopがあるし、D言語もASTマクロを入れる予定。 ところで調べてて驚いたけど、Perl6にもASTマクロがあるらしい。現状で一番Lispに近い言語なのかも(笑)
822 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:38:23.98 ] Boost.MPL はマクロに近い
823 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 17:32:20.27 ] Why I love Common Lisp and hate Java « Piece of mine https://kuomarc.wordpress.com/2012/01/27/why-i-love-common-lisp-and-hate-java/ Why I love Common Lisp and hate Java, part II – code examples « Piece of mine kuomarc.wordpress.com/2012/02/02/why-i-love-common-lisp-and-hate-java-part-ii-code-examples/
824 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:18:26.92 ] ネタ記事? Compare class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } } with Common Lisp’s equivalent: "Hello World"
825 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 22:41:28.18 ] ttp://homepages.inf.ed.ac.uk/wadler/language.pdf を思い出した。
826 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:30:57.46 ] 最近common lisp始めてみた。 特に作るののもないのでリストいじってあそんでいる。
827 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:35:10.04 ] いらっしゃい。何かを得ていってくれると嬉しい。
828 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 02:32:05.69 ] (defun hoge (x) (format t "hoge start~%")(catch 'c1 (format t "catch c1 start~%") (fuga x) (format t "catch c1 end~%")) (format t "hoge end~%")) (defun fuga (x) (format t "fuga start~%") (if (= x 0)(throw 'c1 "x = 0")(format t "x /= 0~%")) (format t "fuga end~%")) で質問です。このlispの実行結果は、 (hoge 0) hoge start catch c1 start fuga start hoge end nil となるのですが、catch c1 start後に関数fugaのif文でtrueなので (throw 'c1 "x = 0") を実行すると思うんですが (format t "catch c1 start~%") (fuga x) (format t "catch c1 end~%") を実行せずにそのまま"hoge end"で終わっています。 (throw 'c1 "x = 0")の時いったい次どこの処理をするのでしょうか。 また、最後、throwの戻り値の"x = 0"も出力されず、nilとなっています。 "x = 0"が返されるときとはどういうときなのでしょうか。 動きがよくわからなくて困っています。 よろしくお願いします。
829 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 04:02:22.74 ] catchの各formを評価している最中にthrowされると、throwで指定した値がcatchの戻り値になる。 なので、(throw 'c1 "x = 0")によって、catchの戻り値が"x = 0"になる。以降のformは評価されない。 catchの戻り値は、件のコードでは単に捨てられるようになっているので、出力もされない。 catchの後に「hoge end」を出力して、そのまま終了する。 つまり、throwの次に実行されるのは(format t "hoge end~%")。 www.lispworks.com/documentation/HyperSpec/Body/s_catch.htm というか、普通はcatchやthrowを直接使ったりせず、より上位の仕組みのコンディションを使う。
830 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:05:55.45 ] >>829 回答ありがとうございます。 throwでx=0の後は、関数fugaは評価されないんですね また、catchというかhogeのcatchが終了したところに戻るんですね 戻り値は受け手はいるけど出力して終了とはならないということですか なるほど。。。非常に難しいですね。。。 ありがとうございます。
831 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:16:38.35 ] 1:(defun catch2 (tag) 2: (catch tag 3: (throw 'hack 'yes))) 4:catch2 5: 6:=> catch2 7: 8:(catch 'hack 9: (print (catch2 'hack)) 10: 'no) 11: 12:yes 13:no というプログラムでもやはりcatch,throwのことですがいいでしょうか 先ほどの回答ですと まず8行めのcatchから、1,2行目にとんで3行目のthrowで すでに8行目は行ってるので、8行目に飛ばずにそのままそのthrowは終了 でyesが返ってくる。 それが9行目のprint文にもどるのでyesを出力となるわけですね。 最後の'noはどうやって出力されたのでしょうか。 ここもやっぱりよく分からないのですが。。。
832 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:25:18.81 ] (catch2 'hack) は (catch 'hack (throw 'hack 'yes)) になる。
833 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:19:25.56 ] 1:(catch 'hack 2: (print 3: (catch 'hack 4: (throw 'hack 'yes))) 5: 'no) とすると 3行目のcatchから、throwで戻り値yesをprintして 残りは'noが残ると思うのですが すると 結果は yes no となるのですが、noは'noがただ評価されたから 出力されているという解釈でいいんでしょうか。
834 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:34:40.81 ] (print (catch2 'hack)) がyesを表示してて、 (catch 'hack (print (catch 'hack (throw 'hack 'yes))) 'no) を評価したときの戻り値がno。 インタプリタ上だと標準の出力先と戻り値を表示する先が同じものが多い。
835 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 14:40:06.47 ] リスト操作の質問です (list "test2" "foo34" "bar23" "test5" "foo67" "test9" "bar8" "foo7") こうして作成したリストを ("test234" "bar23" "test567" "test9" "bar8" "foo7") のように変換したいです どういうことかというと、test〜の直後の要素がfoo〜だったら test〜とfooより右側の文字列を結合させます そうでなければその要素はそのままにしておきます (mapcar #'(lambda (a b) のように書きはじめるのかと思いましたが、この場合の a bは二つのリストからそれぞれ 要素を取り出すものなので違うようです どうすればよいでしょうか
836 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:03:40.19 ] >>835 reduceを使えば良いんじゃないかな。というわけで、こんなんできました。 ハードコーディングしてる部分は、実際のコードでは修正してー。 (labels ((has-prefix-p (prefix x) (let ((p (search prefix x))) (and p (zerop p)))) (foop (x) (has-prefix-p "foo" x)) (testp (x) (has-prefix-p "test" x))) (reduce (lambda (x r) (if r (destructuring-bind (last . rest) r (if (and (foop last) (testp x)) (cons (concatenate 'string x (subseq last (length "foo"))) rest) (cons x r))) (cons x r))) *list* :from-end t :initial-value nil))
837 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:05:43.41 ] ああ、失礼。*list*に対象のリストが入ってるってことで。 (defparameter *list* (list "test2" "foo34" "bar23" "test5" "foo67" "test9" "bar8" "foo7")) こんな感じで。コピペし忘れた。
838 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:52:31.82 ] >>834 反応遅くなり申し訳ありません。 catch内の最後に評価された式が最後の返されるんですね だから、yesのあとにprint文でもないのにnoが出力されるということですね ありがとうございます!!
839 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:14:41.11 ] >>838 分かりやすいかどうかは知らんが C の setjmp がおおむね catch clhs.lisp.se/Body/s_catch.htm # 仕様書読め(Unix で言うところの read the fucking manual)
840 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:53:44.57 ] >>839 ありがとうございます。 TOEIC200点代ですが頑張って解読します。
841 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:16:02.80 ] 上でも少し触れたけど、何で直接catchとthrowを使ってるんだろうか。 新しい制御構造でも作るの? かなり斜め上なことをしてる予感がするけども。
842 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:20:38.90 ] >>841 emacsのとあるプログラムをxyzzyのcommon lispに書き換えてみたくて 解読してたんですが、catchとthrowがでてきて・・・ 調べてたら、更に分からなくなりまして。。。 なので、新しく何か作るわけではありません。 あまりcatchとthrowは一般的でないみたいですね。
843 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:24:46.17 ] >>841 あと、ここで質問したcatch,throwのプログラムは 解説サイトに載っているものです。 理解できなかったので部分コピペで質問させていただきました。
844 名前:834 mailto:sage [2012/02/07(火) 00:50:44.36 ] 最初に>>833 を見たときは、 インデントの所為で(print (catch ...) 'no)としてるのかと思った。
845 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:08:08.27 ] >>844 わかりにくくてすいませんでした。 インデントおかしかったですね。今後は気をつけます。
846 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:23:05.94 ] >>843 あー、ここか。あまり良い教材とは言えないと思う。 www.fireproject.jp/feature/common-lisp/details/catch_throw.html Common Lispで例外処理をするときは、catchとthrowは普通使わないんだ。 その上に作られたコンディションというものを使う。 xyzzyを使っているなら、 www.geocities.jp/m_hiroi/xyzzy_lisp.html の方がより正確で多くを解説しているので、こちらを参考にした方が良い。 あと、Emacs Lispについては、オリジナルのリファレンスが結局一番詳しい。 日本語でないと厳しいなら、 www.bookshelf.jp/texi/elisp-manual-20-2.5-jp/elisp_10.html を読むほうが、ググッて出てきたブログとかを読むよりは良いと思う。
847 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:41:15.91 ] >>842 あと、移植については、単純にxyzzyでプログラムを動かすのが目的のベタ移植なら、 そのままcatchとthrowを使えば良いと思う。 よりCommon Lisp的な表現に全体を書き換えているのなら、コンディションを勧める。 Tutorial on Good Lisp Programming Style www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt から引用するけど、 > catchとthrowを使用に対するいくつかの忠告がある: > > - マクロとしてより抽象的な制御構造を実装するときに副プリミティブとして > catchとthrowを用いること。通常のコードの中では用いないこと。 普段使いにはもっと便利なものがあるんで、そっち使いましょうよ、ってこと。
848 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 02:04:41.44 ] >>846 >Common Lispで例外処理をするときは、catchとthrowは普通使わないんだ。 情報が少ない気がしたのですがそういうことだったんですね。 「catch,throw」より「コンディション」ですね! 調べてみます。 実は載せていただいた資料は前に読んだんですが 少し難しかったです。。。 ですが、emacsのサイトは確かに一番読みやすいですね!! >>847 common lisp的なものを書けるようになりたいので 「コンディション」で制御できるよう勉強します。 lispで勉強会があれば出たいですが、なかなかないですね。。。 周りにlisp使ってる人がいない場合、やっぱ独学しかないんでしょうね。
849 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 09:38:28.30 ] >>848 twitter始めてみたら?それか初心者が勉強していくblogを書く。
850 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 12:16:40.84 ] ただ、carの例で考えると、Common Lispでは「対象性」が失われているような気がするんですよね。これが納得 出来ない。 (car '())=>nil (car '(()))=>nil で結果が同じだとマズいだろ、って事ですよね。 ttp://www.shido.info/gb/guestbook.php?id=1422 この話ってcarをscar(仮)で使った方が良いですか? (defun scar (l) (if (tree-equal '() l) "#f" (car l))) またもっとエレガントな方法・アプローチがありますか?
851 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 12:45:54.49 ] とりあえずcond,cons,car,cdr,apply,mapcar,funcallあたりは覚えた。 次はいよいよマクロに手を出してみようかな
852 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 14:14:53.56 ] >>836 ありがとうございます reduceをそのように使えばいいのですね 目から鱗です
853 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 14:24:40.95 ] on lispの2.9compilationを読んで疑問に思ったのですが (defun 50th (lst) (nth 49 lst)) (proclaim ’(inline 50th)) これと、defmacro で50thを作ったときの違いは何なのでしょうか? 2.9の最後にinline functionの制約はmacroのそれと基本的には一緒だと書いてあるのですが、 common lispのmacroとinline compileは実質的にどう違うかよくわかりません
854 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:06:22.87 ] >>853 そのまま読み進めていけばinlineで書けない実例が大量に出て来る。
855 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:40:28.11 ] >>836 >>835 のような実用用途に対するLISPプログラムを初めて読んだ。 結構時間かかったけど、こういう風にするんだな。面白い。 destructing-bindって融通効かしてくれるんだな。きれいに書きますね〜。 (concatenate 'string "test39" (subseq "foo8" (length "foo"))) こういう実務向けの機能知らな過ぎワロタ このぐらいの長さの物をもっと読みたいんだけど、良いサイトあります? 当方竹内さんの入門書を一冊通した程度の実力。
856 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 22:42:59.10 ] >>855 どういう分野を勉強したいのか、具体的に詳しく書いた方がいいよ。 あと何を作りたいとか。
857 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:03:07.02 ] >>855 実務向けの機能と言うか、マニュアル(CLtL2)読めばいいじゃん。
858 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:16:28.21 ] >>850 Schemeを使う。半分冗談だけど半分は本気。 Common Lispは利便性と厳格さのトレードオフで利便性を採った言語だから。 多分、その辺が気になるなら、今後も色々引っかかりを覚える事が多いはず。 リーダーをいじって、'()を適当にユニークなデータに置き換えて、 cl:carとかcl:cdrとかcl:consとかも上書き定義して…みたいに頑張るよりは、 nilと空リストが同じことに慣れるか、Scheme使う方が幸せだと思う。
859 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:19:16.92 ] 「実務向けの機能」なら実践Common Lispはどうだろ 部分的にしか読んでないけど パス名の扱いとか懇切丁寧に書いてあってすごい参考になった
860 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:44:00.80 ] >>858 > Schemeを使う。半分冗談だけど半分は本気。 > Common Lispは利便性と厳格さのトレードオフで利便性を採った言語だから。 > 多分、その辺が気になるなら、今後も色々引っかかりを覚える事が多いはず。 勉強で必要最小限Schemeやるけど、今の所、真面目に勉強する気がないなあ。 Scheme使うのは誰かに任せるよ。自分はCL道を極める。 ちなみにSchemeでデバッグ機能も強力で日本語も使える処理系ってRacket? SchemeってCLみたいに処理系分岐ってできないの? Gaucheの良さって分かるんだけど、学習コストをかけた後に後々やっぱり タスキに長し帯に短しで不満が出てきそうなんだよね。 GaucheのコードをRacketに移植ってコストがかかって面倒くさいでしょ。
861 名前:836 mailto:sage [2012/02/08(水) 00:00:15.62 ] >>855 私幼女だけど、concatenateの部分はむしろ教科書的というか、 多分実用的なコードなら正規表現の後方参照使うと思うの。 あと、(concatenate 'string x y)よりは、(format nil "~a~a" x y)使う。 ついでに、(length ...)の部分は#.(length ...)ってする。 あんま長過ぎず、見てて楽しいっていうと、ユーティリティライブラリじゃないかな。 例えば、こんなんどうだろう。 common-lisp.net/gitweb?p=projects/alexandria/alexandria.git;a=tree;js=1 www.flownet.com/ron/lisp/rg-utils.lisp
862 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:27:18.15 ] >>860 CL続けるなら、tやnilの使い回しには慣れたほうが良い。 じゃないと、多分CLOSを学習するとき、一番底にあるクラスにビビる。 Schemeだと、現状だとRacketが優秀過ぎるってのはある。 CLに比べると処理系切り替えは楽じゃない。処理系依存部分が大きく、ある程度は面倒。 でもまあ、Gaucheかはともかく、Schemeを勉強するのは、視野が広がって良いと思うよ。
863 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/02/08(水) 00:45:13.51 ] >>860 処理系ごとの切り替えは srfi-0 があるが…。 srfi.schemers.org/srfi-0/srfi-0.html そもそも srfi-0 をサポートしてない処理系もあるからなー。 racket だと srfi-7 を使えってことになってたと思う。
864 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:47:07.73 ] >>862 > でもまあ、Gaucheかはともかく、Schemeを勉強するのは、視野が広がって良いと思うよ。 英語できて、フランス語できれば、視野が広がるのは分かるんだけど、 時間は有限だからなあ。
865 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:28:29.02 ] >>854 ありがとうございます。読み進めてみます。 >>855 に関連することですが、 THE SEASONED SCHEMERのような短いコードでcommon lispのノウハウを一通り学べるサイトはありますか? とくにseriesの実例をいくつも見てみたいのですが。
866 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:41:13.84 ] wiki文法をhtml風のs式に変換しようとしているのですが インラインの装飾をどう変換するのでしょう あ\*ああ**//強調&斜体//**ううう この行を (:P "あ*ああ" (:EM (:ITALIC "太字&斜体")) "ううう") こうしたいのですが(//で囲まれていればitalic、**で囲まれていればem、\*は*に)、 (defun wiki-syntax->html-like-sexp (text) ;; cl-ppcre (ppcre:register-groups-bind (first second third) ("^(.*?)\\*\\*(.+?)\\*\\*(.*?)$" text) (list first (list :em second) third))) このように書くと:italicに対応するため正規表現を複雑にしなければなりません 読み込んだ文字列全体を:pでまとめるというのも入れると、こんがらがりそうです どうすればいいのでしょう?
867 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:53:05.55 ] wikiの文法は知らないけど、正規表現でなく、parserを書いてモードで切り替えた方が楽なんじゃない? clikiを見たらwiki用のライブラリもあるみたいだから参考にすると良いんじゃないかな。
868 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:56:16.48 ] 自己訂正:コメントじゃないからモードの切り替えは要らないか。
869 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 21:20:22.06 ] >>867 の言うように、再帰下降パーサを手書きするか、CL-Yaccやmeta-sexpを使うか、 いくつかあるパーサコンビネータライブラリを使うかした方が多分楽だと思う。 多分、最終的にはもっと多くのWiki構文をサポートするんでしょ?
870 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 14:41:12.30 ] >>867-869 ありがとうございます。たしかに既存のパーサを利用するのがよさそうですね。 はい。多くのwiki構文をサポートするつもりです。 早速やってみます。
871 名前:866 mailto:sage [2012/02/09(木) 18:55:09.42 ] すみません。続けて質問します。 字句解析を書いたのですが:があらわれると illegal terminating character after a colon: #\ となってしまいます ソースはこちらです paste.lisp.org/display/127608 コロンを特別の字句として解析するにはどうすればいいのでしょうか。
872 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 21:21:08.69 ] >>871 :もreadが読んでる。:の解析部分はこの場合には使用されてない。 もともと内部的にもLispではない文字列だからreadは使えない。怠けず全文字処理すべし。
873 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 14:34:06.44 ] >>871 cl-yaccを使うなら、lexerもライブラリを使えば?
874 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 15:48:00.58 ] >>872 ありがとうございます 指摘を受けてloopのacrossを使って全文字を処理するようこう書き換えました paste.lisp.org/display/127669 処理できたようなのですが、なぜかサンプルと同じように動きません lispuser.net/memo/lisp/2006-03-30-23-58.html の「つくったら早速 REPL で試してみましょう.」以下と同じく出力されると思うのですが >>873 blogs.yahoo.co.jp/oiron_abok/archive/2011/9/21 これを見てcl-lexをいじってみたのですが#\newlineと#\spaceの検出方法がわかりませんでした
875 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 02:09:23.54 ] >>874 あんまloop詳しくないけど、do節の使い方が間違ってる気がする。 あと、字句解析器(lexer)はトークンをひとつずつ返せばいいので、 一度に全体を走査する必要ないはず。 ja.wikipedia.org/wiki/%E5%AD%97%E5%8F%A5%E8%A7%A3%E6%9E%90 それと、想定外の結果になったら、問題の切り分けからすると良いと思う。 この場合、まずlexerが正しく動作するか確認すれば、問題の位置を特定できる。 lexerの中にはloopしかない。loopをマクロ展開すると、どうやら値を返すようになってない。 じゃあ、HyperSpecやCLtL2とかのリファレンスを見てみよう、って感じで。
876 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 03:22:32.57 ] テンションが上がったので、ちょっと書いてみた。 こんな感じのことがやりたかったってことで良いんだろうか。 paste.lisp.org/display/127683
877 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 10:58:50.37 ] >>874 もう要らないかも知れないけど、cl-lexはlexと同じく正規表現で指定する。
878 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 18:22:23.84 ] みなさんありがとうございます。 cl-lexを使うパターンと使わないパターンの二つを書いてみました。 >>875-876 たしかにご指摘のとおりloopの部分がおかしかったです。 そしてまさに>>876 の例が行いたかった処理です。うまく動きました。 ただ、コメントにあるように効率的に処理するために一度に複数のトークンを切り出すのが理想的ですが peek-charを使っても一つ先しか見れません paste.lisp.org/display/127703 このようにして先の文字を読み込むのではなく、はじめにpeek-charを使うと今度は": "の読み込みで 引っかかってしまいます。 >>877 正規表現を書き直したら大方うまく動きました。行も判定できました。 ですが、backslashの判定と、パースの結果をまとめる部分がうまくいきません。 cl-lexを使ってこのように書きました。 paste.lisp.org/display/127704 引き続き調べます。
879 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 20:40:33.48 ] >>878 > ただ、コメントにあるように効率的に処理するために一度に複数のトークンを切り出すのが理想的ですが なぜトークンを切り出す関数を別に作らない? (t (values :token (get-token c in))) とかすれば, ええんちゃう?
880 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 23:42:39.64 ] >>878 分かってるっぽいけど「複数のトークン」じゃなくて、「複数文字のトークン」。 構文解析のときに一文字ずつ解析するより、ブロックごとの方が効率良くなるという話。 とりあえず、ライブラリで字句解析するみたいだからこの辺で止めとく。 あと、コメントに書いたように、"う\うう"だと"ううう"と同じに解釈されるからね。 "う\\うう"じゃないと、文字列にバックスラッシュが含まれることにならない。 あと、colonの区別が付かないのはread-from-stringしてるから。 元の値を使えば良いと思うんだけど、readしてるのは何か事情があるの?
881 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 14:12:28.41 ] >>879 ええ。そうしようとしたのですが、うまくできませんでした。 >>880 read-from-stringを使っていたのはミスでした そのまま値を返せばよいだけでした バックスラッシュについても勘違いしていたようで、 他のファイルのテキストから読み込むときにはバックスラッシュをきちんと認識できていました これで問題が無事解決しました お騒がせいたしました
882 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 17:57:50.83 ] common lispを使った講義や開発シーンを動画で公開しているところはありますか? schemeのsicpなら ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/ がありますが。
883 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 18:47:06.73 ] プログラミングを何も知らない私がClispを始めるには何を用意すれば良いのでしょうか win
884 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 20:18:01.64 ] winでclispもろもろをそろえるなら lispboxでいいんじゃない? 紫藤のWiki と lispbox で検索
885 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 22:19:27.24 ] www.google.co.jp/search?q=common+lisp+video+lecture おなじの物ばかりかもしれないが。
886 名前:デフォルトの名無しさん [2012/02/15(水) 14:08:33.85 ] 長いリストの出力について教えてください。 (print (make-sequence 'list 100)) これをsbclやclispで行うとNIL19個毎に改行されてしまいます。 どうすれば改行せずに出力出来ますか?次工程でgrepなんかを使いたいのです。 よろしくお願いします。
887 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 14:38:12.07 ] >>886 (let ((*print-pretty* nil) (*print-length* nil)) (print (make-sequence 'list 100)))
888 名前:デフォルトの名無しさん [2012/02/15(水) 14:46:42.86 ] >>887 動きました。ありがとうございます。 pretty print絡みだったんですね。
889 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:24:36.69 ] >>885 ありがとう slimeの入門動画なんてものがあったんだな 知らなかったよ
890 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 18:43:19.33 ] “@ajiyoshi: NTTデータでcommon lispが使われるようになったりするのか?!w t.co/9zLNfeRs 株式会社数理システムの子会社化について 2012年2月15日 | ニュースリリース | NTTデータ” 株式会社数理システムの子会社化について ttp://www.nttdata.co.jp/release/2012/021500.html
891 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 07:02:40.13 ] MSI、NTTデータの子会社になるんだ。 Common Lispユーザにとって色々有益な情報を出してくれる所だから、少し不安。
892 名前:デフォルトの名無しさん [2012/02/17(金) 01:32:25.22 ] sbclでのコンパイルについて教えて下さい。 以下の方法でSBCL 1.0.40.0.debianでは動いていたはずなのですが、 SBCL 1.0.50.0.debianではエラーが出てしまいます。 メモリが少ないために小分けで何万回と実行する予定ですので コンパイル済みのバイナリとしたいのです。 どうすれば良いでしょうか?よろしくお願い致します。 hell.lisp: (print "HELL!") $ sbcl --noinform --disable-debugger --eval "(compile-file \"hell.lisp\")" --eval '(quit)' ; compiling file "/.../hell.lisp" (written 17 FEB 2012 XX:XX:XX AM): ; compiling (PRINT "HELL!") ; /.../hell.fasl written ; compilation finished in 0:00:00.003 $ chmod +x hell.fasl $ ./hell.fasl unhandled SB-C::INPUT-ERROR-IN-COMPILE-FILE in thread #<SB-THREAD:THREAD "initial thread" RUNNING {AA65919}>: READ failure in COMPILE-FILE: SB-INT:SIMPLE-READER-ERROR at 27 (line 2, column 2) on #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}>: illegal sharp macro character: #\
893 名前:デフォルトの名無しさん [2012/02/17(金) 01:34:17.67 ] (つづき) 0: (SB-DEBUG::MAP-BACKTRACE #<CLOSURE (LAMBDA #) {AA75BAD}> :START 0 :COUNT 128) 1: (BACKTRACE 128 #<SB-SYS:FD-STREAM for "standard error" {AA669C9}>) 2: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}> #<unavailable argument>) 3: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}>) 4: (INVOKE-DEBUGGER #<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}>) 5: (ERROR SB-C::INPUT-ERROR-IN-COMPILE-FILE :CONDITION #<SB-INT:SIMPLE-READER-ERROR "illegal sharp macro character: ~S" {AA71791}>) 6: (SB-C::READ-FOR-COMPILE-FILE #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> 25) 7: (SB-INT:LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
894 名前:デフォルトの名無しさん [2012/02/17(金) 01:34:51.95 ] (つづき) 8: ((FLET SB-FASL::LOAD-STREAM) #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> NIL) 9: (LOAD #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT) 10: ((FLET SB-IMPL::LOAD-SCRIPT) #<SB-SYS:FD-STREAM for "file /.../hell.fasl" {AA697D9}>) 11: ((FLET #:WITHOUT-INTERRUPTS-BODY-[PROCESS-SCRIPT]69)) 12: (SB-IMPL::PROCESS-SCRIPT "./hell.fasl") 13: (SB-IMPL::TOPLEVEL-INIT) 14: ((FLET #:WITHOUT-INTERRUPTS-BODY-[RESTART-LISP]30)) 15: ((LABELS SB-IMPL::RESTART-LISP)) unhandled condition in --disable-debugger mode, quitting $
895 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:07:44.25 ] lispboxをXPで使いたいんだがbat実行しても動かん; 落としてきてbat実行するだけじゃダメなのかこれ? linuxのはsh実行するだけで普通に動いたんだが
896 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:39:03.41 ] 追記:後、時々、win版は自動インストーラがついてるって書いてるブログあるけど、 これは昔のバージョンだけ?lispbox-0.7には入ってないみたいだけど
897 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:20:45.30 ] batファイルをどう実行したの? ダブルクリックではなくコマンドプロンプトから実行すれば 何かしらエラーメッセージでも出そうなものだけど
898 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:46:01.31 ] >>892 むしろ、その話が事実だと、前はFASLをそのまま実行できたということに。マジですか。 SBCLでバイナリを作るには、cl:compile-fileじゃなくてsbcl-ext:save-lisp-and-dieを使えば大丈夫。 Common Lispでは(Cとかでもそうだけど)コンパイルと実行形式を作ることとは別なのでご注意。 cl.cddddr.org/index.cgi?%bd%e8%cd%fd%b7%cf%3a%bc%c2%b9%d4%a5%d5%a5%a1%a5%a4%a5%eb%a4%ce%ba%ee%a4%ea%ca%fd ただ、メモリの消費量とバイナリにすることって、多分あんまり関係ないと思うけど、 それはそれで大丈夫なんだろうか。
899 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 08:02:38.86 ] >>897 すいません、自己解決しました; windowsのユーザーフォルダ名が日本語だったのでそれが原因でエラーが 起きてた模様 レスありがとうございました
900 名前:デフォルトの名無しさん [2012/02/17(金) 13:12:34.76 ] >>898 ありがとうございます。 >むしろ、その話が事実だと、前はFASLをそのまま実行できたということに。マジですか。 faslにはシバン(#!/usr/bin/sbcl --script)が付加されてるので実質はsbcl呼んでるんですけどね。 0.50にも付いてるのですが動かなくなりました。 >SBCLでバイナリを作るには、cl:compile-fileじゃなくてsbcl-ext:save-lisp-and-dieを使えば大丈夫。 save-lisp-and-die時のTOPLEVELの指定が分かりません。 スクリプトとコンパイルのソースを共有したかったので。 実行時型チェックすれば良いのだろうけど。 >ただ、メモリの消費量とバイナリにすることって、多分あんまり関係ないと思うけど、 起動に掛かる時間を減らしたいのです。 コンパイルとか数秒掛かるでしょ。何万回とかになると何時間にもなるのではないかと。 実際は何百万回とかだた。
901 名前:デフォルトの名無しさん [2012/02/17(金) 13:27:19.85 ] 補足です。 # save-lisp-and-die時のTOPLEVELの指定が分かりません。 WEBだと関数を指定しているものばかりなのですが、 スクリプトの場合は関数の呼び出しまで記述する必要があり 共用させるのに「おまじない」が必要になります。 例示した様なスクリプト形式のままで実行出来る コンパイルの方法が分からないとの意味です。
902 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:18:49.78 ] >>900 なるほど。そちらの事情は把握できたと思う。 とりあえず、1.0.51以降でのFASL周りの変更は、型関係の不具合修正だけなはずなので、 1.0.55でも直ってない気はする。1.0.40以降のリリースノートにも書いてないように見える。 それって正式な機能なのかな? マニュアルのFASLの項には特に書いてない感じだけど。 正式な機能ならLaunchpadへ報告どうぞ。そうでなくとも、MLで聞いてみても良いかも。 自分なら、トップレベルの関数を利用する形にスクリプトのコードを自動変換し、 それをコンパイルしてロード、save-lisp-and-dieするまでの処理を自分で書いちゃって、 今度からそれを使うようにすると思う。一度書いちゃえば次からは使い回しもできるし。 ただ、いかにもkludgyではあるので、そちらのお気には召さないかも。 それと、多分バイナリにまでする必要はなくて、ロードした状態のイメージを保存して、 それを処理系を起動するときのイメージとして指定すれば、同じ効果が得られると思う。 ロード時間を削るために良く使われる手じゃないかと。
903 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:03:16.60 ] >>900 いまいち何がしたいのか理解できてないけど、バイナリにしたいのではなくて、コンパイル済のファイルを呼び出したいだけではないの? シバンに任せずに普通にloadしてはいけないの?
904 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:07:10.83 ] >>900 エラーの直接の原因としてはfaslファイルの2行目の# FASLの部分でマクロキャラクタと判別してるからだと思う。
905 名前:デフォルトの名無しさん [2012/02/17(金) 20:30:39.44 ] 沢山のコメントありがとうございます。 >>902 LISP初心者なんでLaunchpadとかよく分かりません。 ベテランLISPerが誰も困ってないのなら仕様どおりなのでしょう。 処理時間の関係だけなので実はソースを弄ってsave-lisp-and-dieで既に動かしてはいます。 今まで便利だったのでそのまま使えたらと考えました。 >ただ、いかにもkludgyではあるので、そちらのお気には召さないかも。 ソースコードの可読性が損なわれないなら問題ありません。 >トップレベルの関数を利用する形にスクリプトのコードを自動変換し、 LISPならこんな事も簡単?に出来るのでしょうか。勉強してみます。 >ロードした状態のイメージを保存して、それを処理系を起動するときのイメージとして指定すれば、 これってsave-lisp-and-dieの事ですよね。 >>903 個人的にsave-lisp-and-dieの方法も検討していたので書き方が混乱していました。 目的は処理時間の短縮なので方法には拘りません。今まで(とは言っても数日ですが) 動いていたのが環境を変えたら動かなくなったのでどうなったのかなと。 >>904 なるほど。 実は0.40ではシバン付けたままでもコンパイルが通ってたんですよ。 シャープマクロ?の解析方法が変わったのかもしれませんね。
906 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 00:55:04.52 ] >>905 Launchpadってのは、オープンソースプロジェクトのホスティングサービスで、 その機能のひとつであるバグトラッキングシステムをSBCLは使ってる。 非公式な機能でなければ、開発者に不具合報告してみれば良いのでは、って話。 イメージの件はそう。:executable tを指定しなければ単なるコアイメージができる。 あと、コードの変換については、別にそんな難しいことを言ってるわけじゃなくって、 こういうのをcompile-fileの代わりに使えば良いんじゃないかと思う。 (defun script->executable (exe-file-name src-file-name) (let ((tmp-file-name (format nil "~a.tmp" src-file-name)) (toplevel-symbol (gentemp "TOPLEVEL"))) (with-open-file (src src-file-name) (with-open-file (tmp tmp-file-name :direction :output :if-exists :error) (format tmp "(defun ~a ()~%" toplevel-symbol) (do ((line (read-line src nil) (read-line src nil))) ((null line)) (write-line line tmp)) (format tmp "~&)~%"))) (compile-file tmp-file-name) (load tmp-file-name) (delete-file tmp-file-name) (sb-ext:save-lisp-and-die exe-file-name :toplevel toplevel-symbol :executable t)))
907 名前:デフォルトの名無しさん [2012/02/18(土) 18:08:27.54 ] >>906 コードまでありがとうございます。全体をdefunで括っても構わないのですね。 何となくdefunやrequireなんかを除外しないといけない様な気がしていました。 早速シバンの除去とコマンドラインから起動出来る様にしました。 これで今まで同様の操作で行けます。本当にありがとうございました。
908 名前:デフォルトの名無しさん [2012/02/18(土) 18:09:12.81 ] あと、皆様ごめんなさい。 SBCL自体では *シバンはサポートしてない* みたいです。 私の環境で動いたのは~/.sbclrcに以下を記述していた為でした。 (同様な記述がいくつもありますがおそらくwww.kono.cis.iwate-u.ac.jp/~hiki/?SBCL からのコピペ) 0.40でも0.50でも全く同じに設定(FTPでコピーしたのでcksum値も同じ)してあるのですが、 動作が変わった理由が分かる方おられますか? なお、上記代替策がありますのでそれ程逼迫したものではありません。 お騒がせして申し訳ありませんでした。 ;;; If the first user-processable command-line argument is a filename, ;;; disable the debugger, load the file handling shebang-line and quit. (let ((script (and (second *posix-argv*) (probe-file (second *posix-argv*))))) (when script ;; Handle shebang-line (set-dispatch-macro-character #\# #\! (lambda (stream char arg) (declare (ignore char arg)) (read-line stream))) ;; Disable debugger (setf *invoke-debugger-hook* (lambda (condition hook) (declare (ignore hook)) ;; Uncomment to get backtraces on errors ;; (sb-debug:backtrace 20) (format *error-output* "Error: ~A~%" condition) (quit))) (load script) (quit)))
909 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 03:31:07.45 ] stumpwmはそろそろ実用してもいいのだろうか
910 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 19:41:19.23 ] emacsのslimeを使っていて疑問に思ったのですが、 slimeやACLのIDEができる前のcommon lispの開発は どういう環境で行っていたのでしょう? まさかとは思いますが括弧の対応を一つ一つ目で確認していたのですか
911 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 19:47:39.55 ] Emacsが処理系の中に実装されていたのです。MacLisp, Symbolics 二昔前のLispは統合開発環境しかなかったんです。(ちょっと嘘w) というか統合開発環境とはLispのことでした。(Basicとかもあったけどw)
912 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/02/20(月) 20:00:20.08 ] 今だと OS, 言語処理系, 開発環境 という概念が分かれているけど、 昔はそれほどきちんとした線引きが無かった。 今でも厳密に定義付けされているわけではない。 俺は世代的にそれほど古い時代を知ってるわけじゃないが、 N88-Basic (DISK版) が OS であり 言語処理系であり エディタ であり デバッガでありアセンブラであったことは知ってる。 (使ってた) それと似たような感じなのかなぁ?
913 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:02:35.23 ] Emacs としては標準で LISP モードがあったし、 さらに、各処理系ごとに独自の emacs モードを添付していたりしてた。 統合環境としては SLIME の前 (90年代) には ILISP というものががあった。 自分の経験(ここ20年)でいえば、手で括弧対応ってのは一度もなかったね。
914 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:37:47.09 ] うろ覚えなんだけど、昔、超括弧ってあったよね? ] を入力すると括弧全部閉じたことになるやつ。 エディタが賢くなって無意味になったけど。
915 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:40:57.06 ] [もあったよ。 ]で最初の[まで全部閉じる。 要するに[(([((]]は、(((((())))))と同じ。
916 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 01:10:50.04 ] みんな若いんだなぁ PC-8001でカセットテープからLispインタープリタ読み込んで 左かっこで指折って右かっこで指伸ばして数えてたこと思いだした
917 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 11:36:03.91 ] [(((;゚Д゚]
918 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 11:42:33.18 ] 911です。皆さんありがとうございます。 知らない話ばかり聞けてうれしいです。 たしかgaucheのshiroさんだったと思うのですが common lispはそれ一つで完結する開発環境を持っているとおっしゃっていた気がしますが 伝統的なものなのですね。勉強になりました。
919 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 21:12:52.60 ] >>914-915 それは凶悪シンタックスだな。
920 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:53:27.22 ] lisp始めたてだけどまだまだ括弧の多さになれない。
921 名前:866 mailto:sage [2012/02/22(水) 16:21:37.34 ] 字句解析について質問していたものです。その節はありがとうございました。 今度はcl-yaccについてお聞きしたいのですが、 paste.lisp.org/display/127909 ソース冒頭に書いた3点に対応するにはどう書き換えればよいでしょうか。
922 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 21:20:24.55 ] Common Lisp はそれ単体で完結した開発環境ではない。 その証拠にエディタを起動する手続き ed が存在する。
923 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 21:54:17.92 ] edは内部で実装されてる関数でもいいんだけども。 (ed '関数名) (ed "ファイル名") こんな関数でもいいし。 CMU Common Lispでは内部にEmacs-likeなeditor, HEMLOCKが実装されていて、 ed関数を実行するとHEMLOCKが呼び出された。 最近使ってないから今もそうかは知らない。
924 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 07:41:50.10 ] sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E% 8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E /lisp/common-lisp/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%AE%E7%82%B A%E3%81%AElisp%E7%92%B0%E5%A2%83 ここのlispboxの使い方の項なんですが、 smartcalcconsoleini.lispをc-c c-kでコンパイルしようとしても 1 compiler notes: smartcalcconsoleini.lisp:14:1: warning: Undeclared free variable *WARN-ON-FLOATING-POINT-CONTAGION* Compilation failed. となってしまうんですが、どうしたらいいのでしょうか?
925 名前:924 mailto:sage [2012/02/23(木) 09:37:42.03 ] 失礼、自己解決しました; 普通に (load "smartcalcconsoleini.lisp") で動きました; 手順にコンパイルするよう書いてあったのでそうしたのですが、、、 動いてよかったけどなんで動いたのか・・・;
926 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 02:42:41.49 ] PAIP邦訳の5章の演習問題の回答に5.19とあるのですが5.18の表記ミスですか?