[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 08:47 / Filesize : 210 KB / Number-of Response : 922
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:52:46 ]
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))


231 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 15:00:49 ]
>>228
Lispに愛が芽生えてきますた。
言語への慣れと理解によって大きく違うと思いますが、
Rubyと比べて、生産性は良さはどんなものでしょうか?


232 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:27:54 ]
Lispは神が世界を記述するのに使った言葉。
最初に「光あれ!」とかやってたのは全部Lisp。

一方、Rubyはただのスクリプト言語。

233 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:32:44 ]
www.aoky.net/articles/randall_munroe/lisp.htm

234 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:56:09 ]
Lispはconsセルの操作しかできないと思っていた俺は
CLOSを知った今、猛烈に感動している。
凄いなCommon Lisp♥

235 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:01:31 ]
確かめてないが、見えない根っこのほうではconsセルの操作しかしてねーと思うぞ

236 名前:234 mailto:sage [2008/03/25(火) 11:19:24 ]
CLOSどころか、defstructでも感動してしたYO。

>>235
そうですよね。
でも、なんだかとっても凄いぞCommon Lisp。

237 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:26:50 ]
>>235
まあ、足し算とか引き算なんかもできないとスゲー困るわけで...

238 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:41:42 ]
cons だけで数を表現して足し算と引き算とかは実装できるよ。
ラムダ計算の初歩ですよ。遅いけど。

239 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 01:44:37 ]
Rと組み合わせられるなんて



240 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 01:58:43 ]
最近は何見てCLOSを勉強してるんだろ?

241 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 02:20:26 ]
www.geocities.jp/m_hiroi/clisp/clisp01.html

242 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:31:13 ]
Rを呼べる
common-lisp.net/project/rcl/index.html


243 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:19:34 ]
accountはcustomer-name slotを持つクラスで、

(defun (setf customer-name) (name account)
(setf (slot-value account 'customer-name) name))

と定義すると、

(setf (customer-name my-account) "hoge")

と書けるのはどうしてですか?

defunを使った関数定義で
(defun (setf 〜) ....)
とdefunの直後に括弧が付く場合、何を意味することになるのでしょうか?

初心者丸出しの頓珍漢な質問だと思いますが、お願いします。

244 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:54:04 ]
何でって言われてもそれがアクセサの定義の仕方だから。

245 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:15:34 ]
もうちょっと具体的に説明すると CLtL2 のインヴァージョンをよく読むとよい。
OnLisp の汎変数の説明のところでもいいけど。

246 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 18:54:02 ]
cmuclをemacs22+slime2.0で使っています。
キャラクタエンコードをutf-8を通す設定にしてslimeコンソールから日本語(に限らずutfで256以上の値を持つ文字)を食わせると
cmucl側からソケットが切断されてしまうのですがこの辺りを解決する情報をお持ちの方はいますでしょうか?



247 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:41:14 ]
>>246
そもそもcmuclってutf-8通せたっけ?

248 名前:243 mailto:sage [2008/03/26(水) 20:49:02 ]
>>244,245
Googleで調べていたのですが、このような機能をなんと呼ぶのかも
分からず、困っていました。
CLtL2 inversionで調べたら、出てきました。
助かりました。どうもありがとうございます。

249 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:50:24 ]
>>247
単体で起動すると通りますがslime経由だと通らないのです。

sbclも試したのですが、こちらは主用途のaserveでつかっているhtmlgenの中に日本語テキストがあると出力がそこで打ち切りになってしまいますです。
ex.
aserveへ↓を食わせたときに
(:html (:body "test" :br "test2" :br "多バイトコード" ))
ブラウザでaserveをアクセスしたときに test2<br>までが出力されます(sbclのバグトラックにはレポートあがってました)
この例をcmuclでやるとコンソールから直に打ち込むとOKなのですがslime経由だと"多"が送り込まれた時にsocketがreset by peerになってしまうのです。

lispの学習で自分の手習いを実用コードで行おうというのがおこがましいのかなぁorz




250 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 07:42:04 ]
>>249
windowとunixで
CLISP+emacs+slimeでutf-8でコードを書いていますが、
CLISPだと駄目ですか?

251 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 07:59:35 ]
>>250
うちの .emacs にはこんなことが書いてあるが...

