[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 05/27 13:59 / Filesize : 60 KB / Number-of Response : 198
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【入門】Common Lisp その9【質問よろず】



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って・・・。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<60KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef