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)
577 名前:デフォルトの名無しさん [2011/12/12(月) 07:50:42.44 ] ubunto11.04 sbcl slimeでなぜかmapがエラーになるのは 何故でしょうか
578 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 08:54:50.86 ] >>577 詳しく。コードとエラーメッセージなど。
579 名前:デフォルトの名無しさん [2011/12/12(月) 10:13:20.36 ] (let ((myA (make-array 3 :initial-contents '(1 2 3)))) (map 'array #'(lambda (myX) (+ myX 5)) myA)) ARRAY is a bad type specifier for sequences. [Condition of type SIMPLE-TYPE-ERROR] Restarts: 0: [RETRY] Retry SLIME REPL evaluation request. 1: [ABORT] Return to sldb level 6. 2: [RETRY] Retry SLIME REPL evaluation request. 3: [ABORT] Return to sldb level 5. 4: [CONTINUE] Continue from break. 5: [ABORT] Return to sldb level 4. --more-- Backtrace: 0: (SB-KERNEL:%MAP ARRAY #<FUNCTION (LAMBDA #) {AF5978D}> #(1 2 3))
580 名前:デフォルトの名無しさん [2011/12/12(月) 10:16:45.56 ] ↑>>578
581 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 10:52:16.49 ] ARRAY is a bad type specifier for sequences. と書いてあるようだが…
582 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 11:14:34.31 ] >>579 配列はシーケンスじゃねーです。 www.lispworks.com/documentation/HyperSpec/Body/t_array.htm www.lispworks.com/documentation/HyperSpec/Body/t_vector.htm ベクタ(1次元の配列)はシーケンス。 (map 'vector #'identity (make-array 3 :initial-contents '(0 1 2))) ;=> #(0 1 2)
583 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 13:22:01.17 ] >>582 小学3年生ぐらいでもsbclを使うようになったのか。なんかすごい時代になったなあ。 >>579 ご両親に英和辞書の引き方を習うとLispの勉強がはかどるよ
584 名前:デフォルトの名無しさん [2011/12/13(火) 00:09:59.48 ] ありがとうございました。
585 名前:デフォルトの名無しさん [2011/12/14(水) 10:38:08.67 ] common-lisp.net/project/commonqt/
586 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 16:15:21.01 ] >>585 Qt4.7でもつかえるのかな?
587 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 20:50:42.23 ] APIが劇的に変わってなければ使えるように見える。 QtもCommonQtも使ったことないけど。 例によって、C++とCFFIを橋渡しするC++コードと、 その上で動作するLispコードの構成って感じ。
588 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 21:55:52.02 ] apacheのmod_lispでsbclが使える無料鯖ってどのくらい需要があるのかな? 電気代やセキュリティとかを気にせずWeb開発できるとlisperとしてはうれしいよね。 LTSが長くて管理しやすそうなのはCentOSだけど、ユーザが自宅のPCローカルで同じ 環境を作りやすいのはUbuntuなんだろうなあ。
589 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 22:48:35.57 ] >>586 前に見た時は、commonqtはQt smokeっていうC言語用のラッパーを通してcffiで 実装されていたと思うので、Qt smokeがQt4.7に対応している必要があると思う
590 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:56:19.93 ] >>588 無料鯖とかは嬉しいと思うけど、最近だとIaaSで好き放題できるから、 あんまり需要ないかも。CCL使えるPaaSとかも出てきたみたいだし。 お金ない学生とかは嬉しいかもしれないけど。 一昔前と比べると、この手のサービスも信じられないくらい安くなったよね。
591 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 01:13:44.82 ] >>590 その激安IaaSサービスを具体的に教えてくれ。 PaaSもググったけど出てこないんだけど教えて。
592 名前:デフォルトの名無しさん [2011/12/16(金) 01:16:04.75 ] 板違い toro.2ch.net/hosting/
593 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 01:44:24.18 ] >>591 IaaSなら さくらのクラウド cloud.sakura.ad.jp/ CloudCore www.cloudcore.jp/ とか。月\1500〜\2500程度。普通に安いよね? PaaSは、自分が知ったのはこれ経由。 www.fluxflex.com/library/101 プリインストールかと勘違いしてたけど、 処理系のバイナリも含めてアップロードする模様。 動作はするみたいだよ。
594 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 03:12:00.72 ] >>593 こういうのがあるんだね。 でも、大学生以下だと高いよ。 ビジネス用途じゃないものはリーズナブルコースでワンコイン以上取ってはダメだと思うんだ。 一般大学生の場合(大学生一人暮らしって少なくなったらしいけど) 光回線・プロバイダ代(7,000円)とケータイ代(3,000円)で10,000円。そこに2,000円はきつい。 実家・高校生の場合 光回線・プロバイダ代(7,000円)は親に丸投げできて免除できるだろうけど、ケータイ代(3,000円)は 全額親が払ってくれるか怪しいし、ケータイが必須になってしまった高校生のこづかいっていくらよ。 そこに2,000円はきつい。 ちなみに自分の高校3年生のときのこづかいは3,000円だったよ。両親の年収合わせて1,000万円はあった 一応中流世帯。まだネットもなくポケベルが流行り始めた頃でケータイ所持必須の同調圧力がなかった 頃の話だ。
595 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 07:17:41.31 ] 働けよ。同世代だが普通にコンビニでバイトして、小遣いはゼロだったわ。
596 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 10:49:27.99 ] そもそも高校生以下にどれほど需要があるのか あとスキル持ってる学生はお金に困ってないんじゃ
597 名前:デフォルトの名無しさん [2011/12/16(金) 15:03:26.84 ] 既存のxmlをcommon lispで書き換えるつまり処理した結果を上書き保存するというスクリプトを作成したいのですが、 うまくいきません <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.0//EN" "www.oasis-open.org/docbook/xml/4.0/docbookx.dtd "> <article> <articleinfo> <title>test</title><author>my @@@name!</author> </articleinfo> <section id="rrr"> <title>test1</title> <p>hoge@@@foo</p> <pre>haao@@@u</pre> </section> </article> このxmlのpとpreの@@@をpiyoに書き換えたいのですが common lisp のxml parser である cxml を使おうとしたら "URI scheme :HTTP not supported" とエラーメッセージが表示されます common-lisp.net/project/cxml/quickstart.html#id54163 の "Can I skip loading of DTDs entirely?"どおりにやってみたのですが、 それをもとにどうすればリストを取得できるのか書いていないためわかりません cxmlで(恥ずかしながら)処理できないなら他のライブラリを活用しようと思うのですが pとpreの要素に限定して@@@を書き換える処理におすすめのものはありますか
598 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 18:36:35.62 ] quicklisp.lispは使っている? httpもローカルファイルも両方できたよ。 (let ((uri "www.oasis-open.org/docbook/xml/4.0/docbookx.dtd ") (pathname "dtdexample.dtd")) (flet ((resolver (pubid sysid) (declare (ignore pubid)) (when (puri:uri= sysid (puri:parse-uri uri)) (open pathname :element-type '(unsigned-byte 8))))) (cxml:parse-file "hoge.xml" (cxml-dom:make-dom-builder) :entity-resolver #'resolver))) parse関連をまったくやったことないがttp://common-lisp.net/project/cxml/quickstart.htmlをもう一回頭からやり直して それから自分のやりたい処理に取り組んだらどうかな。このページをさらっと読みながらcxmlを触ってみたけどcxmlで十分 なんじゃないのかな。軽くググった感じだけどかなりメジャーなライブラリの部類みたいだし。 目的の処理ができたらcxmlのインプレッションを教えてくれや。 がんばって。
599 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 00:15:05.42 ] >>598 ありがとうございます 改めてやってみたらただしく動きました。 ですが、make-xmls-builderからリストを生成して操作しようとするとちょっと扱いづらいことがわかりました こうなります ("article" NIL " " ("articleinfo" NIL " " ("title" NIL "test") ("author" NIL "my @@@name!") " ") " " ("section" (("id" "rrr")) " " ("title" NIL "test1") " " ("p" NIL "hoge@@@foo") " " ("pre" NIL "haao@@@u") " ") " ") ここで一旦s-xmlを使ってみたら使いやすそうな形式のリストを得られました (:|article| (:|articleinfo| (:|title| "test") (:|author| "my @@@name!")) (:|section| (:@ (:|id| "rrr")) (:|title| "test1") (:|p| "hoge@@@foo") (:|pre| "haao@@@u"))) ただこれをどのようにして書き換えるかがよく分からないので 本を読み直してみます
600 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 02:52:55.63 ] >>597 >>599 common-lisp.net/project/cxml/quickstart.html#id54163 paste.lisp.org/display/126526 普通にDOMれば良いと思う。あるいはSTP。 Closure XML以外だとXMLSが軽いし使いやすくて好みだけど、 検証できなかったり、エラーハンドリングが終わってる欠点がある。
601 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 03:40:37.45 ] >>599 >>336 で出ているcl-ppcreで後は置換するだけじゃないの。 ttp://weitz.de/cl-ppcre/#splitting 軽い疑問なんだけどregexを使わない低レベルな検索・置換等の文字列処理関数群ってないの? ググるとcl-ppcreばかり出てきちゃうんだよなあ。 あとまた別の話で低レベルな検索・置換等の文字列処理のみ(日本語不可)だったらライブラリ不要で 100行未満で書けないかね。非lisperに極力ライブラリをインストールさせない方が動かす敷居は 低くくなるよね。
602 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 06:10:32.50 ] どうでもいいな。
603 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 10:27:17.59 ] >>601 ツリーの一部を書き換える方法が分からないんだと思うけど。 文字列処理は、それが好きならsearchでもreplaceでも好きにやれば良いよ。 (let* ((string "The quick brown fox jumps over the lazy dog") (from "fox") (to "tiger") (pos (search from string))) (if pos (let ((before (subseq string 0 pos)) (after (subseq string (+ pos (length from))))) (concatenate 'string before to after)) nil)) 何でHyperSpecとかCLtL2読まないの? 速度が必要でBMHとかQuick Searchを自前で実装、とかならまだしも、 よく分からん敷居のために既存のライブラリをインストールせず、 俺ライブラリを作ろうとか最早ギャグ。Quicklispで一瞬じゃん。
604 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 12:51:40.03 ] >>603 糞lisperだけどツリーの一部を書き換えるのは難しそうだけど、最悪力技でもできそうな感じかな。 HyperSpecをみてみたけどみつけられなかった。もの凄く真剣に探したわけではないから軽い疑問と 書いた。 adsfよりはQuicklispは使いやすいし信用しているけど、ライブラリがあれば99%以上の精度で落とせて 使えたっけ。 あと一応ベータとしているのもあるけどミラーもないもまだないよね。どうしても非lisperに対してQuicklispを 使わせるのも大掛かりな気がしてならないんだよな。あと何かの処理をさせるツールが欲しいときにLisperの ブログに引っかかってソースが載っていてもメジャーなライブリについては触れられていないでしょ。ライブ ラリ揃えるべく素早くQuicklispに辿りつけるかね。 まあ、そういうのはCommonLispに求めずにPythonとかに任せておけばいいんじゃないというのもあるけどさ。 そういうところがCommonLispの普及を阻害しているなあと個人的に思う。 ttp://www.unixuser.org/~euske/doc/python/python-lisp-j.html の表の赤字で書かれているパッケージ /モジュールは使いづらい(Harder to use)、GUI, Web などのライブラリは標準なしは解決された? Japanese Translation Changes:公開。(2002/10/13)と書かれているから原文は2000年頃なのかな。 とりあえずGUI, Webなどのライブラリのデファクトスタンダードが決まっているならPythonの標準ライブラリと 呼応する形で改めて示した方がわかりやすいし利用しやすいのかな。"CLikiをみて好きなの選んでね。"は乱暴 過ぎでしょ。 デファクトスタンダードを(一応、合意の下)ちゃんと定義するとは違うけど、CLikiにアマゾンのレビュー システムみたいなのがあれば玉石混交から適切な玉を選べそうだけど。
605 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 14:51:56.26 ] >>604 まあ、いつもの人だって文章から滲み出る雰囲気で分かるけど。 その99%っていうのはどこから来た数字なのかな? 何か意味がある? Amazon S3がバックエンドだそうだから稼働率の保証は99.9%らしいけど、 そんなのは本当にどうでも良い気がするよ。 Quicklispが大がかりなら、PerlやRubyではCPANやRubyGemsを使わないし、 LinuxやWindowsでもパッケージシステムを使わないで過ごしてるの? 自分ですべてのライブラリを開発して保守する方が敷居が低いと本当に思う? 批判のための批判になっていないか? より具体的に何をどうして欲しい? ちなみに、日本語でのライブラリの紹介とか、Pythonライブラリの実装とか、 CLikiでのお勧めライブラリ紹介とか全部すでに存在自体はあったりする。 無論「初心者には」CLikiを見ろで済ませないよ。知ってれば案内すると思う。 ただ、Lispのここが、って語ってる人、別に初心者じゃないよね。
606 名前:599 mailto:sage [2011/12/17(土) 15:53:00.46 ] >>600-601 ありがとうございます。 >>600 のxmlsとxmlの両方の例を示してくださり勉強になります (木構造を渡り歩くwalkerがとくに)
607 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 17:16:33.39 ] >>605 99%の数字はあんまり意味はない。そのくらいの精度・品質ならユーザーとしては困らないし、我慢できる範囲 だろうなあと思っているだけ。 > Quicklispが大がかりなら、PerlやRubyではCPANやRubyGemsを使わないし、 > LinuxやWindowsでもパッケージシステムを使わないで過ごしてるの? Linuxに軽くでも腰をすえている人ならaptやyumでパッケージシステムを使う人が多いでしょうよ。aptやyumでライブ ラリを落とせるなら落とすだろうけど、非Perler,非RubyistがCPANやRubyGemsを使うかな。処理系に標準 パッケージシステム(山)があるなら使うって体ができている人(登山家)の考え方じゃないの。 > 自分ですべてのライブラリを開発して保守する方が敷居が低いと本当に思う? そんなこと言っていないよ。変な曲解はやめてくれ。 ようするに"Pythonの標準ライブラリが便利そうだな。ブログでチラシの裏コードを書いて非Pythonistが 容易に動かせるってうらやましい"って話だな。 > ちなみに、日本語でのライブラリの紹介とか、Pythonライブラリの実装とか、 > CLikiでのお勧めライブラリ紹介とか全部すでに存在自体はあったりする。 一部の人に流通してもしようがないと思うんだけど。 Lispコミュニティ維持・拡大のための仕掛けや仕組み自体が良くないんじゃないのではないのかという疑念が 生まれてきた。一般Lisperが道にゴミを捨てない・落ちているゴミ拾うぐらいのことで自然と規模の維持が できて、ちょっとした風が吹けば拡大していくような状況ってできると思うし、そのくらいのポテンシャルを 持っている言語でしょ。非Lisperは道にゴミを捨てなければ落ちているゴミを拾うことなんてしなくていいし、 楽しんで使ってくくればいい。 あとリンクのページは駄文じゃないのでざっとでも読んで欲しいね。
608 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 17:20:01.89 ] Rubyはディストロのパッケージングシステムで入らないライブラリが多いとですよ
609 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:22:44.19 ] >>607 毎度思うんだけど、独自の自分だけに通じる数字持ち出すの止めようよ。 >>601 の「低レベルな 」の段落とか、まさに車輪の再発明の推奨なんだけど、これも曲解? 既にある程度評価されている、整備されたライブラリがあって、入門者がそれを知らないなら、 使うように導きこそすれ、同等のものを新規に書きましょう、なんて普通言わないでしょうよ。 最近ようやっと、まともに動くパッケージマネージャ(Quicklisp)も出てきた状況で。 あとね、疑念がどうこう言うなら実際に動いてみなよ。実際に日本語の情報を書いたり、 処理系の機能向上のために寄付したり、イベントに参加したり、布教して盛り上げたり。 どうも、今いる人たちが無関心で努力してないように思いたくて仕方ないみたいだけどさ。 一気にドラスティックに変えたりなんて、そうそうできないんだよ。一歩ずつ進むしかない。 一部の人にのみ知られている状況なんて百も承知で、改善するために動いてる人もいる。 君がそういう活動に本当に協力してくれるなら、どこでも歓迎されると思うよ。 本気でやる気があるならその原動力になって欲しい。これは煽り抜きで。 最後に、Lispに関する文書なんてお決まりなんだから、大抵のLisperは読んでると思うよ。 NorvigとかGarret(Gat)とか。pgのエッセイへの反応とかね。問題があるのは知ってる。 だからって、一気にそれを改善とかできないんだよ。魔法の杖なんてない。
610 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 20:16:05.17 ] ブログを参考にするのは分かっているときにするべきだと思うなあ。 推奨ライブラリは www.cliki.net/Current%20recommended%20libraries
611 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:07:37.55 ] cl-ppcreで改行を取り除くにはどうすればいいでしょうか
612 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:45:57.32 ] >>611 (ppcre:regex-replace "\\n" (format nil "~%") "") ;=> "", T (ppcre:regex-replace "\\n$" (format nil "a~%") "") ;=> "a", T
613 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:06:59.31 ] >>610 こんなページがあるんだね。これが欲しかったのよ。いつもCLikiはある処理のカテゴリの 雑多な紹介ページをみていたわ。サンクス。 あとブログって俺がリンクしたページのこと? リンクしたのは作者のページだし、CLikiから飛んでそこに行ったんだけど注意するなら ちゃんとリンクチェックして書き込んで欲しいなあ。ゴミを拾っているつもりなんだろうけど、ゴミを散らか してなおかつ昼食に食った弁当と飲み物をポイ捨てしているようでは世話ないよ。あとこれだけライブラリ 提供しているんだから超有名人なんじゃないの。自分は今知ったけど。 あとアンカーをちゃんと付けろよ、バカ。アンカーの付け方がわからないなら半年ROMれ。 610が求める2chのCLスレが道にゴミだらけで誰も拾わないスレを望むならそういう振る舞いもかっこいいし、 リソース食いつぶして、玉石混交の2chで玉を弾き、悪貨が良貨を駆逐して焦土化して入門者を路頭に迷わせて 他の言語の扉を叩かせるのもありだろうなあ。 正しくアンカーをつける。反論するときはリンクをチェックする。これだけを教えるためにこのくらい言わない とわからんのだろ。lispをちょっとかじって頭を働かせればどういう行いが良くて、どういう行いが悪いかなんて わかるだろ。歳を重ねればもっと鮮明になるしな。 ttp://weitz.de/ CHUNGA - Portable chunked streams for Common Lisp. [1.1.1 / 2010-05-19] CL-DONGLE - A Lisp interface to SG-Lock dongles. [0.1.2 / 2008-05-01] CL-INTERPOL - String interpolation for Common Lisp. [0.2.1 / 2008-07-25] CL-PPCRE - Portable Perl-compatible regular expressions for Common Lisp. [2.0.3 / 2009-10-28] CL-UNICODE - A portable Unicode library for Common Lisp. [0.1.2 / 2011-08-31] CL-WHO - Yet another Lisp markup language. [0.11.1 / 2008-03-28] DRAKMA - A Common Lisp web client. [1.2.4 / 2011-08-31]
614 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:08:54.39 ] 「僕は無能です」まで読んだ
615 名前:610 mailto:sage [2011/12/17(土) 22:23:58.96 ] >>613 ブログについては、ブログは間違いや迂遠な方法を紹介していることも多いという、自分の所感から。 アンカーについては、書き込み以前の流れ全体に対してレスしたつもりで、 具体的にどのレスに対するものかは考えてなかったので。
616 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:26:35.96 ] 何の議論してるのか傍目には全くわからんのだが。二人とも、もっと簡潔に書いてくれよ。
617 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:37:38.60 ] 俺:「Quicklispマンセー。あと、個人でコツコツ布教頑張ってる人いるんだから、 あんま文句言うのやめね? 自分が上手くできるというならやってみたら」 を、煽りつつ。何かよく分からん理由でQuicklispとか諸々disられたからイラッときて。 前から何かヌーディストビーチとか色々変に絡まれてたフラストレーションも含めて。 はてなのCLの人とかおにぎりの人とか、ILCの関係者とか色々頑張ってんのにさー。
618 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:01:47.78 ] #1:すぐに話の風呂敷を広げる #2:よく理解しないまま突っ走る #3:嫌われていると勝手に思い込んでいる #4:キレて他人に八つ当たりする #5:やたらと自分の正当性を主張する #6:何も自分で決めない #7:何かにつけて理屈をこねる #8:やたら褒めてほしがる #9:他人の話を聞かない #10:何が言いたいのかわからない japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20421237-2,00.htm
619 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:04:06.54 ] >>612 ありがとうございます。\nでうまく処理できないと思いましたが \\nだったのですね
620 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:15:23.70 ] >>618 初めて2chで勉強になった情報だわ ありがとう
621 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:23:32.98 ] 肩の力を抜けよ
622 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:36:45.48 ] >>615 ブログ参照うんぬんはテンプレ案としてはっきり出せよ。言葉足らずで全然わからんよ。 ネットの先には生身の人間がいるんだよ。ちゃんと3回読んで、自分の伝えたい相手に明確に宛てて、 違う意図として取られないか、言葉足らずじゃないかとかちゃんと判断している? >>617 団体で動いている人は良いけど。個人でがんばるのは限度があるんじゃないの。もちろん、複数で まとまって活動するってもの凄く難しいことなんだけど。 "誰々が頑張ってんのにさー。"とチャチャ入れて日本Lispコミュニティ自体について議論させない流れって 意味があることなの?
623 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:00:21.22 ] >>609 98.56%と小数点入っていないんだから何かの引用でないってことぐらいわかるでしょ。あと具体的なソースがある なら貼るし、品質・安定性・信頼性が高い、割と高いと抽象的に表現しても自分のイメージを具体化することを 怠っているし、相手になんとなくわかるようで実際の所は頭の中に具体化した数字のイメージの違いなんてすごく 開きが出てきそうで伝わらんし、議論も進まないでしょ。自分の認識の違いが間違っているなら訂正されて誰もが 異論を唱えなければ合意の下の仮定の数字になって、それを土台に議論もできるでしょ。 あと具体的な数字持っているならその情報集積群の場所を教えてよ。 > >>601 の「低レベルな 」の段落とか、まさに車輪の再発明の推奨なんだけど、これも曲解? 純粋にreplaceの存在を知らなかった。コーヒータイムついでにHyperSpecを目視のみで探したんだけどみつけられ なかった。emacs lispのinfoは通しでやったけど、CLは処理テーマごとに広く漁って勉強している。 > どうも、今いる人たちが無関心で努力してないように思いたくて仕方ないみたいだけどさ。 そうは言っていないよ。示したPythonとLispの比較のページは2002年だけどそのの頃はrubyの方がメジャーで Pythonはまだまだって感じだったでしょ。Lispについて関心がなかったのでどういう状況だったのか、よくわから ない。 ページが翻訳されて、問題意識として共有されて、Lispコミュニティで各人が労力を割いて反映されて活動したわけ だよ。それで約9年経った現在があるわけで今の仕掛け・仕組みで活動すれば最悪現状維持できて、風が吹けば拡大 していきそうなの? 日本のLispコミュニティ、それより小さい東京のLispコミュニティでもいいから今までの 仕掛け・仕組みを根本から疑って展開していった方が良いんじゃないのかな。一般Lisperは道にゴミを捨てない・ ゴミ拾い・あとそれに毛が生えたことぐらいしかできないよ。その一般Lisperのゴミ拾いリソースを的確な仕掛けに よって自然と効果的な場所に集めて、効果的なゴミ拾いをさせる。もちろん、コミュニティだから強制力はないし、 誰かが統制的に管理・運用するのも変な話だしね。そうは言ってもLispコミュニティコミットしていて拡大に異を
624 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:06:16.23 ] >>623 >あと具体的なソースがある なら貼るし つまり裏付けのない主観が出した数字で傾向を語ったのか? 莫迦なの?
625 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:45:53.40 ] >>609 つづき 唱える人はいないと思うし、Lispコミュニティ拡大のためならもう少し踏み込んで色々と議論すれば問題意識が鮮明に なって共有されて軽い強制力(緊張感)を伴う合意も得られて、もっと効果的な活動ができるんじゃないのかな。地味な 話だけど便利なネット本屋でLisp関連の本は注文せずに自分が住んでいる最寄りの大きい本屋で注文するとか。図書館に Lisp本を買わせるとか。多言語コミュニティとの比較して、無いモノ探しばっかりしていないか疑い、有るモノ探しを 怠っていないか、疑うべきだと思う。労力・お金も低コストで効果的な方法って探せばいっぱいあると思うよ。ネットが 普及してまだ法的な縛りもきつくない創世記なんだから創世記世代として仕組み・仕掛けを真剣に考えて、真剣にゴミ 拾おうよ。それで仮にLispコミュニティ自体がなくなるなら自分にも説明がつくし、後世の人に説明もつくでしょ。 あと日本においての将来のネットの法規制やプログラミング規制についてもLisp団体はちゃんと議論して声明出すとかね。 言語コミュニティ以前に10年後ぐらいに変なこじつけで重規制されたら暗黒時代に突入しかねないし。 あと一気にドラスティックに変える、変わりたいなんて思っていないよ。これからの9年とその先の9年で18年間で何が できるかって話だし、何をするかって話でもある。 おわり
626 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 10:53:21.52 ] >>622 別に日本のLispコミュニティ自体の議論をしたいなら、すれば良いと思う。 例えば、こういう情報へのアクセスが悪いから、こうしませんか、とかなら、 じゃあこういう形で協力するよ、とかなるじゃない。 それを、具体的な対案を出さずに、以前から指摘されている欠点の指摘だけされても、 言うは易しだ、みたいに言いたくもなるよ。それもかなり上から目線だし。 茶々を入れたかったわけじゃなく、頑張ってる人は見てあげてよって言いたいだけ。 あとは、個人で頑張るのは限度があるのはもちろん事実だと思うんだけど、 多くのコミュニティを支えてるのもまた、個人の色々な形での努力なわけで。 団体と個人は車の両輪みたいなものなんだと考えてる。
627 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 10:59:21.90 ] >>619 良かったら、見てみてー。 tips.lisp-users.org/common-lisp/index.cgi?CL-PPCRE cl.cddddr.org/index.cgi?CL-PPCRE 上の方は単なる例の羅列で申し訳ないんだけど、種類は色々書いてあるから。 あとは、これが足りないとか知りたいとかあったら教えてください。
628 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:14:37.44 ] >>627 ありがとうございます。既知の注意点だったのですか。 失礼しました。
629 名前:デフォルトの名無しさん [2011/12/18(日) 20:05:39.81 ] cl-ppcreの質問です 非ASCII CODE文字間の空白を _ に変えようとして正規表現を (?=[^\x00-\x7f]) (?=[^\x00-\x7f]) に、置換文字列を _ としたら"a b c"には予想通りヒットしなかったのに"a あ"ではヒットしてしまいました "a あ"のように空白を挟んでいる文字の一方がASCII文字ならヒットさせたくないのですが 修正する箇所をご教示ください
630 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:26:19.91 ] >>629 "(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])" でどうだ。
631 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:52:45.89 ] >>630 (ppcre:parse-string "(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])") ;=> (:SEQUENCE ; (:POSITIVE-LOOKBEHIND (:INVERTED-CHAR-CLASS #\x #\0 (:RANGE #\0 #\x) #\7 #\f)) ; #\ ; (:POSITIVE-LOOKAHEAD (:INVERTED-CHAR-CLASS #\x #\0 (:RANGE #\0 #\x) #\7 #\f))) になっちゃうんで、エスケープ必要。 (ppcre:regex-replace-all "(?<=[^\\x00-\\x7f]) (?=[^\\x00-\\x7f])" "a b あ い" "_") ;=> "a b あ_い", T
632 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:32:47.97 ] どうもです。ばっちり動きました。
633 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:12:34.49 ] >>626 > それを、具体的な対案を出さずに、以前から指摘されている欠点の指摘だけされても、 > 言うは易しだ、みたいに言いたくもなるよ。それもかなり上から目線だし。 言うは易しって簡単に使っているけどなあ。日本Lispコミュニティで既に共有済みの指摘 されている欠点をまとめてくれよ。 人間に敬意を払うのは当たり前として議論において神経症的に上から目線うんぬんを 持ち出すことに意味があるの? 議論させてないために文句言っているようにしか聞こえない。 9年後の今についてどう捉えているの? 方向性・方策は失敗だったのか、成功だったのか、 それらへんをはっきりさせて、もう一回議論しても有意義だし、勝手連で適当にやれば いいよという結論でリソースを食いつぶしていくのもありだと思うし。 > 多くのコミュニティを支えてるのもまた、個人の色々な形での努力なわけで。 > 団体と個人は車の両輪みたいなものなんだと考えてる。 もちろんそうだと思うし、協調し合って拡大に向かえるのかは怪しい。でも、議論して 問題意識を共有して、もの凄く良い方策はみつらないかもしれないけど、その議論の後に いいアイデアが思い浮かぶ場合もあるし、問題意識を共有したおかげで個人の行動が ちょっと変わったりするし、誰かと組んでおもしろいことしようと声かけやすくなったり、 次の議論に自然と移れるわけだし、議論したことによるマイナス要素ってないと思うん だけどね。 自分は地方出身者で東京に出てきたけど、東京にいればある程度イベントがあるから 居心地良いけど、地方だとオフ会なんてしにくいし顔をつき合わせた情報の共有化って できないよね。オンラインでやりとりするのがメインだけど、オフラインのやりとりも 軽くカバーしないとLispから離れていくんじゃないのかなと漠然と思っている。 あと学校のパソコン部の担任の教師が軽いLisperとしてその地域にコミュニティがない んであればLispを推すのは難しいよね。無難な言語になりそうだよね。
634 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 00:38:52.80 ] Learn to code | Codecademy www.codecademy.com/#!/exercises/0 このサイトのcommon lisp版が出来れば 普及にスピードが出ると思う common lispの開発環境を整えるだけで息切れする人もいるだろうから
635 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 07:05:48.15 ] >>634 Lispboxがあるよ。(Linux/Windows/Mac対応)
636 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 15:39:51.25 ] lispboxなんてものがあるのか 知らなかったわ
637 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 16:35:32.74 ] >>636 windowsなら、lispboxそのまま落して使うってのの他に、gnupackにslimeを導入するってのもいいよ。 「gnupack slime」で検索すると出るよ。 gnupack gnupack.sourceforge.jp/docs/latest/UsersGuide.html gnupack + NTEmacs23 で SBCL/SLIME aikotobaha.blogspot.com/2010/08/gnupack-ntemacs23-sbclslime.html ubuntulinuxなら、slime導入で勝手に構築されるけど、ubuntu11.10は要注意。 そのままだとslimeが起動できない。 ホームディレクトリに.sbclrcというファイル作って(require 'asdf)と書き込むと起動できるようになる。 d.hatena.ne.jp/ddk50/20111028 を見付けるまで、悩んだ。
638 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:42:42.37 ] >>637 つか, Linux のパッケージシステムってディストリに関わらず ドキュメント類が別扱いのやつ多すぎ ドキュメント類まで有無を言わさずつっこむ bsd 系のパッケージシステムの方がありがたい
639 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:50:38.85 ] >>638 パッケージをつくるときに、 バイナリパッケージはアーキテクチャごとに、 バイナリ以外はどのアーキテクチャでも使えるようにしてるから。 HDDの容量の関係もあるのかな。 一応依存関係があれば一緒にインストールもしてくれるはず。
640 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:57:54.45 ] >>639 依存関係が切れてるやつ多すぎ あるいは、 *-devとかに依存してたりして --without-dev とかのスイッチつけなきゃフルインストール ってな、ノリの方がありがたい
641 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 22:01:07.76 ] 他所でやれ、アホが。
642 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 00:11:10.60 ] apt-getとaptitudeの違いを語るスレと聞いて
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の表記ミスですか?