(setq slime-lisp-implementations
'((sbcl ("sbcl") :coding-system euc-jp-unix)
(clisp ("clisp" :coding-system euc-jp-unix))))
(setq slime-net-coding-system 'euc-jp-unix)


252 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:30:19 ]
>>246
これ自分も知りたいと思ってた。
自分が確かめた範囲では、下記の通り

*UTF-8で日本語が使えるかどうか*
--そのままでOKなもの
sbcl
clisp
allegro cl
clozure cl

--処理系で日本語は使えるけれど素のSLIMEだと切断されるもの
cmucl
ecl
lispworks
abcl

ちなみに「日本語が使える」ってのは処理系で表示できてる、位の意味で、
厳密には処理系ごとに事情が違ってます。
多分、処理系に応じたswank-〜.lispを修正すれば良いんだと思うけど、
漏れは、挫折して、素でOKなものを使ってます。


253 名前:247 mailto:sage [2008/03/27(木) 11:07:58 ]
>>249
> この例をcmuclでやるとコンソールから直に打ち込むとOKなのですがslime経由だと"多"が送り込まれた時にsocketがreset by peerになってしまうのです。
utf-8 で接続はできて、日本語を送ろうとしたときに接続が切れるの?

254 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:40:24 ]
3日でclispを実用的に使えるレベルになろうと思って挫折した
憶えないといけないこと多いね
classの考え方が他の言語と違ったりするし

255 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:43:32 ]
>>254
次に3日でマスタしようとして挫折する予定の言語はなんですか?

256 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:45:05 ]
swank以前の問題でコンソールではたまたまアスキー越えた部分が
日本語になって出てきているだけじゃないか?
char-code-limitはいくつ?

257 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:46:18 ]
Brainf*ck

258 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:51:21 ]
>>254
あなたは何をやっても駄目そうですね。

259 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:26:57 ]
>>246

cmucl 19e

- Preliminary support for external formats. Currently only
iso8859-1 and utf-8 are supported. Utf-8 support is limited
since CMUCL only has 8-bit characters.




260 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:32:59 ]
swank の方でも cmucl への接続時は iso-latin-1-unix 以外の coding だと
接続できないように書かれているから、そもそも utf-8 で接続できているのが
おかしいというか勘違いだろう。

261 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:04:37 ]
>>259
ガーン、有難うございました orz

そうか、external-formatだけダメってのもあるのか,Release-noteはちゃんと読まないとだめですねぇ


262 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:57:31 ]
(setq y '(1 2 3 4 5 6 7 8 9 10 11))

(defun visitor (x)
(+ (car x) (visitor (cdr x))))

(visitor y)


スタックオーバーフローで死ぬんですけど・・・。
xyzzyにて。

263 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:03:43 ]
すまん。自己解決した。

(setq y '(1 2 3 4 5 6 7 8 9 10 11))


(defun visitor (x)
(if (equal x nil) 0
(+ (car x) (visitor (cdr x)))))


(visitor y)

264 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:14:41 ]
ねらい通りのものができたので、記念書きこ。

(setq x '(1 2 3 (4 5 6 (7 8 9 ) 10 11 )))


(defun visitor (x)
(if (equal x nil) 0
(if (listp (car x)) (+ (visitor (car x)) (visitor (cdr x)))
(+ (car x) (visitor (cdr x))))))


(visitor x)

265 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:21:22 ]
一つの関数書くのに一時間以上かかってる。
鬱だ。情けない。

266 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:43:40 ]
ま、最初はそんなもんじゃないかな

なんとなく別解を書いてみた

(defun visitor (x) (if (atom x) x (apply #'+ (mapcar #'visitor x))))

267 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:35:30 ]
>>266
まさか同じ処理をするとは思えませんでした。
高階関数を使うとそんなにすっきり書けるんですね。
勉強になりました。ありがとうございました。

268 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:08:43 ]
短く書くだけならこれで十分じゃね?↓

(defun visitor (x) (apply #'+ x))

269 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:10:09 ]
…ってごめんよく読んでなかった、今のなしで orz



270 名前:177 mailto:sage [2008/03/31(月) 10:19:14 ]
>>266
なるほどな〜。
私もLispを始めたばかりなので、勉強になります。

271 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:37:40 ]
数式処理(maxima)で
[x1,x2,x,3...]という記号(変数?)の列を生成したいのですが
defmacroを使うのが正しいやりかたなのでしょうか?

272 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 02:24:09 ]
d.hatena.ne.jp/niitsuma/20080325/1206964510
rcl(Rとのインターフェイス)が動かなかったので補正してみました.
ひょっとしてバグなのでしょうか?

