1 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:41:07 ] lispを触ってみたい入門者のQ&A 初心者のQ&A 本スレでは恥ずかしくて聞けない人のQ&A 本スレは高度すぎて割り込めない人のQ&A linuxでなくてwindowsでやりたいんですが・・・Q&A lispを使用してC#やJAVAの代替にするための方法(おまけ) ま、ゆっくりたりましょう。 「いいものの本質は、いかなる時代においても変わらない」byパワーズ (list (url pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1) (url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2))
817 名前:810 mailto:sage [2007/11/22(木) 18:44:50 ] >>815 物持ちのいいうpろだ探し中 >>816 原著がネットで公開されててもまずいかなやっぱり
818 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 19:04:18 ] 基本的には、原著作者が、翻訳して公開することを明示的に許可してないと ×
819 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:16:36 ] >>816 どうでもいいだろ,地下文章なんだから 堂々とWebに公開したらそりゃまずいだろうけど pass付きzipで短期間だけ公開なら問題ないだろ
820 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 21:54:34 ] lions' 本も現在なら ファーストコピーのスキャン画像が流通するのかしらん
821 名前:803 mailto:sage [2007/11/22(木) 21:58:25 ] (´・ω・`)
822 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 22:01:16 ] >>821 socketじゃだめなのか?
823 名前:デフォルトの名無しさん mailto:sageそんなことはない [2007/11/22(木) 22:10:19 ] これが革命の狼煙になるとは思いもしない819であった。
824 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:35:19 ] >822 socketに対応していない外部プログラムと繋げられたらばと考えまして もっともsocketの使い方も勉強できたらうれしいです
825 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:53:58 ] >>813 つか、常にパッケージ名に::を付ければ参照できる。冗長だけど。 多分本当にしたいのは以下のような事だろ? 省略したけど use-package とすればまるごとimportできる。 cl-user(2): (defpackage :a) #<The a package> cl-user(3): (defpackage :b) #<The b package> cl-user(4): (in-package :a) #<The a package> a(5): (defvar *foo* 813) *foo* a(6): (find-symbol "*foo*") *foo* :internal a(7): :pa :b b(8): (find-symbol "*foo*") nil nil b(9): (import 'a::*foo*) t b(10): (find-symbol "*foo*") *foo* :internal b(11): *foo* 813
826 名前:813 mailto:sage [2007/11/23(金) 09:39:00 ] >>825 import と use-package ですね。これで相当便利になりました。
827 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:38:07 ] on lispの翻訳も最初はこんなのりだったなw
828 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 14:02:25 ] texのドキュメントを自動生成するscriptのsampleなどどこかに ないでしょうか?
829 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:37:26 ] slimeビデオの通りに ; SLIME 2007-11-19 CL-USER> (make-hash-table) #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}> CL-USER> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}> と、すると以下の通りに怒られます。 SB-INT:SIMPLE-READER-ERROR at 2 (line 1, column 2) on #<SB-IMPL::STRING-INPUT-STREAM {AD3B641}>: illegal sharp macro character: #\< [Condition of type SB-INT:SIMPLE-READER-ERROR] 環境は、 debian etch emacs22 sbcl-1.0.11-x86-linux slimeはcvsで取ってきたものです。 .slime.lispには #+sbcl (setq sb-impl::*default-external-format* :utf-8) (asdf:operate 'asdf:load-op 'swank) (setq swank::*coding-system* "utf-8-unix") (setf swank:*use-dedicated-output-stream* nil) (swank:create-server :port 4005 :dont-close t) と、設定しています。 他に何か設定が必要でしょうか。
830 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:54:23 ] >>829 slimeのビデオって何か知らないけど、、 「#<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>」は手で入力したの? 「#<」ってのは read して元に戻らないものを表示するための記号。 (もとに戻るのは配列とかリストとかね) よって、手で入力したんだとしたら何か勘違いしてるんだと思う。
831 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 23:48:25 ] >>830 > >>829 > slimeのビデオって何か知らないけど、、 slimeのビデオです(サイズ150MBほどあります)。 ttp://common-lisp.net/movies/slime.mov これによると CL-USER> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}> の後に CL-USER> (eq #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>) T こんなことしてるんですが 私の環境ではコケてしまいます。
832 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:01:23 ] 829の勘違いというかビデオを理解していないで終了。
833 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:10:34 ] 830を1兆回読むべきだろうな
834 名前:810 mailto:sage [2007/11/27(火) 19:27:26 ] 原著者の Peter さんに勢いで 「日本のフォーラムに翻訳を投下したいんだけど許可くれ」 ってメールしてみたんだけど、数日経った今日返信キタ 日本語化の動きは既にあるんで グループを手伝うかどうかは君に任せるよ、とのこと
835 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:29:18 ] 829です。 >>830 手で入力しなおして気付きました。 >>832 > 829の勘違いというかビデオを理解していないで終了。 はい、理解してませんね もうちょっと勉強します。 >>833 > 830を1兆回読むべきだろうな さすがに1兆回はw でも3回ほど読み直しました。 Emacs側の設定 face? mouse? 見直してみます。 みなさんコメントありあがとうございました。 お騒がせしました。
836 名前:デフォルトの名無しさん [2007/11/27(火) 22:15:54 ] >>834 その翻訳グループの詳細plz
837 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:21:11 ] なんか、ひどい言われようだな。 slimeの#<で始まるのは、手入力やC-yで張ったものではないと思われます。 面倒くさいので、videoは見ていませんが。 私の環境では、 > CL-USER> (make-hash-table) > #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}> の、返り値表示の上にカーソル置いてEnter、若しくはマウスで中クリックを することによって、#<で始まる文字列が新規のプロンプト上にコピーされます。 この文字列は、lispのobjectとして評価可能です。 eqで比較も出来ます。 ちなみに、マウスの右クリックでメニューを出すと、色々選べて面白いです。
838 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:57:25 ] >>837 どこがひどい言われようなんだ? 質問者の方に問題ありすぎで、829のような質問じゃ仕方ない流れだろう。
839 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 18:59:01 ] 流れをぶった切ってしまって申し訳ないのですが、ちょっと質問させてください。 たとえばPythonにはrange関数があって、0〜10のリストとか簡単に作れますが、 Common Lispにはrangeのような関数はないのでしょうか? そのようなリストが欲しければmake-sequenceでリスト作ってdolistで回して初期化とかそんな感じなんですかね??
840 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:25:37 ] loop はどうかね? (loop for i from 0 below 10 collect i)
841 名前:839 mailto:sage [2007/11/28(水) 21:27:44 ] >>840 おおお、ありがとうございます! loopマクロでできないかチラッと見てみたことはあったんですが、 浅く踏み込んだだけだったのでbelowを知りませんでした。 前々から気になっていたイディオム(?)なのでスッキリしました。 どうもありがとうございます。
842 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:39:55 ] >>841 www.unixuser.org/~euske/doc/cl/loop.html
843 名前:839 mailto:sage [2007/11/29(木) 01:58:10 ] >>842 どうもありがとうございます。 勉強してきます。 loopマクロって結構面白いですね。
844 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:06:35 ] マクロの活用による典型的なミニ言語だよね。 みんなが好き勝手にこんなもの作りだしたら煩雑になってたまらん、って 思いとどまったのがschemerでいいじゃん別に便利なんだから、って 開き直ったのがlisperなんじゃないかと個人的には理解している。 LOOPマクロマンセー
845 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:15:09 ] 829です。 >>837 > の、返り値表示の上にカーソル置いてEnter、若しくはマウスで中クリックを > することによって、#<で始まる文字列が新規のプロンプト上にコピーされます。 私の環境ではこれがうまく機能していませんでした。 そこで、slimw-2.0を入れてみたところ出来るようになりました。 > > この文字列は、lispのobjectとして評価可能です。 > eqで比較も出来ます。 そういう事なのですね。 > > ちなみに、マウスの右クリックでメニューを出すと、色々選べて面白いです。 これから試してみます。 コメントありがとうございました。
846 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 14:24:01 ] 日本語文字コードの変換とかPOP3とかMD5とかGUIとか そういう実用的なライブラリはあるんでしょうか・・・ 有象無象に見える多数の処理系に様々な機能が分散して るように見えて何がなんだかわかりません・・・。 今までPerlとTclを使ってやってたことを、Lispでやりたいんですが・・・
847 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 14:47:51 ] >>846 www.cliki.net/index あたりで探してみたら? ASDFが使える処理系なら、 asdf-installをガンガンインストールすればいいので手間もかからんし。 ただし、もともとテキスト処理のために作られた言語でないので、 そこら辺はperlのような充実っぷりを期待しても無駄です。 GUI環境の整備も主たる言語の中では相当遅れていると言って良いです。 McCLIMも最近ようやくあまり落ちなくなったという程度だしw
848 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:08:42 ] >>846 847の書いてる通り。 商用のAllegroCLなら、さすがに大分まし、だよ。
849 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:10:26 ] オープンソースでフリーな商用CLに期待しましょう
850 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 02:30:21 ] どうやって商売成り立たせんの、それ。
851 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 13:50:46 ] MySQL方式かな
852 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:46:35 ] いちおう、最後の砦として、ffi というのもあるけど、 なんでもかんでもリンクし始めたら、lisp を使ってる意味が無くなるかな。
853 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:31:43 ] 質問です。CLの正しいプログラムexprは (or (atom expr) (symbolp (car expr)) (eq 'lambda (caar expr)) を必ず満たしますか?
854 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:44:30 ] >>853 正しいプログラムってどういう意味? 正しい式の意味?
855 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 23:55:41 ] >>854 (1 2 3)のようなものを式と呼ぶのか分かりませんが、 要するにevalを適用してエラーが出ないもののことです。 あと括弧閉じ忘れてますねすいません
856 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 05:53:16 ] >>853 貴方の意図を汲み取るのが非常に難しい。 とりあえず答えてみると、 exprの部分を例えば(list 2 3 4)で置き換えた場合、 その式を満たしていないことになるけど、 それは自明だからたぶん意図を外しているのだろう。 一々、S式で書かないで、言葉で説明してみたら?
857 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 07:51:02 ] >>856 予想すると、>>853 はlisp処理系をlispで書こうとしているのでは。 知りたいのはフォームの定義と見た。 で、CLHS: Section 3.1.2.1 を見ると、>>853 の定義でだいたい 当っているような気がする。
858 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 09:25:01 ] (,,゚Д゚)∩先生、S式って何ですか? (´ー` ) >>853 ( ゚д゚) …… ( ゚д゚ )
859 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 09:59:34 ] 処理系を書くとか、そういうのって適当にやると結局後で困るんだよね。 最初から定義を見て形式保ってやっていく方がいい。
860 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 19:19:23 ] そうだLispを作ろう ↓ 第一級でないオブジェクトってなんなの? ↓ リストの先頭に現れるらしい ↓ むしろリストの先頭に第一級オブジェクトが現れるのがおかしい ↓ リストは全部スペシャルフォームってことにすれば…… ↓ ……リストの先頭は必ずシンボルになる ↓ それなんてCL ←今このへん
861 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 19:22:00 ] オブジェクトはすべて平等ですよ。 第一級オブジェクトという考え方自体がオブジェクト差別主義に毒されてます。
862 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 19:24:24 ] ウィンストンのlispの3版に lispでlisp処理系を作るとか そういうのが載っていそうな気がする
863 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:55:00 ] 残念でした〜。CLではシンボル以外にlambda式もフォーム先頭にこれるんだな。
864 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:57:49 ] ああそれはわかっているのか、ごめん。
865 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:58:02 ] >>863 >>853 にはちゃんとそう書いてありますね。 lispでlispを作るって一見無駄に見えますけど、 xyzzy lispでxyzzy schemeを作ったら便利そうですね。 とっくの昔に誰かが書いてそうですが。
866 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 01:47:04 ] なぜ便利そうだと思ったのかkwsk