1 名前:デフォルトの名無しさん [2012/03/05(月) 04:06:46.71 ] Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、 Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。 それ以外でもCommon Lispについての話題なら歓迎します。 ま、ゆっくりやりましょう。 「いいものの本質は、いかなる時代においても変わらない」byパワーズ ■前スレ 【入門】Common Lisp その8【質問よろず】 toro.2ch.net/test/read.cgi/tech/1309940115/ ■Wiki wiki.fdiary.net/lisp/ (id:guest pass:cl) cl.cddddr.org/ tips.lisp-users.org/common-lisp/
145 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 09:54:14.37 ] (string :test)で"test"が得られますが (x :test)で":test"を得るような関数xは作成可能でしょうか?
146 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 10:03:00.28 ] >>145 (format nil "~S" :test)
147 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 11:10:19.18 ] >>146 formatでできるのですか。盲点でした。 ありがとうございました。
148 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 14:34:41.30 ] >> 142 解説してるテクニックが前半と後半で違くね? cons+nreverseと、cdrを繋いでいく方法の2種紹介ってことだったらわかりづらい説明だね あと、なんでもappendってのはSchemeでも駄目でしょ
149 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 19:57:11.58 ] >>148 最終的には 「tconc とか queue って呼ばれてるものを使え」 になるような気が…
150 名前:デフォルトの名無しさん [2012/04/21(土) 22:13:44.75 ] 素人すぎて申し訳ないんですが、人工知能の勉強がてらlispを初めてみたいのですが、sbclをダウンロードしたところで ギブアップしてしまいました。どなたかこのページを解説していただけませんか。www.sbcl.org/getting.html
151 名前:デフォルトの名無しさん [2012/04/21(土) 22:15:06.19 ] >>150 ちなみにOS Xです
152 名前:デフォルトの名無しさん [2012/04/21(土) 22:27:11.15 ] >>150 ちなみにOS Xです
153 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 22:48:12.74 ] 解説もくそも書いてあるまんまなんだけど。 とりあえず何がわからんのか質問してみそ。
154 名前:デフォルトの名無しさん [2012/04/21(土) 23:16:41.58 ] >>153 まずここが分からないです! unpack the tarball: bzip2 -cd sbcl-1.0.56-x86-linux-binary.tar.bz2 | tar xvf - replacing sbcl-1.0.56-x86-linux-binary.tar.bz2 with the name of the tarball you downloaded. Then enter the directory which was unpacked, and run the installation script to install SBCL in your /usr/local directory: cd sbcl-1.0.56-x86-linux sh install.sh
155 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 23:17:34.35 ] >>154 ターミナルから入力するコマンドだから しばらく一般的なcui操作に慣れた方がいいかと
156 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 23:25:19.71 ] 質問です。 指定した文字を複数個連続して作りたいのですが、 (defun repeat-string (num string) (format nil "~{~A~}" (loop repeat num collect string))) (repeat-string 100 "?") これで一応はできるのですが、 loopを使わずに出来ないものでしょうか。
157 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 00:02:49.72 ] >>156 (make-string 100 :initial-element #\?)
158 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 00:06:08.17 ] >>148 流石にそんなアクロバティックな誤読されても困る。最初のコメントに書いてあるように、 斯様にappendは非効率的だから、使う場合に注意を要するって意味なんだけど。
159 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 00:08:46.28 ] 最初のコメントに書いてあるっていうのは語弊があったな。 つまり「例えばある処理系ではこういう実装をしているけど、非効率的でしょ?」って話。
160 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 00:11:08.50 ] >>156 文字を連続ってことなら157の方法だね。 文字列ってことなら (defun repeat-string (num string) (format nil "~V@{~A~:*~}" num string)) とか
161 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 00:15:19.23 ] ああ、ごめん。理解したわ。俺が悪かった。「これは」って代名詞が混乱させたのか。 「cons+reverseは」って置き換えてくれるとありがたい。
162 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 00:30:44.49 ] >>157 >>160 ありがとうございます。
163 名前:デフォルトの名無しさん [2012/04/22(日) 20:14:48.90 ] >>155 CUI勉強してやってみましたが、sh install.shを打ち込むと、 mkdir: /usr/local: Permission deniedとなります。次はどうすればいいでしょうか
164 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 20:38:50.28 ] まずMac OS X用のbinary持ってこいよ。そしたら、 $ sudo sh install.sh
165 名前:デフォルトの名無しさん [2012/04/22(日) 21:36:18.49 ] >>164 mac os x用のbinaryとはなんでしょうか
166 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 21:46:46.84 ] www.sbcl.org/platform-table.html ここ読め。テーブルをクリックできる。
167 名前:デフォルトの名無しさん [2012/04/22(日) 21:53:52.94 ] >>166 WARNING: Improper use of the sudo command could lead to data loss or the deletion of important system files. Please double-check your typing when using sudo. Type "man sudo" for more information. To proceed, enter your password, or type Ctrl-C to abort. Password: ってなりました
168 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 22:01:19.53 ] Common Lisp スレで Mac の使い方説明せないかんの?
169 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 22:08:23.79 ] >>167 Mac OS Xの初心者スレ、CUIスレ、ターミナルスレのどれかに行って。 (後ろ二つはまだあるかどうかしらんけど)
170 名前:デフォルトの名無しさん [2012/04/22(日) 22:30:48.43 ] >>166 WARNING: Improper use of the sudo command could lead to data loss or the deletion of important system files. Please double-check your typing when using sudo. Type "man sudo" for more information. To proceed, enter your password, or type Ctrl-C to abort. Password: ってなりました
171 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 22:34:22.07 ] ターミナルの宿命はよ
172 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 22:37:20.84 ] >>169 ありがとうございます そっちに行ってみます
173 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 23:16:41.98 ] うまくいくといいです
174 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 23:20:49.53 ] とりあえずmanとグーグル先生を調べてから質問しような
175 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 23:44:56.05 ] >>174 わかりました。 ありがとうございます。 それについてもターミナルスレで聞いてみます。
176 名前:デフォルトの名無しさん [2012/04/23(月) 13:32:13.32 ] >>167 のものです。今度は GNU Make not found. Try setting the environment variable GNUMAKE. と出てきました。これはこちらで聞いていい質問ですか?
177 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 13:50:28.56 ] >>176 おおざっぱに言えば処理系を起動してからがこのスレの話題。 初心者ってのはそういうもんだというのはわかってるが、 このスレの住民からするとたいそう「もどかしい」状態。
178 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 14:10:34.44 ] 人工知能とのやり取りみたいだ
179 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 14:22:34.94 ] >>176 lispworks試用版のmacosx版でもつかったら良いんじゃないかな www.lispworks.com/downloads/index.html とりあえず処理系動かすだけならフリーの処理系も試用版も同じかな五時間の時間制限あるけど
180 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 16:02:49.26 ] lispworksはmacosxにも対応していたのか
181 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 18:46:12.05 ] >>176 エラーメッセージ(の一部)でググレ。 さすがに釣りに思えて来た。
182 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 10:41:13.06 ] 数行のコードを試しに動かすだけなら ideone.com/ とかでも。
183 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 23:16:09.72 ] すぐ使えるLisp環境ならLispboxを使えばいいのでは。 ttp://common-lisp.net/project/lispbox/ WindowsとMacとLinuxに対応していて、 ダウンロードして解凍してダブルクリックすればすぐ使える。 処理系はSBCLじゃなくてCCLだけど、初心者からしたら違いはない。
184 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 23:28:21.60 ] clispってcommon lispではないのですか? On Lispの例がそのままでは動かなかったりするのですが
185 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/04/26(木) 23:39:21.30 ] Common Lisp の規格に沿った処理系はいくつもあるけど、規格の不明瞭なところをそれぞれの解釈で実装してたり、 そもそも規格では未定義にされていたり、規格以上の機能を提供しようと拡張されていたりすることもある。 そういった言語の微妙なところに依存してしまっている記述はあるかもしれない。 あと、定義を書く順番が関係してくる箇所もあるので、動かないという箇所を具体的に提示すればこのスレで何らかの助言を得られるかもしれない。
186 名前:デフォルトの名無しさん mailto:sage [2012/04/26(木) 23:50:21.73 ] >>184 CLISPは代表的なCommon Lisp処理系のひとつですよ。 オープンソースだとSBCLやCCLに次ぐくらいには使われている。 On Lispの著者のお気に入りの処理系のひとつでもあります。 >>185 の言うように、書籍のミスなのか、あなたのミスなのか、 >>184 の情報だけではわれわれとしても何とも言えません。
187 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 14:33:07.78 ] (6 4 0 4 8 3 7 4 5 7) このリストの各要素を逐一足し合わせて (6 10 10 14 22 25 32 36 41 48) こういうリストを作るにはどうすればいいですか? reduceを使えばいいのかと思ったのですが、 reduceに#'+を渡す例を考えると最終的な値はリストではなく一つの値になってしまいます
188 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 15:54:04.53 ] (loop for x in list for y = x then (+ y x) collect y)
189 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 16:02:39.06 ] ありがとうございます。ばっちりです。 for ... then を使えばこんなにすっきりと書けるんですね。
190 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 16:56:48.09 ] (loop for x in '(6 4 0 4 8 3 7 4 5 7) sum x into y collect y) --> (6 10 10 14 22 25 32 36 41 48) でもいけるね
191 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 18:44:37.15 ] 相変わらずloopは黒魔術
192 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 00:04:03.22 ] >>187 reduceでの解ということでひとつ。 (nreverse (reduce (lambda (r x) (cons (+ (or (car r) 0) x) r)) '(6 4 0 4 8 3 7 4 5 7) :initial-value nil)) こういうのはloopやiterate、Seriesとかの方がすっきりできる感じがする。 あるいは内包表記とかもこういうの得意分野な感じ。 https://github.com/g000001/srfi-42 CLだとこの辺とか。
193 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 00:46:01.06 ] >>192 を見て疑問に思ったんだけど schemeの世界のsrfiってcommon lisp向けに移植されていないのかな
194 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 00:59:24.42 ] 上に書いてる https://github.com/g000001 に大半のSRFIがあるよ。
195 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 02:11:38.34 ] 本当だ。ありがとう。地道にもやっていたのか。
196 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 17:07:30.76 ] >>187 CL詳しくないのでHaskellで sumlist xs = sumlist' 1 xs where sumlist' n xs | n > length xs = [] sumlist' n xs = sum (take n xs) : sumlist' (n+1) xs CLにも同じ機能あると思うので、参考までに
197 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 17:23:23.52 ] CLですでに回答済なのに、場違いに出て来るHaskellerって・・・。