273 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:15:05 ]
swigでc++ をwrapしてclispから呼びたい
swigのcffiオプションはcはできてもc++はできないみたいなので
Allegro Common Lisp用のものを生成して
swig -allegrocl -c++ example.i
ちょっと書き換えればclispやsbclで動くものになるんだろうか


274 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:40:55 ]
ACLの個人向けライセンスの安いのだしてくれんものかのぉ。orz


275 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 08:17:07 ]
>>274
学生になったらいいんじゃね?

276 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 08:43:39 ]
こっちはACLのチュートリアルやってみてるところだけど、
ヴァージョンが違うからなのか、そのままのとおりにならないorz
親しんでもらって売ろうという気は無いのかなと思った。


277 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 20:43:29 ]
どのチュートリアルの話ですか?
ANSI CL 規格の範囲内ならともかく、ACL処理系依存の部分なら
全バージョンで完全な互換性を保つ事を要求するのは酷なのでは…。


278 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:07:32 ]
www.common-lisp.ru/repos/pyffi/pyffi.lisp
すごい便利そうなんだけどドキュメントはどこ?

279 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:07:12 ]
GNU clispつかってデータ処理してるんだけど
少ないデータをかませたらきちんと結果が出てくるんだけど
大量のデータをかませたら
APPLY: too many arguments given to +
[Condition of type SYSTEM::SIMPLE-PROGRAM-ERROR]
と出てくる.
スタックサイズか何かだと思うんだけど...どうやったらうまくapplyしてくれるようになりますかね?



280 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 09:37:40 ]
エラーメッセージに何が問題か書いてあるんだけど、読んでから質問してる?

281 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:02:52 ]
(reduce #'+ args)

282 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:55:26 ]
>>279
Clispは引数の数に制限があるの?

283 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 20:18:01 ]
>>282
CALL-ARGUMENTS-LIMIT
ttp://www.lispworks.com/documentation/HyperSpec/Body/v_call_a.htm

284 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 20:41:10 ]
>>283
282じゃないけど、こんな変数あるんだ、勉強になったよ
ちなみに手元で調べた結果(全部 mac os x 上)
clisp: 4096
acl: 16384
sbcl: 536870911

285 名前:282 mailto:sage [2008/04/05(土) 21:40:57 ]
>>283
ほー。こんなのがあるのですか。
ありがとうございます。
こういうのはどのように知ったのですか?

286 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:42:57 ]
283じゃないけど、漏れは282同様に派手にAPPLY→エラー→調べる→知る、という流れだったね。
ANSI 規格では最低 50 ときまってるので、50 個の引数までなら CALL-ARGUMENTS-LIMIT を意識せずに安心して使える。


287 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:42:37 ]
283だけど、漏れは282同様に派手にAPPLY→エラー→281のようにreduceで書く→忘却→
ある日PCL読んで制限について書いてるのたまたま発見、という流れだったね。
ttp://www.gigamonkeys.com/book/functions.html
ANSI 規格では最低 50 ときまってるけど、 CALL-ARGUMENTS-LIMIT のことは忘れて reduce 使うね。

288 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:13:57 ]
おれ様用メモ。constant variable とその最小値。

multiple-values-limit >20
call-arguments-limit >50
lambda-parameters-limit >50

下は多分誰も気にしない値。
array-dimension-limit >1024
array-rank-limit >8
char-code-limit >96
array-total-size-limit >1024

289 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:05:03 ]
> 下は多分誰も気にしない値。
char-code-limitはUnicodeサポートの目安に使ったりするみたいよlispuser.net/commonlisp/japanese.html
array-total-size-limitも結構使う。おさまらないやつは分割したりしなきゃいけないから。



290 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:28:38 ]
>>288
細かいことを言うようだが、正確にはすべて等号を含む、かな。

291 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:53:01 ]
>>289
HyperSpecのぶ厚い仕様はダテじゃないのね、、、失礼しました。
>>290
(´・ω・`)

292 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 10:52:12 ]
CL-USER> (+ 1 2)
3
CL-USER> (+ 2 3)
5
CL-USER> (+ 3 4)
7
CL-USER> (+ * ** ***)
15

こんな事ができるのね。

293 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 12:26:03 ]
>>292
それ、便利だよね。
slimeとかじゃ使えんが。

294 名前:292 mailto:sage [2008/04/08(火) 12:47:38 ]
>>293
slime+clispで試しました。


295 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:42:54 ]
>>294
sbcl だとダメだった

296 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 18:52:51 ]
>>295 うちは大丈夫だが...
; SLIME 2008-03-24
CL-USER> (+ 1 2)
3
CL-USER> (+ 3 4)
7
CL-USER> (+ 5 6)
11
CL-USER> (+ * ** ***)
21
CL-USER> (lisp-implementation-type)
"SBCL"
CL-USER> (lisp-implementation-version)
"1.0.15.41"
CL-USER>


297 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 19:01:40 ]
つかこれCommon Lisp標準の機能でしょ?

298 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:38:30 ]
この辺ですな。
ttp://www.lispworks.com/documentation/HyperSpec/Body/25_aa.htm
"*" 辺りしか使ったことないけど。

299 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:32:33 ]
一番使うのは + 系だけどな




300 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 00:47:29 ]
*も+もいいよね。CLで好きな機能の一つだ。

301 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 12:13:27 ]
xyzzyでは使えないの?

302 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 12:42:04 ]
自分で試せばいいじゃないか。

303 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 16:14:13 ]
>>301
使えないみたいですね。

304 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 16:19:08 ]
xyzzyはCommon Lispじゃないからしょうがない

305 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 23:34:06 ]
>>301 とかは xyzzy に REPL があるという認識なのね。
オレにはその認識はなかったので、かなり新鮮。

欲しければ実装してやればいいんじゃね。

306 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:06:12 ]
REPL よりも lisp-interaction-mode 改造の方が使いやすいかも

307 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 06:35:02 ]
*scratch*に入力した文字は消え去ることもないし、他に履歴呼び出しもあるしで
別に苦労して* + /を実装する必然性も感じられないんだけどw

308 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 08:37:14 ]
(let ((* nil) (** nil) (*** nil))
(loop
(setq *** ** ** * * (eval (read)))
(print *)))

*付きREPLってこんな感じ?ほとんど意味無いけどw

309 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 09:39:28 ]
>>308
実際の実装も割とそんな感じですね。



310 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:26:01 ]
>>307
さほど苦労ではないから多くの処理系で実装されているのでは?w

311 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 15:53:08 ]
多くの処理系には *scratch* がない

312 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 16:31:45 ]
会話が成立してないな。ここは人工無脳たちも来てるから仕方ないけど。

313 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:32:41 ]
>>310
いや、規格できまってるからですw

314 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 10:15:47 ]
(funcall
(car
'(#'test . ("arg1" . "arg2"))))

これが,
FUNCALL: #1=#'TEST is not a function name; try using a symbol instead
としてエラーが出るのですが,おそらくクオーティングされてるんだと思います.
これをfuncallでできるようにやるにはどうしたらよいのでしょう?

315 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 10:40:55 ]
ドッドペアとはな。コンスセルの節約かい?

A: cons で対応
(funcall (car (cons #'test '("arg1" . "arg2"))))

B: バッククォートで対応
(funcall (car `(,#'test . ("arg1" . "arg2"))))


316 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:50:56 ]
testが決め打ちなら、

(setf (symbol-function 'test) #'car)
(funcall (car '(test . ("arg1" . "arg2")))
'(foo bar))
;-> foo
で良いだろうし

testが動的に変化するなら、
(let ((test #'car))
(funcall (car `(,test . ("arg1" . "arg2")))
'(foo bar)))
-> foo
じゃない?
function(#')付けるとややこしくなると思うよ。

もしくは最初のalistの作り方ががそもそも問題で、
(let ((test #'car)
(alist (cons #'car '("arg1" . "arg2"))))
(funcall (car alist)
'(foo bar)))

とか。
なんにしろ、何が実現したいのかで変ってくる例だと思う。
関係ないけど、SchemeとCommon Lispの名前空間の扱いの違いを理解するには良い例かも。

317 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:08:31 ]
質問者は名前空間というよりクォートについて聞いているのではないか?
(define (test) 100)
((car '(test . 100)))
はSchemeだってエラーでしょう。

元質問は、俺にもかけだしだった頃に似たような経験があるなぁ。
1. #' + シンボルで関数を表現する、という説明を聞く => やってみる '(#'test) うごかNeeeなんで?
2. #'test を「評価」すると関数になるんだよー ' でクォートされたものは評価されない
3. Aha!

318 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:26:35 ]
>質問者は名前空間というよりクォートについて聞いているのではないか?
>>316 >関係ないけど、Sche...
と書いてますし、質問と関係ないことについては、ご指摘の通りですw

quoteを回避するってなら、
(funcall (cadar '(#'car)) '(foo bar baz))
って方法もあるね。
さらに横道に逸れるけどw

319 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:41:41 ]
On Lispで関数内でクオートしたリストを返しては駄目だとあるので、

この関数を定義して、
(defun exclaim (exp)
(append exp (list 'oh 'my)))

CL-USER> (exclaim '(hoge fuga))
(HOGE FUGA OH MY)
CL-USER> (nconc * '(goodness))
(HOGE FUGA OH MY GOODNESS)
CL-USER> (exclaim '(foo bar))
(FOO BAR OH MY GOODNESS) ←どうしてこうなるの???

上記の(list 'oh 'my)は関数が呼ばれるたびに
生成されると思ったのですが、どうして関数内で定義されている
リストが影響されてしまうのでしょうか。



320 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:40:32 ]
漏れの環境では、再現しないんだけど…。
CLISP、SBCL
HyperSpec博士の出番だね。

(defun exclaim (exp)
(let ((lst (copy-list '(oh my))))
(append exp lst)))
でも同じ結果になるのかな?

321 名前:319 mailto:sage [2008/04/12(土) 15:06:49 ]
>>320
> (defun exclaim (exp)
> (let ((lst (copy-list '(oh my))))
> (append exp lst)))

この関数で試してみたら、うまく動きました。
ありがとうございます。

もう一度、
(defun exclaim (exp)
(append exp (list 'oh 'my)))
を定義して試してみたら、うまく動きました。

CLisp,Slimeで試していたのですが、
上記の関数は別ファイルに書き、
c-c c-l
でloadfileしていたのですが、保存前の
ファイルをloadfileしていたのだと思います。
すみません。

322 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:12:56 ]
common lispについて情報交換 質問などができるMLはどこかにないでしょうか?

323 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:25:05 ]
>>322
MLでは無いですが、mixiにはコミュニティがありました。
この前見たときは8名ほどだったような。

日本語で情報交換できるMLがあったら私も知りたいですが、
このスレが一番活発だったりして。

324 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:58:44 ]
>このスレが一番活発だったりして。
ありうるw

いまどきブログで書く人が多いからMLも活発にならないかもしれない。
そういってもcommon lispのブログもあまり見かけない気はするけどw

325 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:20:11 ]
Common Lisp Night やろうぜ!

326 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:47:26 ]
>>325
一晩かけてみんなでカッコを黒板に清書だな

327 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:21:03 ]
LispDaysの中の人の更新がないしなぁ。

僕はとっても楽しみにしてるんで、日常だけでもいいから日記かいてくれないかなぁ。


328 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 02:27:49 ]
去年ちょこっとcommon lispのブログが増えたけど、去年中に
大体がcommon lispnについて書くのやめちゃったね。
対してSchemeはあんまりそういう傾向はないみたいなんだけど。
なんでだろ。Schemeは教材が充実してるから学習日記が書きやすいとか、かな?

329 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 02:31:53 ]
Common Lisperは仕事が忙しいんですよ



330 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 02:52:53 ]
つまり暇な学生には人気がないってこと?w

331 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 03:34:41 ]
ハテナ ダイアリィのcomon lisp groupでも作ればいいのかな






[ 続きを読む ] / [ 携帯版 ]

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

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