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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

ま、ゆっくりたりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

(list
(url http://pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url http://pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url http://pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url http://pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4)
(url http://pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5)
(url http://pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6))

□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
2デフォルトの名無しさん:2010/04/04(日) 19:01:26
((お勧めの Common Lisp 処理系)
(SBCL: http://sbcl.sourceforge.net/
:プラットフォーム UNIX, Linux, Mac, Windows(移植中)
:開発 活発
:日本語 使える(UCS4, UTF8, EUC)
:特徴 一番お勧めのコンパイラ。)

(CLISP: http://clisp.cons.org/
:プラットフォーム UNIX, Linux, Mac, Windows
:開発 そこそこ活発
:日本語 使える
:特徴 バーチャルマシン。遅いがフットプリントが小さい。)

(CMUCL: http://www.cons.org/cmucl/
:プラットフォーム UNIX, Linux, Mac
:開発 そこそこ活発
:日本語 Unicode
:特徴 高速コンパイラ。SBCL の元になった。)

(Clozure CL: http://openmcl.clozure.com/index.html
:プラットフォーム Windows, Linux, MacOSX, FreeBSD, Solaris
:開発 そこそこ活発
:日本語 CP932、EUC-JP、Unicode系全般。ISO-2022-JP未対応
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))
3デフォルトの名無しさん:2010/04/04(日) 19:02:44
((商用CL) ;;誰か補完よろ
(Allegro CL: http://jp.franz.com/index.html
:プラットフォーム Windows ,Mac OS X , Freeを含む各種UNIX
:開発 ほとんど本陣
:日本語 使える内(部UTF16,外部 プラットフォーム毎)
:特徴 お高いがもっとも頼れる。申し込みが必要だがFree Express Editionあり )
(LispWorks: http://www.lispworks.com/downloads/index.html
:プラットフォーム Windows ,Mac OS X
:開発 半年にいっぺんくらいアップデート
:日本語 使えるみたい(完全に対応しているかはちとわかりかねまする)
:特徴 IDEベースです、フリー版はconsセルの上限が来るとダイアログ
がでてしまいます、SDLとかで遊ぶとすぐに引っかかります )
(Corman CL:
:プラットフォーム Windows
:特徴 Windows専門の処理系。Allegro CLやLispWorksに比べると安価))

((その他)
(ABCL: http://armedbear-j.sourceforge.net/
:特徴 JavaVM 上で動く。JavaVM のバイトコードを生成。)

(GCL: http://www.gnu.org/software/gcl/
:特徴 日本発 Kyoto Common Lisp の直系。)

(ECL: http://ecls.sourceforge.net/
:特徴 Lisp->C コンパイラ。組み込み可能らしい。こちらもKCLの系譜))
4デフォルトの名無しさん:2010/04/04(日) 19:04:39
5デフォルトの名無しさん:2010/04/04(日) 19:06:06
6デフォルトの名無しさん:2010/04/04(日) 19:07:37
((おまけの処理系
(POPLOG: http://www.cs.bham.ac.uk/research/poplog/freepoplog.html
Lisp, Prolog, ML のコンパイラ)
(WCL: http://wcl.kontiki.com/
Shared Library として使える Lisp)
(Movitz: http://common-lisp.net/project/movitz/movitz.html
フルスクラッチの Lisp OS)
(CADR LispM: http://www.heeltoe.com/retro/mit/mit_cadr_lmss.html
MIT で使われていた LispM のソースを公開したもの)))

((その他のリンク
(Common Lisp JP: http://www.lingr.com/room/gKpArxPn9wi
チャット)
(lush: http://lush.sourceforge.net/
Lisp Universal Shell)
(実践common lisp: ttp://pcl.lispuser.net/ 実践common lisp 非公式サポートページ)
(Paul Graham の ANSI Common Lisp:
http://www.pearsoned.co.jp/hed/search/onlinecatalog.html?id=276
Common Lisp の 参考書を探しているならこれ一択)))
7デフォルトの名無しさん:2010/04/06(火) 06:22:36
1 乙
8デフォルトの名無しさん:2010/04/08(木) 22:03:36
余裕の 8 ゲット
9デフォルトの名無しさん:2010/04/10(土) 15:23:26
いつの間にかスレ立ってたのね。乙です
10デフォルトの名無しさん:2010/04/10(土) 15:37:55
テンプレのチャットはLingrよりChatonに変えた方がいいかも
ttp://practical-scheme.net/chaton/common-lisp-jp/
11デフォルトの名無しさん:2010/04/15(木) 20:09:57
この前おちてたね。
それとXCLがこの前出たみたいだが、コレはまだだめなのか?
http://armedbear.org/

日本語は一応使えるが微妙な印象
ちゃんとは見てないからわからんけど。
CL-USER(1): (princ "あいうえお")
あいうえお -> "あいうえお"
CL-USER(2): (char "あいう" 1)
#\ <- (「#\い」にならない)
CL-USER(3): (char "abc" 1)
#\b
12デフォルトの名無しさん:2010/04/16(金) 14:22:34
>CL-USER(2): (char "あいう" 1)
>#\ <- (「#\い」にならない
細かい環境がわからんからアレだが
ウチのMeadow+Slime+ABCL+JDK1.6では
#\い
が返る、slimeの設定で指定してるのは
slime-net-coding-system が 'utf-8-unix
な事くらい
13デフォルトの名無しさん:2010/04/16(金) 22:35:51
>>12
やABCLじゃなくてXCLの話な。SBCLとかでもうまくいくよ。
ちなみにXCLをslimeで起動したらエラーになった。
まだ対応してないのかも。
; Loading /home/user/.el/slime-2009-01-02/swank-loader.lisp ...
Debugger invoked on condition of type PROGRAM-ERROR:
Wrong number of arguments for #<FUNCTION (LAMBDA (SYSTEM:NAME SYSTEM::INITIAL-VALUE &OPTIONAL (SYSTEM::DOC NIL SYSTEM::DOCP)$
Restarts (invokable by number):
0: RETRY Retry loading "/home/user/.el/slime-2009-01-02/swank-loader.lisp"
1: SKIP Skip loading "/home/user/.el/slime-2009-01-02/swank-loader.lisp"
2: TOP-LEVEL Return to top level.
14デフォルトの名無しさん:2010/04/17(土) 08:52:38
そろそろClozure CL 1.5が出そう。RCが出てる。

ttp://ccl.clozure.com/blog/?p=83

faslとヒープイメージのバージョンが上がったので、要再構築。
擬似乱数生成器が、周期が約2^185のMRG321k3pになって、
ベクタストリームが追加された。メモリ解析ツールの改良と機能追加も。

>>11
XCLは前にABCL調べてたときに見付けたけど、
まだ新しいし、どういう路線なのかが分からなかったんで、スルーしてた。
簡単でもいいから、方向性とか示してくれてると、wktkできるんだけども。
15デフォルトの名無しさん:2010/04/17(土) 11:49:39
ふと立ち寄ったんだが、ClojureじゃなくてClozureってのもあるのか。やれやれw
16デフォルトの名無しさん:2010/04/17(土) 12:39:32
>>15
元々の名前はOpenMCLっていうんだけど、
それとは別にMCLってのがあるんだぜw
17デフォルトの名無しさん:2010/04/17(土) 22:55:37
苦労じゃのう
18デフォルトの名無しさん:2010/04/18(日) 00:04:45
(^^)
19デフォルトの名無しさん:2010/04/18(日) 00:21:00
そら無駄って物さ
20デフォルトの名無しさん:2010/04/19(月) 22:15:51
どう書く?orgのcommonlispのページが変な表示なんですけど
どうしてでしょうか?
21デフォルトの名無しさん:2010/04/22(木) 13:38:11
FP in Qi (2nd ed.)英国向け、EU向け、EU域外向けになってるけど、EU、EU域外向けの書店側ページが無くなってる。
もともとは、£24.50+5.00 ?24.50+5.00 $24.50+5.00で、用意してたとかかな。

ttp://www.lambdassociates.org/order.htm
22デフォルトの名無しさん:2010/04/23(金) 03:57:10
>>20
スパムじゃないかな
23デフォルトの名無しさん:2010/04/23(金) 16:59:33
>>20
http://ja.doukaku.org/lang/commonlisp/
なんでこんなところスパムしてるんだろ
24デフォルトの名無しさん:2010/04/23(金) 17:07:01
>>20
評価の高い投稿だけ表示したらまともになった
25デフォルトの名無しさん:2010/04/25(日) 13:29:02
lispboxというのwinXPに入れてみた
lispなんて全然やったことないんのにw
lispの本は難しそうだから、ネットの入門サイト見ながらいろいろ試してるとこ
括弧に抵抗なくなったら、一番やさしそうな本でも読んみる
26デフォルトの名無しさん:2010/04/25(日) 16:31:25
>>25
lispboxってこれ?

ttp://www.gigamonkeys.com/lispbox/

これなら、この作者がPractical Common Lispって本を書いてて、

ttp://www.gigamonkeys.com/book/

で原書の全文を読めるよ。邦訳も出てるから英語苦手でも安心。

ttp://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5Common-Lisp-Peter-Seibel/dp/4274067211/ref=sr_1_2?ie=UTF8&s=books&qid=1272180479&sr=8-2
2725:2010/04/25(日) 16:48:56
>>26
レスありがとう
その本なら知ってます
しかし、自分にはレベル高すぎのような気が・・・
いずれ読もうとは思ってるけどね
まずは「対話によるCommon Lisp入門」や「これがLISPだ! 」あたりから読もうかと
2825:2010/04/25(日) 16:52:37
29デフォルトの名無しさん:2010/04/29(木) 12:11:39
初めてのためのLISPの付録のところで
ドット対は
(a b c . c)
って描きかたしてもいいみたいな記述あったんだけど

ドット対の右側って複数の要素ならべてもいいの?
それともこの本だけ?
3029:2010/04/29(木) 12:14:04
ちなみに 付録Lispのまとめ の A1.6コンス のところね
3129:2010/04/29(木) 12:16:06
ごめん大まちがいした

誤>ドット対の右側って複数の要素ならべてもいいの?
正>ドット対の左側って複数の要素ならべてもいいの?

右側は理屈上S式1個しか書けないよね
32デフォルトの名無しさん:2010/04/29(木) 13:35:34
ドット表記にすれば分り易い?
'(a . (b . (c . c)))
3329:2010/04/29(木) 23:20:31
>>32
ありがとう
意味は了解しますた。

ところでこれってCommonn LispとかLispの一般的な記法なんですか?
ドット使った記法ってペアしかダメだと思い込んでたもので。

あとたとえば( . b )
って書き方はCommon Lisp ではOKですか?
理屈の上では ( . b ) = b な気がするんですが。
34デフォルトの名無しさん:2010/04/30(金) 01:03:32
>>33
とても一般的な記法。というか、(a b c . c)はdotted pairじゃない。
それはdotted list。

( . b)という表記については、NG。その場合、carに何が入ると想定してる?

以下を参照のこと。

ttp://www.lispworks.com/documentation/HyperSpec/Body/14_a.htm
ttp://www.lispworks.com/documentation/HyperSpec/Body/02_da.htm
35デフォルトの名無しさん:2010/04/30(金) 01:06:54
3629:2010/04/30(金) 01:48:50
>>34
どうもありがとうです。了解しました
( . x)はやっぱだめですか

ちなみにcar に何が入ってるというか、

(a b . c)

 /\
a  /\
  b   c

(b . c)

  /\
 b   c

( . c)

  c

というふうに左の項が1つ減るたびに
「aへ」 が減ってく感じで類推してたんですが、、
37デフォルトの名無しさん:2010/04/30(金) 02:41:50
>>36
その発想は無かった。そういうLispがあって良い気もする。
ただ、実用上のメリットが無いから規定されてないだけな気もする。

一応、追加の資料。

ttp://www.lispworks.com/documentation/HyperSpec/Body/22_ace.htm
38デフォルトの名無しさん:2010/04/30(金) 06:53:28
>>36
それだと、記法の整合性が取れないのでは??
cdr部がリストのときは、carとcdr部間のドットとcdr部の一対の括弧が省略される。
なので、cdr部がアトムだとドットが省略されない。
nilはリストでもあるから、cdr部がnilの場合は隠されてしまう。
(a . nil) と (a) は同じ。
39デフォルトの名無しさん:2010/04/30(金) 06:56:27
(a . nil)と(a . ()) は同じ。
40デフォルトの名無しさん:2010/04/30(金) 07:17:10
ドット対は基本的にはコンスセルを表現する記法
(a . b) = [ a | b ]

41デフォルトの名無しさん:2010/04/30(金) 09:38:27
最初の頃は (p . q) とかが顔に見えて困った
今はもう慣れたけど
42デフォルトの名無しさん:2010/04/30(金) 12:48:49
consはただのコンテナ
印字表現とデータ構造を混同するな
43デフォルトの名無しさん:2010/04/30(金) 21:56:25
>>42
> consはただのコンテナ

どういう意味?
「ただの」って。
4429:2010/04/30(金) 22:17:41
整合性ってだけなら
( a ) = (a .())を>34のdotted listとして一般化して
( … )=(… . ()) の…が空の場合を考えれば
nil = () =( . ()) = ( . nil) でしょうし、
nil = ( . nil) なら a = ( . a)でもおかしくないんじゃないかと、、

でもまあ結局のところ
>42の人のいうとおり仕様というか決めの問題なわけで
実際Common Lispではこんな変な記法は仕様にないことは十分納得しましたです。
ありがとうございました
45デフォルトの名無しさん:2010/04/30(金) 23:56:18
() = ( . ()) という点があやしい気がするな。...が空の場合考えれば
という部分で、無の文字列に意味をもたせちゃった事で矛盾が生じている。

(cons X Y) = (X . Y) なんであって、 NIL = () はドット記法ではあらわせない。
() はアトムでもあってそれ以上分割できない。単位元みたいな存在。

CONS で表現できないドット対があると、ドット対の定義から変更する必要がでて
きちゃうからねぇ。でも深く考えてみるのはいいことだと思う。学生の頃の俺は
そんな深く考えなかったよ…最近の若者はすごいな。
46デフォルトの名無しさん:2010/05/01(土) 00:43:51
>>44
(i) アトムは S 式である。
(ii) S1, S2ともに S 式ならそのドット対 (S1 . S2) も S 式である。
(iii) (i) と (ii) で定義されるものだけが S 式である。
( . ()) は car に S 式がないじゃん
47デフォルトの名無しさん:2010/05/01(土) 00:57:38
>>45
ドット表記って単なる糖衣構文だと思ってたんだけど、
糖衣構文なら( . ()) = ()とするLispがあっても良い気はする。
もちろん、CLHSにあるように、CLではNGだけど。

ただ、上でも書いたけど、それによる利点が無いし、
ドット表記でcarとcdrを明示的に書く習慣とも一致しないし、
多値の導入における対称性みたいな、課題の解決とかもないから、
あえてそうする意味も無いとは思う。

深く考えるのは良い事というのには同意。
今回色々調べてみて自分も勉強になった。
48デフォルトの名無しさん:2010/05/01(土) 02:25:58
>>47
> ドット表記って単なる糖衣構文だと思ってたんだけど、

そんなこと思う人間は珍しい。
どっちかというとプリミティブな記法。
49デフォルトの名無しさん:2010/05/01(土) 07:34:10
>>43
こういう文脈で使われる「ただの」ってのは、「それ以上でもそれ以下でもない」
ってな意味じゃねーの。
50デフォルトの名無しさん:2010/05/01(土) 09:44:06
(1 . (2 . (3 . ()))) がプリミティブで
(1 2 3) が糖衣構文だと思うけどなぁ
51デフォルトの名無しさん:2010/05/01(土) 11:02:49
そこでM式ですね
52デフォルトの名無しさん:2010/05/01(土) 11:41:35
>>45 () = ( . ()) という点があやしい気がするな。

'nil = (cdr 'nil) とか

(たぶん関係ない)
53デフォルトの名無しさん:2010/05/01(土) 12:51:40
関係なくはないけど、そっちからの類推だったとすると (car nil) = nil から
nil = (nil . nil) 的なかんじになるんじゃないか?

CL では規格で car, cdr は「引数が NIL だったら NIL を返す」と決まっているから
そうなっているのであって、NILという値のcar/cdr部の値が NIL なわけじゃない。
CLでは NILは generalized boolean として false と空リストの両方の意味を兼ねているからね。

これは設計上のトレードオフなので、Schemeなんかは空リストに対するcar/cdrはエラーになるし、
そもそも空リストと偽 #f は別の値だ。
54デフォルトの名無しさん:2010/05/01(土) 13:16:40
nilのcarはまだしもnilのcdrはちょっとヤだな
55デフォルトの名無しさん:2010/05/01(土) 13:18:17
(a b c . d) →(b c . d) →(c . d) →X
(a b c . d)= (a . (b . (c . d)))→(b . (c . d))→(c . d)→d
∴X=d

56デフォルトの名無しさん:2010/05/01(土) 13:31:32
3 * 1/3 = 1
2 * 1/2 = 1
1 * 1/1 = 1
∴ 0 * 1/0 = 1
57デフォルトの名無しさん:2010/05/01(土) 21:53:26
こんなマクロ書いたとして
(define-syntax sample
(syntax-rules ()
((_ (a ...) b)
'(a ... . b))))

こう使うと…
(sample () d)

こうなる
'd

素直に解釈するとマクロ変数 a がはからっぽで b には d が入ったわけだから
マクロ展開の結果は '( . d) なはず。
これが 'd ということになるのはなんだか不思議な気がする。
58デフォルトの名無しさん:2010/05/01(土) 22:39:19
>>57
なんでこのスレで Scheme の話すんの?
59デフォルトの名無しさん:2010/05/02(日) 00:16:04
泥んこ玉は何がどうなっても泥んこ玉ってことは派生した
言語も泥んこ玉だからってことじゃないの?
いや、詳しくは知らないが
60デフォルトの名無しさん:2010/05/02(日) 01:46:43
それは独自解釈を追加しちゃっているよ。リストが「からっぽ」というのは
Scheme でも空リスト相当だが、君は空リストではない「からっぽ」を考えてしまっている。
Schemeでも ( . d) なんてのは不正なので、それに「なるはず」というのはちょっと無理があるね。
特異点があるのが許せないのかもしれないけど、数学の世界にだってあるしねぇ。

SRFI-1 の cons* でもこう。
(cons*) => ()
(cons* 1) => 1
(cons* 1 2) => (1 . 2)
(cons* 1 2 3) => (1 2 . 3)
61デフォルトの名無しさん:2010/05/02(日) 12:18:46
>>57
不思議じゃない。
syntax-rulesを実装してみれば君の勘違いが分かる。
>>55な感じの再帰になる。
62デフォルトの名無しさん:2010/05/04(火) 14:57:15
偶然目に入って吹いた
ttp://mixi.blog.ocn.ne.jp/koware/2010/03/lisp_61ab.html
> 「入門 Common Lisp」(新納浩幸、マイコミ)
:
> 仕様では含まれていない関数を当たり前のように使うとは
:
> まえがきを確認してみると「本書ではLispを動かす環境としてxyzzyを想定していますが」と
63デフォルトの名無しさん:2010/05/04(火) 17:49:56
ま、初めたての頃は多くの?にぶつかるんだから、大した問題ではないと思う。
Lispは拡張していく言語だっていうから、それを実感して良かったのでは?
64デフォルトの名無しさん:2010/05/04(火) 20:22:44
全然考えたことなかったけど、( . b) が b でも基本的に問題がないような気がしてきた
65デフォルトの名無しさん:2010/05/04(火) 23:07:55
( . b)はデータ構造としてありえない状態なんだよ

) . (を解釈しないのはおかしいと言ってるのと同じ
66デフォルトの名無しさん:2010/05/05(水) 02:31:15
そういえば、Clozure CL 1.4をWindowsでSLIMEと使っていると、
いつの間にか接続が切れててイラッとするバグ、1.5で直ったね。
手を焼かされてたから良かった。
67デフォルトの名無しさん:2010/05/05(水) 18:53:19
実用Common Lispなる本を買った
寝っ転がって読もうとしたが、その質量にあえなく挫折した
今は正座している
68デフォルトの名無しさん:2010/05/05(水) 20:13:56
腕の筋肉を鍛えるいいチャンスではないか
69デフォルトの名無しさん:2010/05/05(水) 22:59:47
>>67
つゴロ寝 de スク
70デフォルトの名無しさん:2010/05/05(水) 23:31:43
>67
今日本屋で見かけて俺もビビった
PAIPの邦訳が本当に出てるという事実だけでも驚いた
71デフォルトの名無しさん:2010/05/05(水) 23:49:43
7267:2010/05/06(木) 01:41:19
>>71
それはしらなんだ
俺が買ったのはピーター・ノヴィグの方ね、
CLTL2より質量があって中身も濃いんだわ
とりあえずゆっくり寝転んで音読楽しもうとしたら>>67 になったので正座して速読したのだけど
速読でも20分かかるよ!
てか速読中に手が疲れたの久々だよ!
73デフォルトの名無しさん:2010/05/06(木) 12:25:33
http://www.amazon.co.jp/exec/obidos/ASIN/4798118907/
これか、分冊しないで出したのか。値段も凄い
アマゾンで5/11発売になってるからジュンク堂とか専門書扱ってる書店の先行発売かな
74デフォルトの名無しさん:2010/05/06(木) 20:40:04
ああ、岩本町の書泉に積んであったね
でかすぎて立ち読みしようとは思わなかったけど
評判がいいなら買うかも
75デフォルトの名無しさん:2010/05/06(木) 20:45:20
何が書いてあるの
76デフォルトの名無しさん:2010/05/06(木) 20:47:21
俺も昨日新宿の紀伊國屋で見た
そして持ち上げる気も起こらなかった
77デフォルトの名無しさん:2010/05/08(土) 01:00:52
まじだでてる。英語のを買って読もうと思ってた矢先に・・・。
邦訳するなよ。俺の英語力が上がらないではないか。

でも¥9660wたけえww
78デフォルトの名無しさん:2010/05/08(土) 01:59:26
まだlet over lambda読み終わってないのに
しかしAIと絡めた話が読めるのはうれしい
79デフォルトの名無しさん:2010/05/08(土) 06:13:51
オマエらお金あんのな。そっちのがウラヤマシイ。
80デフォルトの名無しさん:2010/05/08(土) 11:01:31
図書館に購入申請すれば、通ったりするかも。
81デフォルトの名無しさん:2010/05/08(土) 12:14:23
女の子とのデートを一、二回止めれば十分買える値段だろ
愛とAIどっちが大事なんだよ
82デフォルトの名無しさん:2010/05/08(土) 12:17:05
>>81
お前二行目が言いたかっただけだろ(棒読み
83デフォルトの名無しさん:2010/05/08(土) 15:36:04
>>81
デート二回とか………一度だって人生に無い俺に謝れ
84デフォルトの名無しさん:2010/05/08(土) 16:08:47
LOLとかOn Lispとか買ってたらもう要らんでしょw
9kも払うほどの内容か?
85デフォルトの名無しさん:2010/05/08(土) 17:04:45
AIだろAI
86デフォルトの名無しさん:2010/05/08(土) 17:10:24
永瀬乙
87デフォルトの名無しさん:2010/05/08(土) 17:34:02
>>81
いやむしろ一行目を声を大にして言いたかったんだろお前
くやしいのう
まぁ俺はAIに生きるがな
88デフォルトの名無しさん:2010/05/08(土) 17:45:30
ホテルに行かないデートなのか、ホテルしか行かないデートなのか、それが疑問。金額的に。
89デフォルトの名無しさん:2010/05/08(土) 19:11:17
AIがいいならそれ専門の本を買えばいいんじゃないの。
AIの研究所か研究室に来るLisp知らん学生向け講義の教科書になるように書いたのかな
90デフォルトの名無しさん:2010/05/09(日) 05:55:17
>>84
そこに AI があれば、それでいいじゃないか。
91デフォルトの名無しさん:2010/05/10(月) 20:50:25
clozure cl 1.5の 付属coca-ide 64bit 立ち上げると alt-consoleが出て
落っこちるだけど、動いた人いる?
92デフォルトの名無しさん:2010/05/13(木) 10:49:45
>>81
脳内彼女をLISPで組んでる俺は…
93デフォルトの名無しさん:2010/05/13(木) 10:53:08
上級者ともなると ( を打ち込んだ時点で果てる
94デフォルトの名無しさん:2010/05/13(木) 20:39:36
]で海老反りですが何か-p
95デフォルトの名無しさん:2010/05/22(土) 06:53:30
>>91
動きました。
いろいろ難しかったです。
96デフォルトの名無しさん:2010/05/23(日) 11:39:32
>>92
そのうち、lisp制御のtengaを作るんですね!
97デフォルトの名無しさん:2010/05/23(日) 13:44:36
>>92
うずらみたないのを作って女の子言葉だけネットワーク上で選らんで学習させてちょっと悦に入ってた時期がボクにもありました
いい気になって好き勝手にURL読ませたら2chばっかり拾いやがって……

シクシク
98デフォルトの名無しさん:2010/05/23(日) 19:39:43
うずらってまだ生きてたんだ…今何歳だあいつ?
99デフォルトの名無しさん:2010/05/25(火) 11:02:47
SLIME使ってるけど、SKKで何故か漢字変換できない人(つまり自分)用の設定。

(defun slime-space/skk (n)
(interactive "p")
(if (and (boundp 'skk-henkan-mode) skk-henkan-mode)
(skk-insert n)
(slime-space n)))

(add-hook 'slime-mode-hook
(lambda ()
(define-key slime-mode-map " " 'slime-space/skk)))

SLIMEのキーバインドが、SKKのキーバインドをシャドウしてしまうのが原因。
100デフォルトの名無しさん:2010/05/25(火) 17:55:54
ASDFが2になって変わり過ぎ。どうしてこうなった。
いきなり*enable-binary-locations*とか削除されてたからびっくりした。
101デフォルトの名無しさん:2010/05/26(水) 14:38:33
clbuildで久しぶりにupdateかけてみたら
全然つながらない
102デフォルトの名無しさん:2010/05/26(水) 23:07:50
女1匹よりもPAIPの方が価値あるよ。
女なんて所詮、生けるテンガ。
103デフォルトの名無しさん:2010/05/26(水) 23:22:12
涙拭けよ
104デフォルトの名無しさん:2010/05/27(木) 15:23:37
(apply #'and '(1 2 3))

andなんて定義されてませんよ
というエラー出る

105デフォルトの名無しさん:2010/05/27(木) 15:27:18
>>104
andはマクロであって関数ではない。というのが答え。
106デフォルトの名無しさん:2010/05/28(金) 11:46:42
マクロは便利だけど高階関数に使いたいとき困るな。
関数のつもりで使ったらエラーになって、実はマクロでしたと判明するとガックシ。
107デフォルトの名無しさん:2010/05/28(金) 12:37:36
lambdaでくるむ
108デフォルトの名無しさん:2010/05/28(金) 12:42:33
maximaはcommon lispなのに静的スコープでないの納得いかない
109デフォルトの名無しさん:2010/05/28(金) 19:05:36
maxima は maxima 。
CommonLisp ではない。
110デフォルトの名無しさん:2010/05/30(日) 03:36:12
SBCLってのはコンパイラなの?インタープリタなの?
実行バイナリってどうやって作るんだよ?
111デフォルトの名無しさん:2010/05/30(日) 03:46:48
>>110
コンパイラだよ。
実行バイナリの作り方はこんな感じ。

http://www.sbcl.org/manual/Saving-a-Core-Image.html
112デフォルトの名無しさん:2010/05/30(日) 07:22:07
生成された実行ファイルの大きさにびびるに一票。
113デフォルトの名無しさん:2010/05/30(日) 11:44:13
>>111
さんくす!

>>112
マジでけえwww

SBCLでアプリ作って、実行バイナリで配布しようとしたらこんなサイズになっちまうのか・・・
114デフォルトの名無しさん:2010/05/30(日) 14:19:53
まぁ C で言ったら libc や crt や cc に加えて、各種ライブラリを丸抱えしている様なもんだからね…
115デフォルトの名無しさん:2010/05/30(日) 19:50:59
コンパイラも入れてやれ
116デフォルトの名無しさん:2010/05/30(日) 20:05:40
逆に考えれば周辺ライブラリとの互換性無視で動かせるってことになりのかな?
117デフォルトの名無しさん:2010/05/30(日) 20:14:37
>>115
つ cc
118デフォルトの名無しさん:2010/05/30(日) 22:51:38
Weblocks動かせるレンタル鯖ってないですよね
あったとして必要なアプリを全部,手動でmake installなんてやってらんないから
apt-get install で依存するもの全部入る自宅鯖でやってます

最近やばい法律できたみたいなんですが,なんとか反対運動できないものなのでしょうか


>これで日本国内のサーバーはすべて届け出が必要(罰則あり)というネタがタレコまれてた [slashdot.jp]はずだけど。
>電気通信事業法 [slashdot.jp]どころの騒ぎじゃねーぞ。
http://slashdot.jp/firehose.pl?op=view&id=204318

http://slashdot.jp/article.pl?sid=10/03/24/0728256
http://www.videonews.com/interviews/001999/001450.php
119デフォルトの名無しさん:2010/05/31(月) 05:14:29
>>113
メモリイメージ込みだから。逆に、メモリイメージを保存するということで、
色々融通が利くというメリットもある。重い処理済んだ所で保存するとか、
そういうのが凄い簡単。

でも実際、AllegroだかLispWorksだかにあるとかいう、
必要ない部分は省く機能とかは、あった方が嬉しいよね。
120デフォルトの名無しさん:2010/05/31(月) 05:43:36
ついでに参考資料。

ttp://lispuser.net/memo/lisp/2007-09-05-22-23.html

サイズの小ささを重視するなら、CLISPお勧め。
121デフォルトの名無しさん:2010/06/02(水) 12:00:11
マイクロソフトさんvisual lispマダー?
122デフォルトの名無しさん:2010/06/02(水) 17:58:59
>>121
がっかりしちゃうかもしれないけどL#って実装が一応ある

俺はclojureの.net移植でいい気がする
123デフォルトの名無しさん:2010/06/02(水) 19:42:38
Autodeskので我慢してくれ。
124デフォルトの名無しさん:2010/06/07(月) 23:19:09
schemeで、演算子を比較する関数ってありますか?
例えば+と+なら同じだからtrueを返し、+と−なら異なるのでfalseを返すといった感じです。
125デフォルトの名無しさん:2010/06/07(月) 23:25:28
(eq? + +) => #t
(eq? + 1) => #f
126デフォルトの名無しさん:2010/06/08(火) 00:10:43
>>125
出来ました。有り難うございます。
127デフォルトの名無しさん:2010/06/08(火) 05:15:05
FreeBSDでsbclを使う場合のasdfのパスはどうするのがいいのでしょうか
portsでいれたcl-fooが(require :foo)で動きません
128デフォルトの名無しさん:2010/06/09(水) 00:18:11
>>127
ASDF1なら、asdf:*central-registry*に、
cl-fooのasdファイルがある場所を追加すればオーケー。

多分、どっかの下にあるsystemsってディレクトリに、
asdファイルのシンボリックリンク作ってると思うから、
そこをpushしとけばいいんじゃないかな。

(push "/home/foobar/share/lisp/systems/" asdf:*central-registry*)

みたいな感じ。

ASDF2なら、仕様が劇的に変化したから、公式のドキュメント読んでくれ。
129デフォルトの名無しさん:2010/06/12(土) 15:14:29
最近「ANSI Common Lisp」をやりはじめたんだが練習問題を解くときに
反復やsetf、letなんかを使うと負けた気分になるんだけどこれって正しい?
130デフォルトの名無しさん:2010/06/12(土) 19:10:17
>>129
最初のうちは、反復やsetfを使わないように意識するのは良いことだよ。
基本が身についたら反復もsetfもloopマクロも遠慮なく使うべきだ。
131デフォルトの名無しさん:2010/06/12(土) 22:37:59
loopマクロはグレアム本では毛嫌いされていて載ってない
132デフォルトの名無しさん:2010/06/14(月) 03:51:10
asdf2なんてできてたのか
せっかく慣れたのに
133デフォルトの名無しさん:2010/06/14(月) 11:28:42
>>132
この書き込みから、LISP信者は勉強ギライだということが分かりました
134デフォルトの名無しさん:2010/06/14(月) 11:39:36
最近「Common Lisp」を勉強はじめたんだが固定長の配列を使えばすむところを
listを使って再帰でループを回したら勝った気分になったんだけどこれって正しい?

A 勝手に何でも使って勝った負けたと喜んでいてください。

ループの固定回で違う処理を追加するために制御変数を渡すようにしたら不格
好に見えるんだけどこれって間違っている?

A 不格好かどうかは本人の主観です。勝手に間違っていると思っていてください。
135デフォルトの名無しさん:2010/06/14(月) 11:42:55
>>134
ソース見てみないと分からない
136デフォルトの名無しさん:2010/06/14(月) 19:33:19
>>132
つい最近出来た。仕様が変わりまくりで、良く言えば柔軟になった。
悪く言えば、は略。一応、後方互換も多少は残ってる。

>>134
速度の必要な場所ならベクタ(配列)使うべきだろうけど、
問題にならない場所なら、概ねリストの方が扱い易い。
ルックアップテーブルにリストを使うとかしなければ。

それと、状態を持ち回らないといけない場合は状態を渡すけど、
制御変数という表現には微妙に引っ掛かりを感じる。
なんとなくLispのイディオムから外れてる気もするので、
>>135の言うように、例を挙げてもらうといいかも。
137デフォルトの名無しさん:2010/06/14(月) 22:01:35
>>135,>>136

レスサンクス

最初が16個の0-255の整数のlistを受け取って16進ダンプする関数。

(defun l16-dump (l16)
(format t "~10,'0x :" addr)
(l16-hdump l16 0)
(do '(i (length l16) (+ i 1))
((> i 15) )
(format t " "))
(format t " : ")
(l16-cdump l16)
(format t "~%"))

(defun l16-hdump (l16 i)
(cond
((setq ch (car l16))
(format t (if (and (/= i 0) (= (mod i 4) 0)) "-" " "))
(format t "~2,'0x" ch)
(l16-hdump (cdr l16) (+ i 1)))))

続く
138デフォルトの名無しさん:2010/06/14(月) 22:03:33
(defun l16-cdump (l16)
(cond
((setq ch (car l16))
(format t "~c" (code-char (if (or (< ch 32) (> ch 126))
(setq ch 46) ch)))
(l16-cdump (cdr l16)))))


次が16個の0-255の整数の配列と長さを受け取って16進ダンプする関数。
(defun l16-dump (l16 len)
(format t "~10,'0x :" *addr*)
(do ((i 0 (+ i 1))) ((> i 15))
(format t (if (and (/= i 0) (= (mod i 4) 0)) "-" " "))
(format t (if (< i len) "~2,'0x" " ") (aref l16 i)))
(format t " : ")
(do ((i 0 (+ i 1))) ((= i len) )
(setq ch (aref l16 i))
(format t "~c" (code-char (if (or (< ch 32) (> ch 126))
(setq ch 46) ch))))
(format t "~%"))
139デフォルトの名無しさん:2010/06/14(月) 22:16:16
>>137-138
なんか色々変だな
cond の条件節に setq ?
そもそも ch ってどこで宣言してるんだ?
140139:2010/06/14(月) 22:21:48
あと addr と *addr* ってのもどこで定義してるんだろう
直感的には loop マクロ一発で書ける気がする
141デフォルトの名無しさん:2010/06/14(月) 22:26:25
>>137
色々抜けてるけど(外からやってきたと思われるaddrとか)、
ざっと見てとりあえず、

* アドレスをダンプする処理はl16-dumpには必要ない(呼び出し元でやるべき)
* リストを走査する処理がLispのセオリーとかけ離れている
* letとsetqの理解が曖昧

辺りは気になった。

関数ごとの機能を小さく作って、複数の機能を持たせないのが関数型の基本だし、
リストの処理をするときは、carで先頭を取って、残りをcdrで次に回すのが普通。
setqの部分は普通letを使ってchに束縛する。
142デフォルトの名無しさん:2010/06/14(月) 22:58:27
わざわざ再帰にしなくても、doでこんな風に書けるし、

(defun dump (l16)
(do ((l l16 (cdr l)))
((null l))
(let ((ch (car l)))
(print ch))))

dolistの方が良い気がするし、敢えて再帰で書くなら、

(defun rdump (l)
(when l
(let ((ch (car l)))
(print ch))
(dump (cdr l))))

こんな風だと思う。
143デフォルトの名無しさん:2010/06/14(月) 23:22:41
ほぼネタだけど
(defun dump (addr l16)
(format t "~10,'0x : ~{~3@{~2,'0x ~}~2,'0x~^-~} : ~{~c~}~%"
addr l16 (mapcar #'(lambda (c) (if (<= 32 c 126) (code-char c) #\.)) l16)))

きっちり小分けにして書くならhdump部はloopマクロ、cdump部はdolistかなぁ。
144デフォルトの名無しさん:2010/06/14(月) 23:37:37
>>139
chは宣言していない。setqは代入された値を返すからlistの終端でnilを返し
再帰が終わる。addr と *addr*はともに別のところで大域変数宣言している。
*の有無は慣習を知らなかったため。
loop マクロ一発で書けるだろうが簡単になるとは思えない。

>>141
アドレスのダンプは1行分の処理をまとめたかったのでこうしている。
あとの二つは恥ずかしながらまったくわからない。letは局所変数宣言と
初期設定だと思っていた。letを使うべきでsetqがなぜダメなのかは知りたい。
最後の2行目はその通りにしている。

>>142
listで受けてdoを使ったのも書いてみた。制御変数(と言わないかもしれ
ないが)が必須なので若干違っている。
145デフォルトの名無しさん:2010/06/14(月) 23:56:12
く、俺もおめーらみたいなLisperになってやるならまってろよ!

146デフォルトの名無しさん:2010/06/14(月) 23:58:31
>>145
もう少し落ち着いてから書き込めよ
147デフォルトの名無しさん:2010/06/15(火) 00:01:08
すまんw
iphoneで書き込んだら変な変換かかってしまったw

実践Common Lisp 読みながら寝るぜ
148デフォルトの名無しさん:2010/06/15(火) 01:56:38
>>144
なら、アドレスもダンプする関数に渡すとかしたらどうだろう。
元のコードだと、外部の状態に処理が依存していて、関数型っぽくない。
参照透過性について調べてみて。これ無視すると関数型の威力激減。

二番目はこちらの勘違い。ごめん、忘れて。

letとsetqは慣習の話。仕様的にはsetqでもダメじゃない。
letは値に名前を付ける。setqはその名前に結び付けられた値を書き換える。
だから、setqを見たLisperは、どこかの変数の値を書き換えてるんだな、と思う。
典型例は>>139。要するに紛らわしい。
149デフォルトの名無しさん:2010/06/15(火) 20:22:55
>>143
マジレスすると16より少ない場合があるからたぶん使えない。

>(if (<= 32 c 126) (code-char c) #\.)

なるほどこれはいい。

>>148
>なら、アドレスもダンプする関数に渡すとかしたらどうだろう。
以前は必ずそういう書き方をしてたのだが最近になってしなくなった。
なぜしなくなったか書くと私にとってくだらない議論になるだけだから書かない。
あのソースを出したのは不用意だった。こういう展開になるのを予想できていた
らそのように書いたのを見せていただろう。再帰については>>142のやり方が綺
麗に見える。
150デフォルトの名無しさん:2010/06/15(火) 20:46:46
予防線を張りまくりな割につつかれると後出しで何かブツブツ言ってくる質問者は
対話型の学習には向いていないのでテンプレのリンク集を試してみて下さい
151デフォルトの名無しさん:2010/06/15(火) 21:05:57
>>149
何か色々話が逸れたけど、本題のiの扱いについてはちょっと考えてみた。

まず、データを読み込むときに、16に足りない分はnil辺りで埋めておけば、
l16-dumpで空白を出力する部分もl16-hdumpにまとめられる。

あとは、あらかじめ区切りの並びを作っておけば、一応数をカウントしなくて済む。

(defun hex-dump (dat sep)
(let ((c (car dat))
(sep (if sep sep '("-" " " " " " "))))
(when c
(format t "~a~2,'0x" (car sep) c)
(hex-dump (cdr dat) (cdr sep)))))

こんな風。最初に呼ぶ時は、sepに'(" " " " " " " ")渡せばいい。
152デフォルトの名無しさん:2010/06/15(火) 22:48:54
誰もつっこんでないけど >>137のdoの後ろのクォートは
とってもアレだから気を付けようね。
* (let'(a 1)(list quote a))

(NIL 1)
153デフォルトの名無しさん:2010/06/16(水) 23:10:41
sbclがチューンするとCと同じ速度出せるというのが信じられない
動的型なのに
154デフォルトの名無しさん:2010/06/16(水) 23:49:57
155デフォルトの名無しさん:2010/06/17(木) 00:12:45
>>148 続き
>letは値に名前を付ける。setqはその名前に結び付けられた値を書き換える。
このあたり抽象的すぎて理解できていない。メモリ上のデータが両者でどう違
うか分かるまでは分かったような気にならない人間だからこういう説明は結構
辛い。説明が悪いといっているのではなくアセンブリ言語から入った人は多少
はこういう感覚を持っていると思う。

>>150
> 対話型の学習には向いていない
いえいえそんなことはありません。>>134以来皆さんのレスのおかげで随分
学習が進んでいます。あらためてお礼を申し上げます。この程度ならlisperが
違和感無く見られるソースを書けるようになっていると思います。

>>151
レスサンクス。
>まず、データを読み込むときに、16に足りない分はnil辺りで埋めておけば、

これだとlengthで位置がとれる(今やってみた)のでそちらの方が簡単かと。

>>152
これを書くときはwebを見てコピペしたみたいだ。自分の参考書2冊ともこん
な書き方をしてなかった。なぜアレなのかは想像もつかないがこれでなぜ動
いているのかの方がもっと不思議。
156デフォルトの名無しさん:2010/06/17(木) 03:22:50
>>155
letはxを1として、コードを実行する。setqはそこから見えるxの値を1に書き換える。
舞台裏まで知りたいなら、処理系のコードでも読んでください。

あと、どうも誤解させた気がするけど、>>151で言ってるnilでのパディングは、

(defun hex-dump (dat sep)
(unless (endp dat)
(let ((c (car dat))
(sep (if sep sep '("-" " " " " " "))))
(format t "~a~a"
(if c (car sep) " ")
(if c (format nil "~2,'0x" c) " "))
(hex-dump (cdr dat) (cdr sep)))))

こういう意味。これなら、不足バイト分後から空白で埋める必要ないから。
157デフォルトの名無しさん:2010/06/17(木) 03:39:21
ああ、処理系のコード読むより、もっと良いのがあるじゃん。
どうぞ、disassemble関数(ANSI標準)で心ゆくまで納得してください。
158デフォルトの名無しさん:2010/06/17(木) 07:32:27
まずこの文書を読むといいよ。lisp のスタイルについて書かれてる。
英語だけど平易だし斜め読みでいい。
ttp://www.cs.umd.edu/~nau/cmsc421/norvig-lisp-style.pdf
lisp にも、他の言語と全く同じく、良いスタイルがあるんだ。
159デフォルトの名無しさん:2010/06/17(木) 15:56:09
>>156
すげぇ。lisperってこんなん普通に書いちゃうわけですね... orz
sep に渡す引数って、使いきっちゃうと nil 渡したときのデフォルトが使われ始めるけど
これを最初に渡した sep で繰り替えしたいときはどうするのが一番スマートですか?
リーダーマクロ使って循環リストを引数に渡す、ってのは思いつきましたけど
lisperならフツウどうするんですか?
160デフォルトの名無しさん:2010/06/17(木) 17:55:50
>>156
letとsetqの違いを理解できないのは私がアホなだけで説明する人のせいではあり
ません。

もともとは再帰関数で制御変数みたいなのをを持って回るのがカッコ悪いのでは
ないかという疑問だったのです。listを持って回るのは再帰的構造をしているので
違和感はないのですが渡すのが一つで済むならそちらがいいのではないかと思
ったわけで好みの問題だと思います。

>>157
サンクス gclでやってみたけど違いはsetqではグローバル変数を作ってそれに値
を入れるということでいいのだろうか?そこしか違いが分からないがもしそうだとす
れば気持ち悪いソースを書いていたんだと思う。
161デフォルトの名無しさん:2010/06/17(木) 18:08:11
teste
162デフォルトの名無しさん:2010/06/17(木) 18:08:55
readで読んだ文字列をS式として実行とかできるん?
163デフォルトの名無しさん:2010/06/17(木) 18:43:17
(eval (read-from-string "(+ 1 2)"))
ってか
164デフォルトの名無しさん:2010/06/17(木) 20:48:36
>>163
そんなんだわ。愛してるよ。
165デフォルトの名無しさん:2010/06/18(金) 01:34:40
>>159
要はひとつのサイクルを持ち回すことができれば良いので、

(defun f (l n)
(loop repeat n
with cycle = l
for y = l then (if (cdr y) (cdr y) cycle)
do (format t "~a" (car y))))

こういうノリでloopを使って邪悪に書きました。(f '(+ - - -) 50)みたいに呼んでください。

再帰で書きたいなら、defunをletで囲んでレキシカル変数にサイクルを保存したり、
毎度サイクルを丸ごと渡したり、labelsで関数内関数を作ってそちらを再帰したり、
ネタっぽい方法しか思い付かなかったので、普通に循環リスト使うのが良いと思います。楽だし。
166デフォルトの名無しさん:2010/06/18(金) 01:37:39
ごめんなさい。cycle要らないですね。

(defun f (l n)
(loop repeat n
for y = l then (if (cdr y) (cdr y) l)
do (format t "~a" (car y))))

で。
167デフォルトの名無しさん:2010/06/18(金) 02:21:03
>>160
必要な状態を持って回るのは普通だと思う。不要な物まで持ってく必要はないけど。
再帰の定石を知りたいなら、Schemeのコードが参考になるんじゃないかと。
CLerは普通loopとかdoとか使うし。

setqは、ローカル変数の宣言次第でまた違うけど、件のコードだとまさにそう。
168デフォルトの名無しさん:2010/06/18(金) 20:35:40
>>167
サンクス 関数のなかでグローバル変数を作れてしまうのに逆に驚いてしまった。


皆さんのおかげで最初の一歩を踏み出す準備ができました。とくにソースを示して
くれた人、どれも示唆に富んでいました。ありがとうございました。
169デフォルトの名無しさん:2010/06/20(日) 22:19:55
今日立ち読みで、実践CommonLisp読んできたんだが、初めて Lisp の format がちょっと理解できた。
そして何故 Lisper は printf じゃないのかを垣間見た気がする。format に比べたら printf はおもちゃだ。
Lisp っぽくはないから諸派あるらしいけど、printf系しか知らなかったから新鮮。
というわけで >>143 を練習で書き換えてみた。
(defun dump (addr l16)
(format t "~10,'0x : ~{~3@{~:[ ~;~:*~2,'0x~]~^ ~}~1@{~:[ ~;~:*~2,'0x~]~^-~}~} : ~{~c~}~%"
addr l16 (mapcar #'(lambda (c) (if c (if (<= 32 c 126) (code-char c) #\.) #\ )) l16)))
区切りを - と space で切り替えるのに、3回、1回でそれぞれ回してるのが気になるけどどうにかならない?
170デフォルトの名無しさん:2010/06/20(日) 22:26:18
見なかったことにする
171デフォルトの名無しさん:2010/06/20(日) 23:30:58
カオス過ぎるw
CLも使うけど、元々SchemerだからCLのformatには付いて行けないw
172デフォルトの名無しさん:2010/06/21(月) 20:16:16
CLの変態formatを使いこなせる人は変態だと思う。
173デフォルトの名無しさん:2010/06/21(月) 22:52:13
~{ とか ~[ とかはLispらしい、と思うな。
formatterマクロを通してどんな関数に変換されてるのか想像しながら書くと楽しいんじゃないか。
~Rとか~@Rみたいなのはどうかと思うけど、年に2回くらい感謝する時があるから困る
174デフォルトの名無しさん:2010/06/21(月) 23:24:33
ttp://blog.practical-scheme.net/shiro?20100114-cltl2
shiroさんは変態という名の紳士なんだね…
175デフォルトの名無しさん:2010/06/22(火) 15:44:14
whileがよくわからない…

GIMPのScript-fuを勉強してるのですけど
while が出てくるんですよ
でも、勉強用にインストールした DrScheme 上で、
言語選択でR5RSにして
while を使おうとしても「そんなのねえよ」と言われてしまう

たぶん、GIMP上では while が独自に実装されてるんでしょうけど
R5RSでは while が無いということは…
while でループをするのは、
Lisp系の言語にとって「筋が悪い」ことなのでしょうか?
できるだけ再帰でループしたほうが「筋がいい」のでしょうか?
Lisp系の中で、while の扱い・立場がよくわかりません
176デフォルトの名無しさん:2010/06/22(火) 20:56:32
>>175
Lisp 的には、再帰的な処理は再帰で書き、繰り返し的な処理はループで書く
というのが筋がいいと思う。Lisp の利点は再帰を使う事ではなく、問題に
合わせて自然にプログラムを書ける事だよ。

ちなみに Scheme のスレは↓こっち。

Lisp Scheme Part30
http://pc12.2ch.net/test/read.cgi/tech/1270897776/
177デフォルトの名無しさん:2010/06/22(火) 22:52:18
>173
変態の称号授与
178デフォルトの名無しさん:2010/06/23(水) 00:28:21
>>177
知らない人が見たら罵倒でも
CLerには称号なんだよな〜


なんでこんなとんがった言語扱いなんだろう、こんなにも平べったいのに
179デフォルトの名無しさん:2010/06/23(水) 09:26:57
Scheme 的に while が駄目ってのじゃなくて、
最小限必要な機能の中にはないってことだと思う。
R5RS は言語コアで何でも解決しようっていうものじゃないから、
規格にあるか無いかは筋の良さとはあまり関係がない。
while くらいなら自前で書いても大した手間じゃないから、
それほどポータビリティが損なわれるわけでもない。
while で書くのが自然だと思うなら while で書けばいい。
180デフォルトの名無しさん:2010/06/23(水) 12:08:41
do「・・・・」
181デフォルトの名無しさん:2010/06/23(水) 15:18:53
clisp のソースコードを眺めてみたんだけど、なんで C で書かれているの?
(最小の?) lisp からのブートストラップで CommonLisp を構築、っていう方向性の実装はありますか?
182デフォルトの名無しさん:2010/06/23(水) 21:44:27
>>174
shiro さんの format じゃないけど, 普通見るだろ, manual を?
# まぁ unix の man はすりへらなからなぁ
# ls のオプション全部覚えてる人っているのかな?
183デフォルトの名無しさん:2010/06/23(水) 23:35:56
>>181
SBCL とか Clozure とか。
最小の Lisp からブートストラップと言うより、既存の CL 処理系を使って
ブートストラップする感じだけど、ANSI で標準化されている言語だから
最小に拘る必要も無いのよね。C のコードは少ないから、まあ見てみなよ。
184デフォルトの名無しさん:2010/06/24(木) 01:42:56
ttp://trac.clozure.com/ccl/changeset/13869
ttp://trac.clozure.com/ccl/ticket/696

WindowsでClozure CL使ってる人、やっと来たぜー。
SLIME使ってると良く固まる不具合が解決した。
これで1.4からバージョンアップできる。
185デフォルトの名無しさん:2010/06/24(木) 14:55:19
>>182
CLtLを紙で見てないけど…
186デフォルトの名無しさん:2010/06/24(木) 15:00:41
繰り返しはなんでもかんでもloopで書いちゃう癖はどうにかしたい。たまにはdolistとかも使ってやりたい。
187デフォルトの名無しさん:2010/06/24(木) 15:52:58
do ならschemeでも動く
188デフォルトの名無しさん:2010/06/24(木) 16:48:03
doで書くと変数を整理しやすい
189デフォルトの名無しさん:2010/06/24(木) 17:00:03
そういえば、PC9801DOってあったな。
190デフォルトの名無しさん:2010/06/24(木) 17:08:41
Yes, they do.
191デフォルトの名無しさん:2010/06/24(木) 21:03:26
Do Do Do, De Da Da Da
192デフォルトの名無しさん:2010/06/24(木) 21:08:13
ポリスかと思いきやDeってなんですかDeって
193デフォルトの名無しさん:2010/06/24(木) 21:09:38
>>189
あっただと?
まだ俺の部屋にあるぜ。
194デフォルトの名無しさん:2010/06/25(金) 19:44:04
『ANSI Common Lisp』の125p.の図8.2の関数seeの定義

(let ((prev `|.|))
(defun see (symb)
(let ((pair (assoc symb (gethash prev *words*))))
(if (null pair)
(push (cons symb 1) (gethash prev *words*))
(incf (cdr pair))))
(setf prev symb)))

参照: http://lib.store.yahoo.net/lib/paulgraham/acl2.lisp

の (prev `|.|) の ` はどういう意味があるんでしょうか?
195デフォルトの名無しさん:2010/06/25(金) 21:03:01
>>194
出現順単語表のルートでは?
196デフォルトの名無しさん:2010/06/25(金) 21:24:25
クオートではなくバッククオートなのはどうしてでしょうか?
197デフォルトの名無しさん:2010/06/25(金) 22:01:10
直前のpunc関数書き終わって一息ついた所で、バッククォート使ってれば
タイピングがはるかに楽だったという事に気付いてorzってなったと見た
198デフォルトの名無しさん:2010/06/28(月) 12:27:47
「どう書く?」のスパムはいつになったら消えるんだ?
199デフォルトの名無しさん:2010/06/29(火) 07:08:06
どう書く 問題がいつも無いから見るのやめた
200デフォルトの名無しさん:2010/07/01(木) 00:13:20
Schemeに関して質問です。
与えられた数と演算子から、リストを狭めるfilter関数を作れと言われています。
例えば(list 3 7 4 1 6)に対して、数字5と演算子>=が与えられれば、リストの中から
5以上の要素だけを抜き出した(list 7 6)を返す、というものです。ここで、
(define (reduce op base L)
 (cond
  [(empty? L) base]
  [else (op (first L)
        (reduce op base (rest L)))])) というreduce関数を使えと指示がありました。
reduce関数の挙動はLに(list 1 2 3)を入れれば(op 1 (op 2 (op 3 base)))となる感じです。

そこで私は局所関数fを用いて以下のように定義しました。
(define (filter rel_op L t)
 (local ((define (f n L)
      (cond
       [(rel_op n t) (cons n L)]
       [else L]))))
 (reduce f empty L)) ……(☆)

これに対して (filter >= (list 3 7 4 1 6) 5) と実行すると、
filter関数の挙動は、(f 3 (f 7 (f 4 (f 1 (f 6 empty)))))となるので、あとは関数fに従って(list 7 6)が
返ってくる筈なのですが、(☆)の行で、関数に対して無駄な部分がある というメッセージと共に
エラーが出ます。何処が間違っているのか、ご教授頂けないでしょうか。
201デフォルトの名無しさん:2010/07/01(木) 00:22:36
>>200
ここはSchemeスレじゃNEEEEE!!

というか、Schemeだと関数内関数は、

(define (f x)
(define (aux x)
...)
...)

みたいに普通に入れ子でdefineで定義できるぞ。
というか、そのlocalはどこから出てきた。
202デフォルトの名無しさん:2010/07/01(木) 00:25:57
>>201
学校で局所関数を用いる時はlocalを使って上のように書く、と教わったもので…
203デフォルトの名無しさん:2010/07/01(木) 00:29:04
ちなみに規格ね。

R5RS
ttp://people.csail.mit.edu/jaffer/r5rsj_7.html#SEC47

R6RS
ttp://practical-scheme.net/wiliki/wiliki.cgi?R6RS:%E7%BF%BB%E8%A8%B3:R6RS:11.2%20Definitions

R6RSの方はちょっと読み辛いので、<body>の定義に注意して良く読んで欲しい。

で、本来質問すべき妥当なスレは、

Lisp Scheme Part30
http://pc12.2ch.net/test/read.cgi/tech/1270897776/
204デフォルトの名無しさん:2010/07/01(木) 00:31:17
>>202
処理系(コンパイラあるいはインタプリタ)はどれ?
205デフォルトの名無しさん:2010/07/01(木) 00:40:07
>>204
DrSchemeです。
206デフォルトの名無しさん:2010/07/01(木) 00:44:53
分かった。PLTか。DrScheme?

それlocal文の外でf使ってるからだよ。
(reduce ...)の前の閉じ括弧ひとつ消して。
で、マニュアルをちゃんと読むんだ。

マニュアル
ttp://docs.racket-lang.org/reference/local.html

限りなくここの大学と思われる参考資料
ttp://www.db.is.kyushu-u.ac.jp/rinkou/scheme/kougi15/Slide02.html
207デフォルトの名無しさん:2010/07/01(木) 00:53:28
>>206
>local式内で定義された変数、関数などは、そのlocal式の中でのみ有効

本当ですね…括弧閉じの位置が違うせいで、fがlocal外に出ていました…。
解決することが出来ました。本当に有り難うございました。

ちなみにどうして大学バレたし
208デフォルトの名無しさん:2010/07/01(木) 00:56:52
>>207
次Schemeの質問ここでしたら、Common Lispに改宗な。

国内でScheme教えてて、DrScheme使ってて、独自拡張のlocal文教えてる所なんて、
超レアなんだから、ググったら一発。
209デフォルトの名無しさん:2010/07/01(木) 12:43:25
みんなやさしいなぁ
210デフォルトの名無しさん:2010/07/01(木) 19:49:29
>>209
宿題丸投げじゃなくて悩んで書いた事がわかるときはLispスレって妙に親切だよね
あとやっぱりCommonLisp単独でのネタはなかなか来ないからってのもあるのかもね
211デフォルトの名無しさん:2010/07/04(日) 12:18:59
鳩 < もはや大学の存在理由がわからない。
212デフォルトの名無しさん:2010/07/05(月) 11:24:31
>>211
Lispの処理系ばっか増えてライブラリー作りを誰もしないからな
213デフォルトの名無しさん:2010/07/17(土) 05:11:38
型付けマクロ?Qi II 後継の Shen が95%できたという知らせがきてた。
http://groups.google.co.uk/group/qilang/browse_thread/thread/569ab9260e635041

去年あたり、(CLから)Clojureへの移植も議題にあがってたのね。
http://groups.google.co.uk/group/qilang/web/qi-core-and-ports

Shen http://www.lambdassociates.org/shen.htm
Qi II http://lispuser.net/commonlisp/qi.html
214デフォルトの名無しさん:2010/07/20(火) 07:30:13
勉強がてらログ解析してレポート出力するバッチプログラム作ろうと考えているんですが、Common Lisp の場合、これを自動実行させたい場合、どうやって実行させるのが一般的でしょうか?

サーバにsbcl等の処理系入れて、コンパイルしたfaslファイルをおいてcronからコマンドでって感じでしょうか?
215デフォルトの名無しさん:2010/07/20(火) 09:35:59
SBCLなら、--scriptオプション使うか、
sb-ext:save-lisp-and-dieで実行バイナリ作れば良いよ。
216デフォルトの名無しさん:2010/07/20(火) 21:56:19
cl-cronっていうのもあるみたいね。
repl上でcron作れるからrepl抜ける必要がないみたい。
217デフォルトの名無しさん:2010/07/21(水) 23:33:52
> cl-cronっていうのもあるみたいね。
>>214 じゃないんだが感謝。
cron のまがいのものを、必要に迫られて作ってる最中。
day of month で carry が出るときの day of week の処理が、とてもめんどっちい
218デフォルトの名無しさん:2010/07/22(木) 11:50:35
時系列処理が必要な時こそ
継続とdelayの出番
219デフォルトの名無しさん:2010/07/22(木) 20:03:36
>>218
cron は、時系列処理じゃないことに留意
# 簡単な例
m 月と n 月の x1, x2 日と毎週 y1曜日とy2曜日に処理する
m と n が連続してればいいけど, してなかった場合, 処理を実行すべき
y? 曜日ってどうやって決定する?
220デフォルトの名無しさん:2010/07/25(日) 04:56:15
>>215-216
サンクスです。規制されてて書き込めませんでした。
cl-cron なんてのもあるんですね。

221デフォルトの名無しさん:2010/07/25(日) 11:20:04
cl からHadoopっていじれねーかなー
結構Lisp向きのデータ構造だと思うんだが。
222デフォルトの名無しさん:2010/07/26(月) 08:52:26
>>213
を、昨日は lambdassociates.org に接続できなかったけど今日はOKだた。
たまぁに接続できなくなるのはなんでだろ。
223デフォルトの名無しさん:2010/07/27(火) 08:30:31
224デフォルトの名無しさん:2010/07/27(火) 10:28:51
>>223
これからweb検索するのがえらくめんどくさい事になりそうでやだなぁ
225デフォルトの名無しさん:2010/07/27(火) 12:07:35
>>224
それに映ってるLISPのロゴ入ったノートPCがほしい
226デフォルトの名無しさん:2010/07/27(火) 12:45:55
>>223
こりゃだめだわ 流行らない
227デフォルトの名無しさん:2010/07/27(火) 16:02:22
これからブログにlispの記事書く時は、ゆのっちネタも必ず書かねば
228デフォルトの名無しさん:2010/07/27(火) 16:05:40
阿澄佳奈「ブログはxyzzyで書いてます」
229デフォルトの名無しさん:2010/07/27(火) 16:23:57
〜〜pで質問したらtかnilで答えてくれればいい
230デフォルトの名無しさん:2010/07/27(火) 16:41:40
×
231デフォルトの名無しさん:2010/07/27(火) 17:00:02
#t #fで返されたらどーする?
232デフォルトの名無しさん:2010/07/27(火) 17:42:23
公式サイトは当然weblocksだよな
233デフォルトの名無しさん:2010/07/27(火) 18:48:46
俺は鷹揚なんでnilかそれ以外で。
このスレにはそんな人が多いと信じていた。
234デフォルトの名無しさん:2010/07/27(火) 19:40:47
ラジオ 電波 DE リカージョンの開始はいつからですか

しかしSchemeスレよりこっちのほうが否定的でないのには驚いた
235デフォルトの名無しさん:2010/07/27(火) 21:12:55
>>234
nilじゃなきゃ大丈夫だからじゃね?
236デフォルトの名無しさん:2010/07/27(火) 23:53:30
CLで文字列分割したいんだけど、デリミタに文字列指定できる関数かマクロみたことないっすか?
split-sequenceもkmrcl:delimited-string-to-list もダメぽでした。

237デフォルトの名無しさん:2010/07/28(水) 01:08:11
>>234
何でも取り込むのがCL流。
238デフォルトの名無しさん:2010/07/28(水) 07:48:02
>>236
asdf::split
239デフォルトの名無しさん:2010/07/28(水) 07:49:43
ごめん読み間違えてた。文字じゃなくて文字列で分割か。
240デフォルトの名無しさん:2010/07/28(水) 09:50:15
>>236
cl-ppcreのsplitどう?
241デフォルトの名無しさん:2010/07/28(水) 19:09:39
伝統に従うとこうなる

阿澄 「coffee-p?」
片岡 「tea.」
242デフォルトの名無しさん:2010/07/28(水) 22:37:04
あのネットブック、 LISP マシンらしいぜ
243デフォルトの名無しさん:2010/07/28(水) 23:27:43
>>242
それだったら俺もほしいかも
244デフォルトの名無しさん:2010/07/28(水) 23:49:07
>>240
おぉ、サンクスです!できました!
参考までに教えていただきたいんですが、こういうのってどうやって調べてるんですか?
245デフォルトの名無しさん:2010/07/29(木) 00:52:17
申し訳ないが今回は単なる勘。まず、正規表現ならそういうのがありそうだと思い、
次に、マッチングする関数を提供するなら、それを使った操作も一緒に提供するだろうと、
cl-ppcre見に行ったらビンゴだった。

普段は、逆引きCommonLispやThe Common Lisp Cookbookを見たり、
適当なキーワードでググったりしてる。
246デフォルトの名無しさん:2010/07/29(木) 01:28:12
SBCLで(require 'xxx)したときのメッセージを抑止する方法ってない?

; loading system definition from /root/.sbcl/systems/jp.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM :JP> as JP
; registering #<SYSTEM :JP-TEST> as JP-TEST

こういうヤツ。
247デフォルトの名無しさん:2010/07/29(木) 08:06:18
null なストリーム作って捨てるとか出来ないか?
248デフォルトの名無しさん:2010/07/29(木) 22:44:00
>>244
240じゃないけど、asdf-install や cl-build でありったけライブラリ入れておいて、
その状態のコアイメージ作成する。
で自分の欲しい機能や関数をM-x slime-aproposで検索して探すのがいいんじゃないかな。

249デフォルトの名無しさん:2010/07/30(金) 05:47:45
250デフォルトの名無しさん:2010/08/03(火) 12:17:17
http://groups.google.co.uk/group/qilang/browse_thread/thread/fe07f6a5032d5d47

> Over the next period Carl will be going over the instruction set wrt
> its suitability for the JVM/CLR/DVM and the Android system
> and will be leading a lot of the development of Shen.

Qi IIの次は、共通VM上に移るのか?・・・
251デフォルトの名無しさん:2010/08/04(水) 23:08:35
http://twitter.com/fogus/status/20300763297
CLに実装して、その先は、Clojure over JVM/CLR/DVM で動くようにするのか。
252デフォルトの名無しさん:2010/08/05(木) 12:28:03
ttp://www.fukkan.com/fk/VoteDetail?no=20616

復刊決定だって

すげーな
けど、なんで?Lisp
253デフォルトの名無しさん:2010/08/05(木) 13:03:44
>>252
それこのスレの4か5位で復刊してほしいとか言う話があったはず、もっと前スレかもしれんけど

254デフォルトの名無しさん:2010/08/05(木) 13:07:39
>>252
みつけた
【入門】Common Lisp その3【質問よろず】

352 :デフォルトの名無しさん :sage :2007/08/05(日) 06:57:04
CLOS の良い日本語解説書ってないかな?
bit別冊 Common Lisp オブジェクトシステム -- CLOSとその周辺
というのがいいらしいのだが、絶版で
(p)ttp://www.fukkan.com/fk/VoteDetail?no=20616
あと、1 桁のところで、復刊リクエストまで行ってないんだ…orz

ちょうど三周年なので記念に購入してきた
255デフォルトの名無しさん:2010/08/05(木) 14:04:48
井田先生の、復刊に寄せた言葉は収録されるのかな?
それともサイトに載せるだけなのだろうか。
256デフォルトの名無しさん:2010/08/05(木) 14:07:44
地球資源を守れ!
みんなの青い星

あと、参院予算委員会をみてるにょ
257デフォルトの名無しさん:2010/08/05(木) 22:52:35
>>252
昔書泉で見つけて、あの時買っておけば良かったなーとか思ってたけど、復刊してたのか。
そういや、bitも無くなってるんだな。
258デフォルトの名無しさん:2010/08/09(月) 04:29:23
>>252
CLOSが設計されるに至った経緯の部分は読み物として今も面白いと思うし、
示唆に富む部分もあると思う。
259デフォルトの名無しさん:2010/08/09(月) 14:55:34
thinlispのドキュメントほとんど消されてて笑った
誰か使い方分かる人いる?
260デフォルトの名無しさん:2010/08/09(月) 14:57:54
comp.lang.lisp
に2004年ぐらいにあがってた
thinlisp-1.1.tar.gz
というファイルをおもちの方は誰かいませんか?
261デフォルトの名無しさん:2010/08/09(月) 21:08:04
ttp://vsedach.googlepages.com/thinlisp-1.1.tar.gz
これか?
ググル先生の1ページ目にあったが
262デフォルトの名無しさん:2010/08/10(火) 12:02:44
thinpo
263デフォルトの名無しさん:2010/08/10(火) 20:44:09
いつのまにやらclisp2.49来てたのね
264デフォルトの名無しさん:2010/08/11(水) 07:21:23
自分で定義したマクロだけ展開して
デフォルトで入ってるloopなどのマクロを展開させないことはできますか?
265デフォルトの名無しさん:2010/08/11(水) 22:54:21
>>264
そうゆうマクロを書けばええんちゃうの?
つか、なんのための package?
266デフォルトの名無しさん:2010/08/14(土) 11:14:48
test
267デフォルトの名無しさん:2010/08/17(火) 04:41:52
そうかloopを関数として定義を上書きすればいいじゃん
268デフォルトの名無しさん:2010/08/17(火) 09:19:04
loopはマクロだ。

何がやりたいのかを説明したほうが、
より良いアドバイスをもらえると思うぞ。
269デフォルトの名無しさん:2010/08/17(火) 13:23:43
自分で書いたマクロのデバックがしたい
270デフォルトの名無しさん:2010/08/17(火) 13:40:32
macroexpand-1
271デフォルトの名無しさん:2010/08/21(土) 18:18:41
プログラムのどこかで大量にコンシングしているようでメモリ使用量が大変なことになっています。
プロファイルのように、実行中のプログラムのどの関数でコンシングが起こっているか調べる方法はないでしょうか。

処理系はSBCLです。
272デフォルトの名無しさん:2010/08/21(土) 19:39:18
CommonLisp のことはよくしらんが、そのメモリ確保が本当にコンスであることがわかっているのなら、
cons 関数を適当に上書き (再定義) してみるとかってどうだろう。
273デフォルトの名無しさん:2010/08/21(土) 21:10:45
274デフォルトの名無しさん:2010/08/21(土) 21:12:46
追記:
(profile-soundex)
ってところね。
275デフォルトの名無しさん:2010/08/22(日) 00:08:53
weblocls少し前まではやってたけど最近きかないね
276デフォルトの名無しさん:2010/08/22(日) 02:57:36
>>271
マニュアルで一章丸々割いて説明してるんだが。

ttp://www.sbcl.org/manual/#Profiling

>>275
devブランチは停滞しつつも先に進んでるみたいよ?
まあ、実際に仕事で使ったりしない限り、モチベーション続かないとは思うけど。
277デフォルトの名無しさん:2010/08/24(火) 17:12:38
weblocksはドキュメントがほとんどない
clはscheme(特にplt)と比べるとドキュメント少ないね
ソース読めってことなのかな
278デフォルトの名無しさん:2010/08/24(火) 21:24:59
CLHSと処理系のマニュアル以外にドキュメントって何が必要なの?
279デフォルトの名無しさん:2010/08/25(水) 00:15:45
それは単に、Weblocksがドキュメント書くのさぼってるだけだよ。
Schemeのドキュメントが豊富とか全く思ったことがない。
「PLTの」ドキュメントが充実しているだけで、SchemeもCLも似たようなもん。
280デフォルトの名無しさん:2010/09/08(水) 13:09:42
thinLispのサイトが死んでしまったようなんですが
ドキュメントを保存している人いませんでしょうか
281デフォルトの名無しさん:2010/09/08(水) 23:14:31
thinLispのサイトって
http://www.thinlisp.org/index.html
のこと?問題なく見れるけど。
282デフォルトの名無しさん:2010/09/09(木) 00:16:38
同じ質問が前にもあったので、
サイトがとまるのか、DNSが引けないのか
そこらへんかね
283デフォルトの名無しさん:2010/09/09(木) 13:39:47
そっちではなくこっちです
http://vsedach.googlepages.com/code.html
284デフォルトの名無しさん:2010/09/09(木) 15:18:54
redirection loopが起きているので連絡してやってくれ。
285デフォルトの名無しさん:2010/09/11(土) 01:56:58
clispとsbclで挙動が違うのだけど、どっちが正しいのだろう
global変数の何かが違うみたい
286デフォルトの名無しさん:2010/09/11(土) 05:34:11
>>285
どっちも間違ってる可能性もあるし、どちらも規格上妥当かもしれない。
HyperSpecかCLtL2、あるいはANSIを参照するのが一番確実。

あとは、コードとかの具体的な情報を貼っておけば、偉い人が答えてくれるかも。
287デフォルトの名無しさん:2010/09/12(日) 19:33:07
スレ違いかもしれませんが、統計ソフトのRの操作方法やコマンド
などをファイルで落とせるとこ誰か知りませんか?
あれも、LISPの仲間なので…
288デフォルトの名無しさん:2010/09/12(日) 22:30:40
>あれも、LISPの仲間なので…
確かにRはアルゴルシンタックスのLispと言えなくもないから、
まったくスレ違いじゃないな。
289デフォルトの名無しさん:2010/09/13(月) 03:47:36
rjpwikiあたりで聞けばそれなりな答えが帰ってくると思う
290デフォルトの名無しさん:2010/09/13(月) 07:22:43
Rってマクロあるの?
291デフォルトの名無しさん:2010/09/13(月) 11:19:51
数学板のRスレ落ちてなくなったのか
最近規制多いからな
292デフォルトの名無しさん:2010/09/13(月) 11:22:00
kamomeサーバー死亡時の巻き添えじゃね?
293デフォルトの名無しさん:2010/09/13(月) 16:46:29
aptパッケージで入るのがが
/usr/share/common-lisp

asdf-installが入れるのが
/opt/common-lisp

~/share/common-lisp

clbuidが入れるのが
~/clbuild

同じパッケージのバージョン違いが
これらのasdfのpathの中にあるのだけど
どうしたものか
294デフォルトの名無しさん:2010/09/13(月) 21:28:51
clbuild使うならasdfはclbuildで入れられないリボジトリ公開してないの専用にした方がいいし、apt使うならclbuildのdepなんとかっていう依存関係書いてあるファイルからapt経由のを消せばよし
295デフォルトの名無しさん:2010/09/14(火) 23:49:14
debianとか使ってるなら、common-lisp-controllerを使うのもいいかも。
clbuildをベースにしているみたいなので、使い勝手もそんな変わらないし、
処理系毎に、faslを管理してくれるし。
296デフォルトの名無しさん:2010/09/16(木) 09:43:46
drakmaで日本語webサイト読もうとしたら化けまくる
sbclでない処理系使えばいいのだろうか
297デフォルトの名無しさん:2010/09/16(木) 11:13:41
LispWorksが開発環境らしいから試してみれば?
あと古い情報だけどSBCLはISO-2022-JPをサポートしてないらしい。
http://lispuser.net/commonlisp/japanese.html
298デフォルトの名無しさん:2010/09/16(木) 16:06:01
make-vectorやmake-char-tableなどで作られた領域をクリア(削除?)する関数は何になりますでしょうか。
299デフォルトの名無しさん:2010/09/16(木) 22:12:40
>>297
簡単に書けるだろ?
EUC <-> ISO-2022-JP 変換
GR 呼び出しでまかなえなけりゃシングルシフトするだけだし…
300デフォルトの名無しさん:2010/09/17(金) 01:49:23
>>296
化けてるって、具体的にはどうなってんの?
単に内容がベクタで返ってくるとかでなく?

>>298
何のためにガーベッジコレクタがあるんだ。
要らないなら捨てて新しいの使っとけ。
301デフォルトの名無しさん:2010/09/17(金) 02:58:05
(defun hoge (&rest args) (print args))
とかで出てくる &rest みたいな & 付きのキーワードみたいなものは、一体何者なのでしょうか?
記号がググりにくくてしょうがないので聞いてみました。
302デフォルトの名無しさん:2010/09/17(金) 03:06:25
optional parametersとかでググってみたらいいよ
303デフォルトの名無しさん:2010/09/17(金) 06:31:46
タグが閉じてなかったり、いろいろ不備のあるhtmlをsxmlに変換できるパッケージってないのかな
304デフォルトの名無しさん:2010/09/17(金) 18:29:04
>>303
Scheme なら htmlprag が定番だが、あれってどういう仕組なんだろうな。
CL へ移植するついでに解説してくれ。
305デフォルトの名無しさん:2010/09/17(金) 23:35:24
>>303
ttp://www.cliki.net/web

にいくつか候補がある。使ったことはないから詳細は不明。
ただ、CLの世界ではSXMLってメジャーじゃないから、
SXMLに変換するライブラリは多分ないと思う。
306デフォルトの名無しさん:2010/09/21(火) 15:41:33
CLの勉強がてら、windowsのxyzzyをANSI CLにできるだけ準拠するよう拡張したいと思っています。
気になったのはwindowsのxyzzyではCLOSが実装されていないことですが、
xyzzyに実装されているCLの関数やマクロで、
CLOSをなんとかしてエミュレートできないものでしょうか。
どこかの本で、CLOSの正体はCLの基本的な?機能により実装されたものである、みたいなことを見かけた気がしますので。
307デフォルトの名無しさん:2010/09/21(火) 15:46:22
なんちゃってCLOS
ttp://xyzzy.s53.xrea.com/wiki/index.php?tips%2F%A4%CA%A4%F3%A4%C1%A4%E3%A4%C3%A4%C6CLOS

こんなのがあるけどどの程度準拠してるのかな
308306:2010/09/21(火) 15:49:53
訂正です。
ANSI Common LispじゃなくてCLtL2でした。
309デフォルトの名無しさん:2010/09/21(火) 16:04:49
>>306
PortableCommonLoops
http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/clos/pcl/
http://www.kyoritsu-pub.co.jp/shinkan/shin1008_09.html
Tiny CLOS(for Scheme)
が参考になるんじゃないでしょうか。
310デフォルトの名無しさん:2010/09/21(火) 23:25:31
LISPとかいう声優ユニットが・・・
ttp://blog.nicovideo.jp/niconews/2010/09/009179.html
名前考えた奴はLisperか
311デフォルトの名無しさん:2010/09/21(火) 23:27:36
CLOSETTE: Implements subset of CLOS with a metaobject protocol.
ttp://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/clos/closette/0.html

以前xyzzyで動かそうとしてた人を見たような気がしたけどどうなったのかね。
312デフォルトの名無しさん:2010/09/21(火) 23:28:49
その場所は二ヶ月前に通過している!!

ttp://hibari.2ch.net/test/read.cgi/tech/1270897776/786
313デフォルトの名無しさん:2010/09/22(水) 09:48:48
オススメの入門書ありませんか?
一冊買って一通りやったのですがプログラム例少なくていまいち直感が掴めません
サンプルプログラムが多い本かHPあったら教えてください
314デフォルトの名無しさん:2010/09/22(水) 12:22:10
その一冊とは何か
315デフォルトの名無しさん:2010/09/22(水) 12:33:46
316デフォルトの名無しさん:2010/09/22(水) 17:33:54
Let Over Lambdaのscheme版ってないのでしょうか
317デフォルトの名無しさん:2010/09/22(水) 20:51:06
>>316
ここはCommon Lispのスレだから、
Schemeの話はLisp Schemeスレでお願いしたいところ。

あと、その質問の仕方じゃ、LOL読んだ人以外、
どれだけ良書知ってても紹介できない。
マクロの応用例が豊富に紹介されてる本ってことでいいの?

というか、伝統的マクロも健全なマクロも本質は同じで、
アプローチが違うだけなので、Schemeでも大抵似たようなことはできる。
318デフォルトの名無しさん:2010/09/22(水) 21:51:30
初めて手を出すプログラム言語がlispってハードル高すぎですか?
emacsとSBCLはなんとかインストールしたんですが
319デフォルトの名無しさん:2010/09/22(水) 22:17:13
気合いの問題。
320デフォルトの名無しさん:2010/09/22(水) 22:51:55
ハードルというのはやりたいことに応じて高くなるもんで
321デフォルトの名無しさん:2010/09/22(水) 23:01:38
>>318
プログラミングというものを覚える手段としてなら、
そんなハードルは高くない。むしろ楽な方。
じゃなきゃ、教育でLispなんて使わない。

ただ、とにかく何か作ってみたい、とか思っていて、
それがWindowsのゲームとかだったりすると、
割と茨の道確定。優劣ではなく、適正の問題で。
322デフォルトの名無しさん:2010/09/22(水) 23:40:07
clispやGaucheでCGI楽しいです
323デフォルトの名無しさん:2010/09/23(木) 07:10:39
>>318
ぜんぜん高くない。Have fun!
324デフォルトの名無しさん:2010/09/23(木) 09:49:46
少なくと日本語じゃ、プログラミング初心者向けのlisp書籍やサイトなんてないぞ
325デフォルトの名無しさん:2010/09/23(木) 10:17:00
あるよ。 CommonLisp か Scheme か Emacs Lisp なら。
326デフォルトの名無しさん:2010/09/23(木) 12:54:37
>>324
むしろ中間が無い
どちらかというと入門の方が多いかもしれん。

上の方だといつも決まった名前しかでてこないし。
327デフォルトの名無しさん:2010/09/23(木) 16:54:39
言語の入門書ならともかく、プログラミングの入門書として読めるLisp本なんて
Emacs Lispのものくらいじゃないか?
328デフォルトの名無しさん:2010/09/23(木) 17:44:50
みんなが言っている「プログラミングの入門書」という意味が掴めないけど、
VBS程度しか知らない初心者の俺が今読んでいるのが「初めての人のためのLISP」。

併行して「入門CommonLisp」と>>315のサイトで勉強してるんだが、初LISPは
凄く丁寧な説明で納得しながら進む事ができてる。

妙なテンションには引いたけど。実際に動かす為の例題として他2つを使っている感じ。

実は昔、グレアムのANSI CommonLispを読んで挫折してる。
329デフォルトの名無しさん:2010/09/23(木) 18:53:34
絵的には
「俺が養分になっているうちに皆逃げるんだ!!」
「そう・・・それでいい・・・・ごふっ」
330デフォルトの名無しさん:2010/09/23(木) 19:32:51
Cでポインタにつまづく人が多いって話を考えると
consすらプログラミング初心者にはきついんじゃないかね

理解できないというより必要性を感じられない話題が多く、日常的な場面で役に立つような知識もなかなか出てこない
入門書は軽く十年以上前の本ばっかで環境の差異を自力で吸収しなきゃならなかったりと
とにかく必要以上に苦しむ気がする

学校でアルゴリズムやら何やらキッチリ叩き込んでもらいながら、勉強として覚えていくなら
Lispは入門用に適してるかもしれんけど
独学者が最初の一歩として選ぶ理由は無いと思う
331デフォルトの名無しさん:2010/09/23(木) 21:15:29
> 必要性を感じられない話題

> 日常的な場面で役に立つような知識

これが具体的にどういうものであるかによるな
332デフォルトの名無しさん:2010/09/23(木) 21:23:08
必要性を感じられないとかほとんどのことじゃねーか
333デフォルトの名無しさん:2010/09/23(木) 21:25:09
Cでポインタにつまずきconsでつまずくなら、Cをやったって苦労は同じじゃないかなあ。
初心者はCよりlispを選ぶべきだとか言いたいわけじゃないが。

どういう言語であれ、最初は短い断片的なプログラムをちょっとずつ動かして
自分なりにいじって遊んで覚えていくと思うんだが、そういう時間的な余裕のない人ということか?
334デフォルトの名無しさん:2010/09/23(木) 22:03:59
>>330の言っていることはナンセンス。
335デフォルトの名無しさん:2010/09/23(木) 22:33:37
独学の場合、時間よりもモチベーションの問題が一番大きかろ
学者は初心者に対してやたらと、抽象化された純粋な知識ばかり教えたがる傾向があるけれど
それを独学で受け止められる奴はそうそういないぞ

簡単で強力なライブラリを豊富に持つ言語で、簡単なゲームや自分用のスクリプトを書けるようになってから
それでもなお学ぶ意欲があるならLispって道が一番楽だと思う
336デフォルトの名無しさん:2010/09/23(木) 23:42:35
昔はBASICで数当てゲームやライフゲームなんか作って覚えていったもんだ
337デフォルトの名無しさん:2010/09/24(金) 00:35:09
>>336
あの頃に今のCommon Lispがあったら狂喜乱舞したと思う
たとえば
なんとなく名前が想像付きそうな機能を探す
BASICだとわずかな書籍(当時)
CommonLisp ならaproposで一覧 -> describe

目の前の機械からヒントもらえるとか当時はなかったもの。
まぁ今時ならどの言語でもggrksで済むけどな
338デフォルトの名無しさん:2010/09/24(金) 01:21:16
>>335
>学者は初心者に対してやたらと、抽象化された純粋な知識ばかり教えたがる傾向があるけれど

これって誰がわるいん?
339デフォルトの名無しさん:2010/09/24(金) 02:53:47
>>335
最初にLispの是非はさておき、純粋な知識だけ教えても退屈、というところには同意。
リストやツリーなどのデータ構造。ソートやサーチのアルゴリズム。
こういったものをそれだけでwktkして聞ける奴ってのは少ないと思う。一種のマニア。
普通は、実際にそれがどう実用的に応用できるか、ってのを聞いて初めてwktkする。

Practical Common Lispなんかは、その点ある程度考えてると思う。
On Lispとかも地味だけど面白い。
340デフォルトの名無しさん:2010/09/24(金) 08:13:47
341デフォルトの名無しさん:2010/09/24(金) 08:58:52
そんなもん下手に流行られたら、いらん情報が検索に混じるようになって困る
342デフォルトの名無しさん:2010/09/24(金) 12:26:36
>>339
Practical Common Lisp、On Lisp
こっちのほうが言語マニアっぽいが…
343デフォルトの名無しさん:2010/09/24(金) 12:44:05
>>341
とかいってThe Little Lisperの朗読CDとか出たら買っちゃうんだろ?
344デフォルトの名無しさん:2010/09/24(金) 12:48:46
>>343
曲のタイトルが
普通のやつらの上を行け
とか
百年の言語

ファンクラブの名前はY Combinator
345デフォルトの名無しさん:2010/09/24(金) 12:55:27
左から、car、cdr、cons

後ろにいる黒いのが lambda
346デフォルトの名無しさん:2010/09/24(金) 21:35:36
> 必要性を感じられない話題
> 日常的な場面で役に立つような知識

馬鹿に優しくしても馬鹿は馬鹿のまんまだ
347デフォルトの名無しさん:2010/09/24(金) 22:50:44
まぁ、馬鹿は馬鹿向けのもん使っとけっていうのがいつも繰替えされる結論
348デフォルトの名無しさん:2010/09/24(金) 23:10:35
勉強順序やモチベーションの議論がなんで頭の良し悪しの議論になっちゃうんだろうか
349デフォルトの名無しさん:2010/09/25(土) 00:46:07
こんぷー
350デフォルトの名無しさん:2010/09/25(土) 05:37:27
>>348
認知(神経)科学じゃね?
351デフォルトの名無しさん:2010/09/27(月) 14:08:52
>>307 >>309 >>311
お礼が遅れてすみません。ありがとうございます。読んでみます。
352デフォルトの名無しさん:2010/09/30(木) 09:12:41
SBCLでsetfやdefunで出てくる印字を消すことはできますか?
353デフォルトの名無しさん:2010/10/08(金) 22:48:41
再帰を使ってリストから全てのペアの組み合わせを探します
(a b c d) => (a b)(a c)(a d)......(c d)
さっぱりわかりません。どなたか模範解答をください

一応努力の結果を

(defun my-pair (l &optional z)
. . (if (equalp l z)
. . . . .nil
. . . . .(progn (if (atom z)
. . . . . . . . . . . . (setq z l)
. . . . . . . . . . . . .nil)
. . . . . . . . . . (setq z (append (cdr z)(cons (car z) nil)))
. . . . . . . . . . (print (mapcar #'cons l z))
. . . . . . . . . . (my-pair l z))))

354デフォルトの名無しさん:2010/10/08(金) 23:08:33
(defun my-pair (lst)
 (if (null lst)
   nil
   (nconc
    (mapcar #'(lambda (x) (list (car lst) x))
         (cdr lst))
    (my-pair (cdr lst)))))
355デフォルトの名無しさん:2010/10/08(金) 23:26:27
模範じゃない例
(defun my-pair (l)
(mapcon #'(lambda (x) (mapcar #'(lambda (y) (list (car x) y)) (cdr x))) l))
356デフォルトの名無しさん:2010/10/09(土) 01:53:56
>>353
(defun comb (set)
(labels ((rec-1 (x list result)
(if list
(rec-1 x (cdr list) (cons (list x (car list)) result))
(nreverse result)))
(rec (list result)
(let ((rest (cdr list)))
(if rest
(rec rest (nconc result (rec-1 (car list) rest nil)))
result))))
(rec set nil)))

再帰と言われたので、再帰だけで書いた。末尾再帰なので最適化可能。
357デフォルトの名無しさん:2010/10/09(土) 04:11:44
>>353
あと気になったこと色々。

その条件のときだけ何かしたい、って場合は、ifよりもwhenを使う方が意図が分かり易い。
場合で返る値を変えたい場合はif。場合で処理を変えたい場合はcond(condはprogn要らない)。

printしたいだけならconsすると勿体無い。#'(lambda (x y) (format t "(~a ~a)" x y))とかで良い。
新しくコンスセルが作られちゃうので、メモリが無駄になるし遅くなる。

(cons ... nil)ってのはリストを作りたいと思うんだけど、(list ...)で良い。さらに言えば、順番関係無い、
あるいは最後にリストを反転して良いなら、appendは(cons ... list)で良い。pushってのもある。

シンボルの比較ならeqで良い。equalpは色々な物を比較できるけど遅い。

そこでそういう風にsetqするとグローバルな変数が誕生する。letの使用を検討すべき。

実際のプログラムでは、探した組み合わせをどうこうしたい場合がほとんどなので、
どうせなら組み合わせをリストとかで返したい。

以上、分かるところだけ直すと良いと思う。多少は先生の覚えがめでたくなるはず。
358デフォルトの名無しさん:2010/10/09(土) 04:18:27
あー、消そうとしてて忘れた。シンボルの比較云々は単に勘違い。気にしないで。
359353:2010/10/09(土) 11:49:58
理解に時間がかかりましたが>>354.355.356全てできました
>>357 大変参考になります。皆さんありがとうございました

最近はじめたんだけどSchemeにくらべてずいぶん過疎ですね
360デフォルトの名無しさん:2010/10/09(土) 11:53:34
>>354-357が泣いた
361デフォルトの名無しさん:2010/10/09(土) 12:00:35
いやいや、最近ちょくちょくのぞいてたけどずっと動かなかったから
初心者はいないのかなって
362デフォルトの名無しさん:2010/10/09(土) 13:26:05
いやまて
過疎ってないSchemeがどれなのかどこなのか聞いてみようじゃないか
363デフォルトの名無しさん:2010/10/09(土) 14:27:02
書き込みたいタイミングで規制されていることが良くある。

>>359
Schemeも割とそうだけど、Common Lispをガンガン使ってる人って、
あんまり2chには常駐してない。ブログ界隈とかツイッター方面にはちらほらいる。

あとは、ネタ振ってくれれば、反応してくれる人も結構いると思う。
364デフォルトの名無しさん:2010/10/09(土) 14:52:41
>>363
CommonLispって国内だと園城さんのサイトだけで十分おなかがいっぱいで幸せになれちゃうからね
365デフォルトの名無しさん:2010/10/09(土) 21:54:20
>>357
> その条件のときだけ何かしたい、って場合は、ifよりもwhenを使う方が意図が分かり易い。

はあ?
366デフォルトの名無しさん:2010/10/09(土) 22:03:44
英語の語感のもんだいぢゃないの? if when unless
367デフォルトの名無しさん:2010/10/09(土) 22:06:22
>>365

> はあ?

当たり前の事だけど、君には理解できないの?
368デフォルトの名無しさん:2010/10/09(土) 22:17:11
>>365
これは恥ずかしい。もしシラフで書き込んだんなら首を吊るレベル。
369デフォルトの名無しさん:2010/10/09(土) 22:27:17
>>364 kwsk
著作は出てくるけどサイトがみつからない
370デフォルトの名無しさん:2010/10/09(土) 22:36:25
>>365
NorvigとPitmanが書いた、Tutorial on Good Lisp Programming Styleでも読んできて下さい。本気で。
いや、お前の日本語が致命的に分かりづらいんだよ、って批判なら謝るけどさ。

ttp://www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt

>>369
>>364じゃないけど、

ttp://lispuser.net/

のことだと思う。おんじょうさん、って読むんだね。勉強になった。
371デフォルトの名無しさん:2010/10/09(土) 22:37:10
>>365
もうこれからは全部condだけでいいよな!
>>369
ttp://lispuser.net/じゃなかった
372デフォルトの名無しさん:2010/10/09(土) 22:54:59
>>370-371
あー、みたことあるわ。さんこす!
373デフォルトの名無しさん:2010/10/09(土) 23:00:42
ttp://lispuser.net/のサイトは CLISP の情報がやけにのっているなと思ったら
CLISP の製作者にパッチを送っているような方だったのね
納得しました
374デフォルトの名無しさん:2010/10/09(土) 23:04:48
>>366
もうちょっと詳しく補足すると、英単語としての語感の問題もあるけど、
whenはelse-formが無いから、条件付きの処理という意図を読み易い。

ifはelse-formがあるかどうかで、単なる条件付きの処理なのか、
分岐する処理なのか判断するから、僅かに文意が曖昧になる。

もちろんスタイルの問題であって、汎用的にifやcondを使う人もいるし、
R5RS Schemeなんかにはwhenやunlessは無い。
375デフォルトの名無しさん:2010/10/10(日) 13:16:11
http://xach.livejournal.com/271794.html
普段使ってる言語はってあたりがものすげーウラヤマ
ASDFより手でライブラリを管理ってあたりで涙
何にCLつかってるので、やっぱり趣味なのかと納得

ショボーン
376デフォルトの名無しさん:2010/10/10(日) 13:40:25
ASDFはいいんだけど、ASDF-Installとか使ってると、
たまに、作りのad hocさに足を引っ張られて、イラッとくることがある。

そういう意味でもQuicklispには期待する。
377デフォルトの名無しさん:2010/10/10(日) 13:59:35
SBCL User Survey 2010
ttp://random-state.net/sbcl-survey-2010.html

SBCLユーザの人、協力してあげてくれ。
378デフォルトの名無しさん:2010/10/12(火) 11:39:41
FreeBSD 8.1-ReleaseでSBCL 1.0.34を使っています。
テストフレームワークでおすすめのものを教えてくれませんか?
出来ればASDFでインストール出来るものがいいです。
379デフォルトの名無しさん:2010/10/13(水) 08:53:02
ファイルのたとえば10MB目から読み込むような処理ってできますか?
380デフォルトの名無しさん:2010/10/13(水) 09:33:32
>>378
使ってないから分からないけど、一応、こういうのはある。

ttp://www.cliki.net/test%20framework

>>379
できない訳がない。

ttp://www.lispworks.com/documentation/HyperSpec/Body/f_file_p.htm
381デフォルトの名無しさん:2010/10/13(水) 09:58:26
ちなみに、Practical Common Lispで簡単なテストフレームワーク作る章がある。
邦訳もあるし、英文なら無償で公開されてるから、読んでみるのもいいかも。

ttp://www.gigamonkeys.com/book/practical-building-a-unit-test-framework.html
382デフォルトの名無しさん:2010/10/13(水) 10:09:27
さらについでに、テストフレームワークの比較。英語。

ttp://aperiodic.net/phil/archives/Geekery/notes-on-lisp-testing-frameworks.html
383デフォルトの名無しさん:2010/10/13(水) 10:49:43
>>379
こんな感じ。もちろんread-byteでもいいし、テキストデータならread-charでもいいし、
文字列に読み込みたいならmake-stringでもいいし、以下略。

(with-open-file (in ".emacs")
(file-position in 255)
(let ((buf (make-array 16 :initial-element nil)))
(read-sequence buf in)
buf))
; => #(#\h #\e #\n #\- #\w #\i #\n #\d #\o #\w #\s #\ #\( #\& #\r #\e)
384379:2010/10/13(水) 12:49:41
>>380>>383
おー、ありがとうございます。助かりました。
385デフォルトの名無しさん:2010/10/15(金) 15:10:48
drakmaで日本語ホームページ読みこむとhtmlじゃなくてベクトル列が出てくるんですが、
自動で日本語コード判別してhtmlへの変換なんてできますか?
386デフォルトの名無しさん:2010/10/15(金) 22:10:50
GUESSで文字コード推定とか
http://www.cliki.net/guess
387デフォルトの名無しさん:2010/10/15(金) 23:09:01
自分で作っちゃえ
388デフォルトの名無しさん:2010/10/16(土) 00:15:15
>>385
Drakmaは確か、ベースにしているflexi streamsが、
Shift_JISやEUC-JP、ISO-2022-JPに対応してない。
UTF-8、UTF-16、UTF-32なら対応してるんだけど。
で、対応してないexternal formatだとベクタで返ってくる。

自動でエンコーディング判別するのは、>>386のが使える。
Gauche由来。GaucheのはMozillaを参考にしたとか昔聞いた覚えが。
うろ覚え。

ttp://lispuser.net/commonlisp/japanese.html

で、あとは、SBCLならsb-ext:octets-to-stringとか、
CCLならccl:decode-string-from-octetsとか使って変換できる。
389デフォルトの名無しさん:2010/10/16(土) 11:11:10
CLikiのnewlispのページが削除されていて(´・ω・`)ショボーン
いや、CLとあまり関係ない処理系なんだけどね
390デフォルトの名無しさん:2010/10/16(土) 16:55:03
それはまぁ仕方ないだろ
面白い処理系なんだけどね
391デフォルトの名無しさん:2010/10/18(月) 08:42:45
イエス、アスミス!
392デフォルトの名無しさん:2010/10/18(月) 12:09:10
声優オタキモイしね
393デフォルトの名無しさん:2010/10/18(月) 12:21:40
クダーかわいいよクダー
394デフォルトの名無しさん:2010/10/18(月) 16:36:05
不動小数点型について質問なんですが
sbclで
(* (- 1.0 0.6) 1.0)
とやると
0.39999998
となります
精度を上げることはできないのでしょうか?

CLには四種類の不動小数点型があるそうなんですが
デフォルトでどの型を使用するか指定することってでき
ないんでしょうか?
395デフォルトの名無しさん:2010/10/18(月) 16:50:53
>>394
四則演算のプロシージャを再定義したら?
396デフォルトの名無しさん:2010/10/18(月) 17:24:36
>>395
それってlockされてできないようになってませんでしたっけ?
397デフォルトの名無しさん:2010/10/18(月) 17:27:54
>>394
(* (- (coerce 1 'double-float) 0.6) 1.0)
398デフォルトの名無しさん:2010/10/18(月) 18:25:40
気になったから自分もやってみた。@clisp
(format nil "~,20F" (* (- 1.0 0.6) 1.0)) で出るんじゃねーの、とか思ったら、違った... orz
clisp だと、 >>397 のやりかたでも 0.39999998 ってなる。どうしたらいいんだろう。w
399デフォルトの名無しさん:2010/10/18(月) 19:28:37
>>394
(setf *read-default-float-format* 'double-float)
400デフォルトの名無しさん:2010/10/18(月) 20:15:49
* (let ((*read-default-float-format* 'double-float))
(eval (read-from-string "(* (- 1.0 0.6) 1.0)")))
0.4d0
401デフォルトの名無しさん:2010/10/18(月) 21:50:04
>>394
> (* (- 1.0 0.6) 1.0)
0.39999998
> (* (- 1.0d0 0.6d0) 1.0d0)
0.4D0

CCLだけど、SBCLでも同じじゃない? ANSIでどうなってるかは調べてない。
速度を重要視しない場合、有理数で計算するのもありだとは思う。
402デフォルトの名無しさん:2010/10/18(月) 21:57:14
>>398
CLISP 2.48でも、全部の精度合わせれば0.4d0になるよ。

> (* (- 1.0d0 0.6d0) 1.0d0)

0.4d0
403デフォルトの名無しさん:2010/10/18(月) 22:33:44
404デフォルトの名無しさん:2010/10/20(水) 21:09:12
>>343
すごい欲しいんだけど
405デフォルトの名無しさん:2010/10/20(水) 22:05:34
>>404
自分で朗読すればいいんじゃね?
406デフォルトの名無しさん:2010/10/20(水) 22:29:30
407デフォルトの名無しさん:2010/10/21(木) 13:11:44
macports のsbclが壊れたままだいぶ時間がたったが
治りそうな気配がない

sbclだけ古いバージョンの入れることってできたかな
408デフォルトの名無しさん:2010/10/21(木) 13:24:41
バグトラッカーとかないの?
409デフォルトの名無しさん:2010/10/21(木) 13:31:19
同じバグレポートが2009年ぐらいからされてる
410デフォルトの名無しさん:2010/10/21(木) 14:27:14
sbclはLinux以外放置プレイだろ。
他の処理系選べよ。
411デフォルトの名無しさん:2010/10/21(木) 14:44:39
Linux以外でまともに動くコンパイラがこの世に存在しない
412デフォルトの名無しさん:2010/10/21(木) 16:24:39
MacPortsから、パッチが出る見込みもほとんどないのだから、
http://sourceforge.net/projects/sbcl/files/
から1.0.29のtar形式バイナリ取得すれば十分では?
413デフォルトの名無しさん:2010/10/21(木) 23:25:26
ManKaiCommonLisp
http://common-lisp.net/project/mkcl/

名前がイカす
414デフォルトの名無しさん:2010/10/21(木) 23:49:43
なんとなく満開製作所を思い出したw
415デフォルトの名無しさん:2010/10/21(木) 23:50:34
mankaiほーくす
416デフォルトの名無しさん:2010/10/21(木) 23:55:25
Modern Kyoto CL からManKai CLなのだろうか
417デフォルトの名無しさん:2010/10/22(金) 00:16:33
それ確か、速攻で名前の由来聞かれてたな。
みんな考えることは一緒っぽい。
418デフォルトの名無しさん:2010/10/22(金) 00:25:20
>>407
Macの流儀は知らないけど、適当に/optみたいな場所に手動で突っ込んどけば?
そもそもLisp人口が少ないんだから、自分がメンテナになるくらいの勢いじゃないと、
パッケージシステムには期待できない。
419デフォルトの名無しさん:2010/10/22(金) 00:57:56
>>418
MacPorts がデフォルトでは /opt/local 以下にインストールされるから
出来れば名前を変えた方がいいかもしれないが、言っている事には同意。
420デフォルトの名無しさん:2010/10/22(金) 03:13:48
>>407
自分の手許の環境だと、sb-posix のテストでコケるようでしたので、sbcl の Portfile

/opt/local/var/macports/sources/rsync.macports.org/release/ports/lang/sbcl/Portfile

を手で編集して、

patchfiles patch-use-mach-exception-handler.diff

となっている行を

patchfiles patch-use-mach-exception-handler.diff \
patch-posix-tests.diff

としてパッチを適用するようにしてあげると、ビルドは通りました。

ちなみに、何もせず普通にビルドが通った最後のバージョンは 1.0.39 だったのですが、
そのバージョンの Portfile だと、patch-posix-tests.diff を適用するようになっていますね。
http://trac.macports.org/browser/trunk/dports/lang/sbcl/Portfile?rev=71533

それが、1.0.42 になる際に削除されてます。
http://trac.macports.org/changeset/72017

あえて削除するからには、何か重大な理由があったのかもしれませんが、よく分かりません。

もし古いバージョン、たとえば 1.0.39 をインストールする場合は、こちらの記事
ttp://blog.sakatam.net/2009/06/how-to-install-outdated-port-packages/
を参考に、リビジョンを 71533、ruby を sbcl に読み替えれば大丈夫だと思います。
421デフォルトの名無しさん:2010/10/27(水) 12:55:08
common lispを一から勉強しようと思い、
基本的な処理をスタックベースで実装したいです
竹内先生の本と3imp.pdf(ただしこれはscheme処理系)を読んで大体の雰囲気はつかめたのですが
実際にどこから手を付けてよいのかわかりません。
参考ページはありますか?
422デフォルトの名無しさん:2010/10/27(水) 12:59:45
Common Lisp のインタプリタを作りたいの?
423デフォルトの名無しさん:2010/10/27(水) 15:08:05
>>422
ええ、ごく簡単なリスト処理とreplその他をカバーするものを
作ってみたいです
424デフォルトの名無しさん:2010/10/27(水) 16:24:53
ほい小型Lisp

「JAVA press」JAVA LISP Vol.1 Quilt
http://www.cobalt.co.jp/writing/index.html

Lisp 言語処理系: CAMPUS LIsP Lemon version, (Version 1.2)
http://www-masu.ist.osaka-u.ac.jp/~kakugawa/hacks/clisp/
425デフォルトの名無しさん:2010/10/27(水) 16:40:01
> CAMPUS LIsP Lemon
キャンパスリップほそみとかそういうノリか。
426デフォルトの名無しさん:2010/10/31(日) 09:25:44
SICPとOn Lispって、どっちを先に読んだ方がいいと思う?
いまはCLを勉強中。まだ基本的なことしかわかってないけど。
schemeはまったくわからん。
ひととおりCLについてわかったら、どっちかに手を出そうと思う。
ちなみに、Lispを使ってきちんとしたプログラムを作る気は
(今のところ)ない。
こんなことができるのか!って驚きを得たいってのが動機。
427デフォルトの名無しさん:2010/10/31(日) 09:31:30
マクロの全てをやりたいか
マクロ以外の全てをやりたいか

どっち?

あとSICPはSchemeなので(事前知識はいらないけど)。
428デフォルトの名無しさん:2010/10/31(日) 09:42:31
>>427
レスありがとう。
マクロがやりたいかどうかより、両方やるんだけど説明が丁寧な方を
先に読みたい。敷居が高いと挫折しそうだから。
429428:2010/10/31(日) 10:07:07
>>428の補足
ただ、どちらも敷居が高いことはわかってるんだ。
それでも段階を少しずつ上げていくことができたら、
挫折しなくて済むかなと思って。


文章がわかりにくかったので訂正を

>マクロがやりたいかどうかより、両方やるんだけど説明が丁寧な方を
>先に読みたい。

マクロもそれ以外もいずれやるつもりだから
内容で順番を決めるつもりはなくて、
それよりも説明が丁寧な方を先にやりたいと思ってる。
430デフォルトの名無しさん:2010/10/31(日) 20:27:32
On Lisp は Lisp 初心者が読む本じゃないよ。
それなりのLisperがより高度なマクロを学んでより高度なコーディングができるようになるための本。
マクロに関する話は (よほど基本的なところを除けば) 順を追って丁寧に記述されてるけど
標準ライブラリのことは当然知っているものとして書かれているから、
基本的なことしかわかってない、という程度の人が読んでも挫折するのがオチ。

SICPは、そもそもプログラミング言語とは何か?的な講義のテキストだから
段階を追って勉強したい人にはそっちから読んだ方が良いと思う。
431デフォルトの名無しさん:2010/10/31(日) 21:02:59
SICP も On Lisp も根本的には「抽象化」の話だと思う。

SICP は問題の表現の仕方というか、概念的なモデルの組み立て方を教えている。
言語として Scheme を使っているのはあくまでも解説のための記法のような位置付け。
Scheme 自体については大して説明していない。

On Lisp はそのタイトルが示す通り、 Lisp を前面に出してる。
ちょっとだけ Scheme も取り上げているけどほぼ Common Lisp が主役。
概念モデルのバリエーションは SICP で説明されているものよりは少ない。
但し、「Lisp で」表現するための具体的なテクニックを教えている。

>>426
> こんなことができるのか!って驚きを得たいってのが動機。

と、言うことであればどちらかというと SICP かなと思う。
SICP の思いきったパラダイムの転換は驚きが大きい。
On Lisp では現実的な部分からそういった抽象へと繋げようとしている感じがする。
432デフォルトの名無しさん:2010/10/31(日) 21:39:36
ちゃうよ. SICP は computer science の教科書.
たいしたパラダイム転換は存在してないよ.

# ただし, ある意味, 書いてある内容は computer science の王道だ

ぶっちゃけ, 言語は scheme でなくても OK
たまたま, scheme が採用されていただけ(つか, 書いた人が...)
433428:2010/10/31(日) 22:06:39
>>430 - >>432さんアドバイスありがとうございます。
とても参考になります。
話を参考にして考えると、SICPの方が良いみたいですね。
SICPを読みながら、気分転換にCLの知識を増やして
On Lispに臨むことにします。
どうもありがとうございました。m(_ _)m
434デフォルトの名無しさん:2010/11/01(月) 07:58:32
そしてたぶん最近のSchemeでは
*** ERROR: unbound variable: nil
となるのにはまる。
435デフォルトの名無しさん:2010/11/01(月) 10:04:02
nil に #f が束縛されてる手元環境の SCM 5e1 は良い子だぞぉ
多分な
436デフォルトの名無しさん:2010/11/01(月) 21:37:14
>>433
CLというかLispについては基礎レベルをこなしているって事?
437433:2010/11/02(火) 20:38:07
>>436
人によっては、基礎できてないやんって思われる程度ですけど。
mapcar関数の使い方とかマクロの作り方(本当に基礎的なレベル)とか
くらいならわかります。
438デフォルトの名無しさん:2010/11/02(火) 21:23:04
じゃあ入門書の方がいいかもね。
SICP、On Lispよりも先に。SICPは挫折する人も多いらしいから。
439433:2010/11/02(火) 22:36:08
>>438
そうなんですか。
やっぱ、自分でマクロを不自由なく書けないと、
On Lispは難しいのかもしれないですね。
もう少しCLを勉強したらSICPに臨むつもりでしたが、
CLの勉強を続けてマクロが脳内ですぐに展開、あるいは作成
できるくらいまでやってみることにします。
440デフォルトの名無しさん:2010/11/03(水) 12:42:26
どれが先でなきゃいけないということもないし
のぞいてみるぐらいいいんじゃないの

http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/
441デフォルトの名無しさん:2010/11/03(水) 13:37:30
>>439
on lisp と sicp は対象領域が全く別物
on lisp: common lisp の macro を極めよう!!!
sicp: 計算機科学の教科書
で, on lisp は, しつこく読んで例題やってりゃそのうち何とかなるが
sicp はプログラミングの知識だけじゃそのうちついていけなくなる.
442433:2010/11/03(水) 16:02:11
>>440 >>441
書き込みありがとうございます。
正直なところ、みなさんに、ここまで親切にしてもらえるとは
思っていませんでした。

>>440
のぞいてみました。
変数捕捉ってgensymで解消するんじゃないの?って思ってたら、
一部にそれっぽいことが書いてあったので、やっぱりそうかと思えました。
あと、意外にサンプルコードが短いですね(もちろん、理解は難しいの
でしょうけど)。
少し臆病になりすぎていた部分に気づけたのは良かったです。

>>441
SICPはプログラミングだけの知識だけじゃそのうちついていけなくなる
というのは、具体的にはどんな知識が要求されるのでしょうか?
それとも高い理解力が要求されるのでしょうか?
443デフォルトの名無しさん:2010/11/03(水) 17:06:08
>>442
微分方程式の知識が必要になったりとか...
大学 1 年 で要求される他の知識も必要となる.
444デフォルトの名無しさん:2010/11/03(水) 18:19:04
他のスロットも同時に更新されるstructureのアクセサを作りたいのですが,

(defstruct hoge
x
y)

(defun (setf hoge-x) (new-x h)
(setf (hoge-x h) new-x)
(setf (hoge-y h) (x-to-y new-x)))

としても,hoge-yが更新されません.
どのようにすれば,他のスロットも更新されますか?
教えて下さい.
445433:2010/11/03(水) 18:51:45
>>443
微分方程式ですか・・・対象をモデリングするときに使うのですか?
他の本を読んで思い出せば、大丈夫だとは思いますが・・・orz
数学は記憶の彼方です。
ただ一度理解したものなので、マクロの使い方よりは自信があります。
(本当に思い出せるのかは、正直不安ですが)
446デフォルトの名無しさん:2010/11/03(水) 18:55:24
On LispもSICPも無料で公開されてるんだから
ごちゃごちゃ言ってる暇があったら読んでみればいいだけだろ
447433:2010/11/03(水) 19:02:36
>>446
そうですね。
CLの勉強をしたら、さっそくSICPを読んでみようと思います。
不愉快な思いをさせたみたいで、すいません。
448デフォルトの名無しさん:2010/11/03(水) 20:07:48
臆するなかれ侮るなかれだ
449デフォルトの名無しさん:2010/11/04(木) 01:48:20
>>444
defsetf や define-setf-method で定義した setf の方が (setf HOGE) より優先されるんだったような
defstruct がどっちで setf するようになってるかは処理系依存のはず
450デフォルトの名無しさん:2010/11/04(木) 11:09:01
>>444
classの方でやればできるな。
(defun x-to-y (a)
 "Dummy implementation"
 (1+ a))
(defclass hoge ()
 ((x :accessor my-hoge-x :initarg :x :initform 0)
  (y :accessor hoge-y :initarg :y :initform 0)))
(defun hoge-x-setter (h new-x)
 "Exposed writer for the slot X of HOGE"
 (setf (my-hoge-x h) new-x)
 (setf (hoge-y h) (x-to-y new-x)))
(defsetf hoge-x hoge-x-setter)
(defun hoge-x (h)
 "Exposed reader for the slot X of HOGE"
 (my-hoge-x h))
451デフォルトの名無しさん:2010/11/04(木) 11:13:37
>>450 に補足。
:accessor my-hoge-x の代わりに:wirterと:readerを別に設定するとシンプルにできるね。
452デフォルトの名無しさん:2010/11/04(木) 12:28:29
>>449
この辺りの過程を規定した自作の structure を作らない限り,避けた方が良さそうですね.
ありがとうございます.

>>450,451
ありがとうございます.綺麗に使うことができる様になりました.
教えて頂いた:accessor版を:writerと:readerを使用する様に変更した版です.

(defun x-to-y (a)
 "Dummy implementation"
 (1+ a))
(defclass hoge ()
 ((x :writer (setf hoge-x) :reader hoge-x :initarg :x :initform 0)
  (y :accessor hoge-y :initarg :y :initform 0)))
(defun hoge-x-setter (h new-x)
 "Exposed writer for the slot X of HOGE"
 (setf (hoge-x h) new-x)
 (setf (hoge-y h) (x-to-y new-x)))
(defsetf hoge-x hoge-x-setter)

453デフォルトの名無しさん:2010/11/04(木) 12:53:40
>>452
訂正です.>>452はSBCLでは動きますが,CMUCLでは動きません.
# 何故SBCLでは動いてしまうんだろう・・・

(defun x-to-y (a)
 "Dummy implementation"
 (1+ a))
(defclass hoge ()
 ((x :writer (setf my-hoge-x) :reader hoge-x :initarg :x :initform 0)
  (y :accessor hoge-y :initarg :y :initform 0)))
(defun hoge-x-setter (h new-x)
 "Exposed writer for the slot X of HOGE"
 (setf (my-hoge-x h) new-x)
 (setf (hoge-y h) (x-to-y new-x)))
(defsetf hoge-x hoge-x-setter)

454デフォルトの名無しさん:2010/11/04(木) 13:01:51
度々申し訳ありせん.
さらに,>>453を短縮しました.

(defun x-to-y (a)
 "Dummy implementation"
 (1+ a))
(defclass hoge ()
 ((x :writer (setf my-hoge-x) :reader hoge-x :initarg :x :initform 0)
  (y :accessor hoge-y :initarg :y :initform 0)))
(defun (setf hoge-x) (new-x h)
 (setf (my-hoge-x h) new-x)
 (setf (hoge-y h) (x-to-y new-x)))

455デフォルトの名無しさん:2010/11/04(木) 14:13:21
SICPのストリームとambのあたりをCommon Lispで動かすことってできるのでしょうか
456デフォルトの名無しさん:2010/11/04(木) 19:28:41
ストリームは簡単に出来るだろ。
amb は面倒だと思うが可能。 CPS 変換を手書きする方法と、マクロで隠蔽するヒントが On Lisp に載ってるよ。
457デフォルトの名無しさん:2010/11/06(土) 13:13:47
CCL 1.6 RC1が出てるから、CCL使ってる人は協力してあげてー。

1.6での主な変更点は、

* ARM対応
* ASDF2対応
* コードカバレッジ機能改良
* cl:loadでネットワーク上のファイルを読めるように
* WindowsとLinuxでのクリティカルなバグの修正
458デフォルトの名無しさん:2010/11/11(木) 01:01:02
米amazonの1時間ごとのベストセラーにのってた
http://www.amazon.com/Land-Lisp-Learn-Program-Game/dp/1593272812/

大分前から日本アマゾンからもおすすめにのってたけど、発売されたの最近なのか。

サイトもあった気がする。
まんが?
459デフォルトの名無しさん:2010/11/11(木) 15:07:42
LetOverLambdaは無駄な補足説明が多い気がする
このマクロはすごいとかLispはすごいとか
それはわかってるからこの本読んでるわけで
本題だけを手短に説明してほしい
460デフォルトの名無しさん:2010/11/11(木) 16:27:49
あの本の目的はクイックリファレンスを提供することじゃないんだから仕方がないだろ
むしろLispとかマクロとかの凄さをわかってるつもりになっていて実はまだまだ
って層のために書かれたんだろうし。
461デフォルトの名無しさん:2010/11/11(木) 19:03:11
>>458
おととい発送の通知が来てた。
462デフォルトの名無しさん:2010/11/14(日) 04:19:38
Common Lisp で外部ファイルにアクセスするにはどうすればいいのでしょうか?
with-open-file で出来るのかと思ったら上手くいかなくて…

あ、DRAKMA は使わない方法で、です
463デフォルトの名無しさん:2010/11/14(日) 04:48:08
外部ファイルってなによ。なにがどうなって欲しいのさ。with-open-fileでなにがおかしいのか書いてくれ。
with-open-fileってローカルのファイル操作で、drakmaってhttpとかですよ? 用途が違う。
464デフォルトの名無しさん:2010/11/14(日) 05:13:12
>>463
with-open-file でも http からのアクセスが出来るのかと思って。すみません
やりたいことは、例えば http://example.com/ にあるファイルを取得したいんです
465デフォルトの名無しさん:2010/11/14(日) 08:40:56
規格上は Common Lisp にネットワーク関係は含まれない。
「Common Lisp で」というのが処理系の拡張やライブラリ類を含まないとするなら回答としては「出来ない」
466デフォルトの名無しさん:2010/11/14(日) 17:52:46
>>462
ANSI Common LispはISO Cとかと一緒で委員会言語だから、
標準化の難しい機能まで規格には入れないよ。成立した時代の関係もあるけど。
Cだって、ソケットは、ISO CじゃなくてPOSIXで定義してるでしょ?

あと、何でDrakma使いたくないの? 処理系ごとのネットワークAPIばらばらだし、
基本上位ライブラリ使った方が楽なんだけど。しっかりした理由があるなら聞きたい。
467デフォルトの名無しさん:2010/11/14(日) 17:55:34
本当は smb/cifs の \\server\export\file でした…

みたいな後付設定くるで
468デフォルトの名無しさん:2010/11/14(日) 19:25:18
ゴクリ、
469デフォルトの名無しさん:2010/11/15(月) 15:09:20
CLでWindowsプログラミングをしたい人は興味あるかも。

ttp://love5an.wordpress.com/2010/11/14/intro/

Doors:
 COMやOLE含むWindows APIのバインディング
LDX:
 LisperフレンドリーなDirectXのラッパー。まだ未着手
Virgil:
 新しいFFIフレームワーク。DoorsとLDXのベースライブラリ

まだまだ開発中みたい。

でもこういうのって大抵、Windows APIの膨大さで、失踪か放置か開発中止に追い込まれるよね。
結局は使う範囲だけ自分でFFIのコードを書くことになりがち。
470デフォルトの名無しさん:2010/11/15(月) 15:10:58
>>465
ありがとうございます。レスが遅れてすみません
やはりライブラリを使わないと出来ないんですね。素直に DRAKMA を使います

>>466
何となく DRAKMA 使わないで出来るかやってみようと思いまして

>>467
いやいやいや
471デフォルトの名無しさん:2010/11/15(月) 18:53:31
>>470
知的好奇心を満たしたい、って話なら、各処理系のマニュアル読めば、
直でソケット触れるAPIがどの処理系にもあるから、読んでみると良いよ。
あとはCとかと同じ。

あと、ライブラリを使わないとできない、ってのはちょっと意味合いが違うというか。
正確には処理系独自の拡張である、ネットワーク機能を使わないとできない。
基本的に、ライブラリで処理系にネットワーク機能付けられる訳じゃないから。

あと、これまた独自拡張だけど、Foreign Function Interface(FFI)を使えば、
POSIX APIでもWinsockでも呼び放題だから、それを使うという手もある。
良くあるパターンは、FFI経由でlibcurlとかへアクセスして、SSL通信するとか。
ただ、手間とか考えると、Drakmaとかを使えるなら使った方が、どう見ても楽。
472デフォルトの名無しさん:2010/11/15(月) 19:04:36
楽にならなきゃライブラリの甲斐がないしな。
473デフォルトの名無しさん:2010/11/16(火) 02:25:58
Newton法でsqrtを求めるプログラムなんですが、

(defun sqrt% (x)
 (labels ((foo (a b)
       (if (> (abs (- a (* b b))) 0.00001) (foo a (/ (+ b (/ a b)) 2)) b)))
     (foo x (/ (1+ x) 2))))


(labels ((foo (a b)
      (if (> (abs (- a (* b b))) 0.00001) (foo a (/ (+ b (/ a b)) 2)) b)))
    (defun sqrt%% (x)
     (foo x (/ 1+ x) 2))))

に違いはありますか?
disassembleした結果は全く同じだったんですが、宣言を追加したときの
最適化されやすさなど違いがあったらお願いします。
474デフォルトの名無しさん:2010/11/17(水) 16:02:36
abclってsbclで動くものならほとんど何も考えずに動くのかな
475デフォルトの名無しさん:2010/11/17(水) 17:47:14
>>473
そういう書き換えが可能だということ自体、環境の独立性を示しているわけで、
違いが出る道理はなさそうだね。もし違ったら危険信号かも。
476デフォルトの名無しさん:2010/11/17(水) 19:36:58
>>473
comp.lang.lisp辺りで聞いてみると面白そうな気がする。
477デフォルトの名無しさん:2010/11/18(木) 10:47:24
time以外にオブジェクトのメモリ上のサイズを知る方法はありますか?
478デフォルトの名無しさん:2010/11/18(木) 23:58:22
>>477
あるけど、処理系依存だと思う。常用してる処理系だと、

> (ccl:object-direct-size "abc")
16
> (defstruct foo x y z)
foo
> (ccl:object-direct-size (make-foo))
24

みたいにできる。
479デフォルトの名無しさん:2010/11/19(金) 16:33:18
>>478
なるほど、ありがとうございます。処理系のマニュアルを見てみます。
480473:2010/11/22(月) 00:00:15
レスありがとうございます。
>>475
「環境の独立性」というのは何に対して非依存なんですか?

>>476
英語はハードルが高いです。
481デフォルトの名無しさん:2010/11/22(月) 00:43:46
>>473
CPS 変換かけてラムダ持ち上げやると同型の式が得られると思う
482デフォルトの名無しさん:2010/11/22(月) 01:21:24
>>480
英語っても、複雑な質問じゃないし、短く質問して解答もらったらお礼言うだけじゃない。
規格の隅っこ突付く質問に、2chでまともな解答もらうより、よっぽど楽だよ。

一応、HyperSpecに、

> The scope of the declarations between the list of local function/macro definitions and
> the body forms in flet and labels does not include the bodies of the locally defined functions,
> except that for labels, any inline, notinline, or ftype declarations that refer to the locally
> defined functions do apply to the local function bodies. That is, their scope is the same as
> the function name that they affect.

とはある。引数の所でdeclarationがnot evaluatedともある。だから、labelsがdefunの外にある場合、
内部で(declare (optimize (speed 3)))とかしても、ANSI complianceがきっちりしてる処理系だと、
評価されないかもしれない。まあ、最適化され易さには関係ないんだけど。

ぶっちゃけ、気にし過ぎ。disassembleして結果が違ってから気にすれば良いと思う。
483デフォルトの名無しさん:2010/11/22(月) 02:04:37
読み返したら、except that for labelsのthat for labelsは、any inline以降に掛からないかも。
examplesでfletにinline使ってるし。

ttp://www.lispworks.com/documentation/HyperSpec/Body/s_flet_.htm

CLtL2にもそれっぽいこと書いてないみたいだし、規格上では同一性は保証されないけど、
多くの処理系では、最適化の過程で>>481のような処理がされて、結果が等しくなる、
って結論で良いんじゃないかと思う。
484デフォルトの名無しさん:2010/11/22(月) 06:05:52
>>480
「環境の独立性」で言いたかったのは、
fooの中の変数が、sqrt%の中の局所変数と束縛関係を持たない、みたいな。
ごめん、言い回しが正確じゃないかもw
485デフォルトの名無しさん:2010/11/24(水) 19:38:02
http://www.neilvandyke.org/htmlprag/
これのCommon Lisp版誰か作ってるだろうと思ったら
検索しても出てこない
486デフォルトの名無しさん:2010/11/25(木) 00:36:17
>>481
CPS変換ができません。
一旦labelsが消えるんですか?

>>483
except that [for labels, any inline, notinline, or
ftype declarations that refer to the locally defined
functions do apply to the local function bodies].
と節をつくるのでは?
おそらく、
(labels ((foo (x) ...)
  (bar (y) (foo y))) ;展開される
  (declare (inline foo))
  (foo a) ;展開
  ...)

(flet ((foo (x) ...)
  (bar (y) (foo y))) ;展開しない
  (declare (inline foo))
  (foo a) ;展開
  ...)
ってことだと思います。
ローカル関数は書き換えができないみたいだし、どっちも変わんないんですね。

>>484
fooも, sqrt%(%)も自分の引数しか使ってないってことですか?
487デフォルトの名無しさん:2010/11/25(木) 01:26:19
>>486
CPS変換云々ってのは、処理系が末尾再帰を最適化するときに、
そういうことをするってことだと思うんだけど。ラムダリフティングも。
だから、labelsも当然展開されると思うんだけど、違うの?
488デフォルトの名無しさん:2010/11/25(木) 02:05:03
いえ、無学なもんで.
sqrt%をCPS変換するとどうなるんですか?
489デフォルトの名無しさん:2010/11/25(木) 02:18:34
元のsqrt%が末尾再帰になってるんだから、CPS変換する意味なくない?
というかできなくない? labelsの展開とlambda liftingはできても。

490デフォルトの名無しさん:2010/11/25(木) 02:51:50
末尾再帰しているのはfooですよね?
ラムダリフティングはCPS変換で出てきたラムダをグローバルに
名前付けして順序を入れ替える操作、でいいんですか?
491デフォルトの名無しさん:2010/11/25(木) 02:57:07
lambda liftingはこれ。

ttp://en.wikipedia.org/wiki/Lambda_lifting
492デフォルトの名無しさん:2010/11/25(木) 03:03:42
だから、lambda liftingするだけで、

(defun foo (a b)
(if (> (abs (- a (* b b))) 0.00001) (foo a (/ (+ b (/ a b)) 2)) b))

(defun sqrt (x)
(foo x (/ (1+ x) 2)))

両方こうなる、はず。俺も>>481見て調べた口だから間違ってたらごめん。
493デフォルトの名無しさん:2010/11/25(木) 03:20:23
あと、sqrt%はCPSだとこうなのか?

(defun sqrt% (x k)
(labels ((foo (a b k)
(if (> (abs (- a (* b b))) 0.00001)
(foo a
(/ (+ b (/ a b)) 2)
#'(lambda (x)
(funcall k x)))
(funcall k b))))
(foo x (/ (1+ x) 2) #'(lambda (x) (funcall k x)))))

(sqrt% 2 #'(lambda (x) (float x)))
;; => 1.4142157
494デフォルトの名無しさん:2010/11/25(木) 03:21:20
exampleがLISPじゃないorz
495デフォルトの名無しさん:2010/11/25(木) 03:24:26
でもこれだとあんま意味ないから、処理系内部での変換ってことで、

ttp://www.is.s.u-tokyo.ac.jp/vu/jugyo/processor/process/soft/compilerresume/coverq3/coverq3.html

こういうことなのかもしれない。

これ以上は詳しくないので投げる。おやすみ。
496デフォルトの名無しさん:2010/11/25(木) 03:35:47
JavaScriptで書いてあるじゃん! 手がかじかんで動かないよ!

;; 最初
(defun sum (n)
(labels ((f (x) (+ n x)))
(if (= n 1) 1 (f (sum (1- n))))))

;; 自由変数を引数に変更
(defun sum (n)
(labels ((f (w x) (+ w x)))
(if (= n 1) 1 (f n (sum (1- n))))))

;; リフティングする
(defun f (w x) (+ w x))
(defun sum (n)
(if (= n 1) 1 (f (sum (1- n)))))
497デフォルトの名無しさん:2010/11/25(木) 04:02:18
>>496
ありがとうございます。
表計算ソフトを使ってるときも思うんですが、どうせカッコだらけに
なるんだからLispと同じシンタックスにすればいいのに.

>>492
>>496
結局リフティングするのにCPS変換はいらないんですか?
498デフォルトの名無しさん:2010/11/25(木) 04:20:39
寝たいのに寝れん。しかも寒い。

>>497
全部自作自演でした……ということはないが、それ両方とも俺だ。

lambda liftingは自由変数をローカル関数から排除する仕組みで、
CPS変換は継続を明示的に渡していく仕組みだから、直交する概念のはずー。
でも、最近の関数型のコンパイラだと大抵は両方やってるっぽい。
499デフォルトの名無しさん:2010/11/25(木) 17:49:15
SBCLで明示的にゴミ集めをする方法が分かりません。
単にどこからも参照されないようにしてからsb-ext:gcを呼べばいいかと思って次のようにしても、topとかで見るとメモリ使用量が減っていないので。

(defparameter object 超巨大なリスト)
(setf object nil)
(gc)

ちなみにSBCL 1.0.34 で環境は FreeBSD 8.0R/ amd64 です。
500デフォルトの名無しさん:2010/11/25(木) 18:02:47
ゴミ集めしたからと言って、
malloc(3)したメモリをfree(3)で返すとは限らない。
501デフォルトの名無しさん:2010/11/25(木) 18:46:33
>>499
更には free したからといってそのメモリがシステムに返却されるとは限らない。
最近の BSD は積極的にシステムに返す方針みたいだけど。
BSD を使おうという人ならその程度のことは知ってなきゃだめだよ。
502デフォルトの名無しさん:2010/11/26(金) 07:28:07
どうでも良いけどLisperって早起きの印象があるなぁ
shiroさんなんて夜中の3時とかに何か書いたりしてる、いつ寝てるんだろう
503デフォルトの名無しさん:2010/11/26(金) 07:38:01
3時って日本時間のか?
そうだとしたら shiro さんがいるハワイは8時頃だ
504デフォルトの名無しさん:2010/11/26(金) 19:32:54
現代のunixのmalloc(3)ならmmap(2)でメモリ確保してるはずなので
アプリがOSにメモリを返す事は技術的には可能だが
実際の実装はケースバイケース
505502:2010/11/27(土) 09:27:33
>>503
べ、別に知らなかったわけじゃないんだからねっ!
ちょっと勘違いしてただけなんだから!
(///)
506デフォルトの名無しさん:2010/11/27(土) 18:26:02
            〃´⌒ヽ
.     , -――  メ/_´⌒ヽ
   /   / ̄  ´ヽ ヽ
.  /  ,  /// ト. !  、 丶ヽ
  l  / /(((リ从  リノ)) '
  |  i  l   . ヽノ .V l
  l ,=!  l  ///    ///l l   ねんがんのLISPましんをてにいれたぞ!
  l ヾ! ', l    ヽ_フ   l l
  |  ヽヽヽ        //
  l    ヾ≧ , __ , イ〃
  li   (´`)l {ニ0ニ}、 |_"____
  li   /l, l└ タl」/l´  LISP  `l
  リヽ/ l l__ ./  |_________|
   ,/  L__[]っ /      /

ttp://twitter.com/#!/nekoallergie/status/8449374745001984
507デフォルトの名無しさん:2010/11/28(日) 10:53:23
伝説のポケコンか
508デフォルトの名無しさん:2010/11/28(日) 16:26:08
>>506
いいなぁ、あれ欲しかったんだけど買えなかったんだよ

ポケコンコレクションで欠けてる部分結構でかいんだよな
509デフォルトの名無しさん:2010/11/29(月) 00:12:43
大文字小文字を混合で使えるCommon Lispは
高価なアレグロしかないのでしょうか
510デフォルトの名無しさん:2010/11/29(月) 00:12:45
LISPマシン - Wikipedia
http://ja.wikipedia.org/wiki/LISP%E3%83%9E%E3%82%B7%E3%83%B3

これなのか
一切見たことがなかったから興味があるよ
今のパソコン換算でいうと(言うのが難しいかもしれないけど)、どれくらいのスペックなの?
511デフォルトの名無しさん:2010/11/29(月) 08:26:10
いや、AI-1000はそういうのを期待しちゃダメだw
512デフォルトの名無しさん:2010/11/29(月) 12:55:13
>>509
どういうレベルで言ってるのか知らないけど、
|aaa|で小文字のシンボルで、|Abc|で混合のシンボル。

エスケープしたくないって話なら、CLISP辺りには普通に機能がある。
513デフォルトの名無しさん:2010/11/29(月) 13:24:49
>>510
1990年ごろには汎用のワークステーション使ったほうが安くて同じくらいの性能出るよね、
という話になったということなので、SPARCstation 1ぐらいということになるのかな。
514デフォルトの名無しさん:2010/11/29(月) 13:27:33
>>513 はAI-1000の話じゃなくてLISPマシンの話ね
515デフォルトの名無しさん:2010/11/29(月) 13:48:24
AI-1000は今のコンピュータに例えると電気釜くらいの性能。
>>513
SPARC機に刺すシンボリックスのワンボードLispマシンあったけどね。
もともと環境が売りなので、性能比べても仕方ないけど。
516デフォルトの名無しさん:2010/11/29(月) 23:06:34
>>509
readtable-case
517デフォルトの名無しさん:2010/11/29(月) 23:31:42
>>516
CLHS見てみたけど、ANSIにあるんだね。独自拡張だと思ってた。
ACLのModernモードの仕組みってこれ?
518デフォルトの名無しさん:2010/12/02(木) 15:46:49
cl-yaccのサンプルに

'#.*package*

という構文があるのですが、なんのためにこんなもの使うのでしょう
519デフォルトの名無しさん:2010/12/03(金) 21:02:22
マクロの質問です
最終的には↓のように出力するマクロを作りたいのですが、うまくいきません
[
foo, bar
piyo, hoge
]

文字の部分はformat関数を使って表示させています
(defun print-foo-etc ()
(format t "~A~%" "foo")
(format t "~A~%" "bar"))

(defun print-piyo-etc ()
(format t "~A~%" "piyo")
(format t "~A~%" "hoge"))

関数版は意図した通り動きます
(defun print-test-func-ver ()
(format t "~A~%" "[")
(print-foo-etc)
(print-piyo-etc)
(format t "~A" "]"))

他方、マクロ版は動きません
(defmacro print-test-macro-ver (&body body)
(format t "~A~%" "[")
`(progn ,@body)
(format t "~A~%" "]"))

`(progn ,@body)がおかしいようなのですが、どう修正すればよいでしょうか?
520デフォルトの名無しさん:2010/12/03(金) 21:15:36
すみません書き間違えました
`(progn ,@body)ではなく`(progn ,body)でした
521デフォルトの名無しさん:2010/12/03(金) 21:20:31
>>519
これでどうよ?
(defmacro print-test-macro-ver (&body body)
`(progn
(format t "~A~%" "[")
,@body
(format t "~A~%" "]")))


>(print-test-macro-ver (print-foo-etc) (print-piyo-etc))

[
foo
bar
piyo
hoge
]
522デフォルトの名無しさん:2010/12/03(金) 22:39:05
>>521
ありがとうございます。
意図したとおりできました。
なるほど、prognをはじめに使うのですね
勉強します
523デフォルトの名無しさん:2010/12/03(金) 23:50:05
>>519
そのマクロだと、マクロが展開されるときにformatが実行されちゃうので、
意図した通りに動かない。CLのマクロは、マクロ定義を評価した結果のリストを、
単純に呼び出しの所に置き換えるだけだから。仕組み自体はとてもシンプル。
これがSchemeのhygienic macroだと色々ややこしいんだけど。

>>520
それは,@bodyで合ってると思う。
524デフォルトの名無しさん:2010/12/03(金) 23:59:35
>>522
あと、マクロが上手く動いてない場合、実際に展開してみると良いよー。
というか、展開せずにデバッグするのは難しい。

(macroexpand-1 '(print-test-macro-ver (print-foo-etc) (print-piyo-etc)))

みたいにmacroexpandやmacroexpand-1を使うか、
SLIME使ってるなら、C-c C-mとかすると、新しいバッファに展開してくれるよー。
525デフォルトの名無しさん:2010/12/05(日) 16:08:08
OSの仮想記憶に頼らずに、自前で仮想記憶みたいなのを実装してる
処理系ってありますか?
526デフォルトの名無しさん:2010/12/05(日) 17:17:46
今は無いんじゃないかな
CP/M時代にはMuMathがやっていたような気がするけど。
527525:2010/12/05(日) 18:14:47
MuMathってMS-DOS版も売ってましたね。

>>526
WindowsCE上にMaxima載せてrun_testsuite()する野望が…
528デフォルトの名無しさん:2010/12/05(日) 23:11:48
>>525
処理系というかライブラリだと、http://www.cliki.net/trivial-garbageとか
処理系レベルの仮想記憶はweak pointer, finalizerなどの
primitiveに分解されてしまいました。ライブラリやミドルウェアの仕事です。

そういえばHLISPの実装者はお二人ともお亡くなりになってしまいましたね。
529デフォルトの名無しさん:2010/12/06(月) 01:48:06
>>525
cmucl とか sbcl あたりは 自前の仮想記憶を mmap と mprotect で
シミュレートしてる感じ
# thread とかの話が出てくるとややこしくなるけど、基本的にはってことで…
530デフォルトの名無しさん:2010/12/06(月) 07:55:40
今から関数型言語やるのならLispとHaskellのどっちがいいんだろう
531デフォルトの名無しさん:2010/12/06(月) 09:06:14
どっちもやってみればいいんじゃね >>530
もっとも CL は関数型とかいいながら手続き型要素てんこ盛りだけどね…
532デフォルトの名無しさん:2010/12/06(月) 12:14:09
clojureが、関数型っぽく変化しない値中心に組み立ててあるけど、
haskel,mlと、scheme,clは、それぞれひとつづつ知ってたほうがいいと思う。
533デフォルトの名無しさん:2010/12/06(月) 17:58:56
CommonLisp はマルチパラダイムだって規格に明記されてる。
Scheme も色んなパラダイムをサポートするよって冒頭に書いてある。
関数型的な性質が中核に据えられてはいるけど、言語として関数型には分類できない。
まぁ、そもそも「関数型とは何か」ってのもそれほど明確な定義は無い。
どちらが良いかという質問に対して正解は無い。 選択があるだけ。
534デフォルトの名無しさん:2010/12/06(月) 18:57:50
lispもhaskellも仕事は無いんだから
趣味として両方遊べばいいじゃない
535デフォルトの名無しさん:2010/12/06(月) 20:45:38
536525:2010/12/08(水) 12:31:32
>>528
HLISPみたいなリストの共通部分の共有って、他の実装では見られないみたい
ですけど、あんまりメリットが無いのでしょうか?
537デフォルトの名無しさん:2010/12/08(水) 12:59:56
例えばクロージャを使おうとすると手続きの中に内部状態を持たせるわけだから、しばしば代入が必要になって関数プログラミング的じゃないよね。
CLOSを使ってるとスロットへの代入がしょっちゅう出てきて関数プログラミング的じゃないよね。
538デフォルトの名無しさん:2010/12/08(水) 13:06:53
それはクロージャの使い方次第だと思うが
539デフォルトの名無しさん:2010/12/08(水) 15:12:12
>>536
マルチパラダイム言語であるLispとしては、
破壊代入があるから不都合なことが多い。
540デフォルトの名無しさん:2010/12/08(水) 18:51:54
>>539
破壊代入があるから不都合なことって何?
破壊代入があるから結果としてマルチパラダイム言語になっているんじゃいのか
541デフォルトの名無しさん:2010/12/08(水) 19:02:37
多分、HLISPのように、共通の内容だったら共用しちゃうと、
意図しない共用が起きてそれを破壊しちゃうことが起きうるので、
破壊代入とハッシュによる共通部分は相性が悪い、とか、
そんなことだろうと思うが。
542デフォルトの名無しさん:2010/12/08(水) 22:12:12
543デフォルトの名無しさん:2010/12/12(日) 15:33:26
第四回欧州LISPシンポジウム
http://www.european-lisp-symposium.org/

The purpose of the European Lisp Symposium is to provide a forum for
the discussion and dissemination of all aspects of design, implementation and
application of any of the Lisp dialects, including Common Lisp, Scheme, Emacs
Lisp, AutoLisp, ISLISP, Dylan, Clojure, ACL2, ECMAScript, Racket and so on.
We encourage everyone interested in Lisp to participate.

Lisp方言で、schemeからracketが分離されてる
あと、第四回って最近はじまったのかな
544デフォルトの名無しさん:2010/12/12(日) 16:11:40
ECMAScriptってw
545デフォルトの名無しさん:2010/12/12(日) 19:05:44
Land of Lisp で B のヒツジさんを選んじゃったぜ
…しかし熱い本だ。初めての Perl を彷彿とさせる
546デフォルトの名無しさん:2010/12/12(日) 19:12:30
>>543
EuLispが入ってない!って感覚は古いのですか?
それともいとこのISLISPが入っているからよしとすべきでしょうか?
547デフォルトの名無しさん:2010/12/23(木) 01:42:32
WindowsのLispBoxだと、入力した関数の構文が身にバッファ表示され、今から入力する箇所が色づけ強調表示されて便利なんですが、
これってどうやって設定してるんでしょう?
548デフォルトの名無しさん:2010/12/23(木) 02:01:48
LispBox を使ったことないから知らんけど、 eldoc のことかな
549デフォルトの名無しさん:2010/12/23(木) 02:39:45
>> slimeとsbclがいっしょにpackageされてるだけじゃなかったっけ? < LispBox
550574:2010/12/23(木) 14:01:57
>>548
slime-setup の silime-fancy でできました。
551デフォルトの名無しさん:2010/12/24(金) 01:02:18
>>550
未来からいらっしゃい。

contributeされたパッケージにある、slime-autodoc-modeですね。
SLIMEはデバッガやインスペクタまで揃ってて、慣れると離れられなくなりますぜー。
552デフォルトの名無しさん:2010/12/29(水) 01:18:08
lispbox(http://common-lisp.net/project/lispbox/)のwindows版を入れたらエラーメッセージが出ました
初回起動でまずエラーが出て、一旦閉じて再起動してもまたエラーになりました

; Warning: These Swank interfaces are unimplemented:
; (ACTIVATE-STEPPING ADD-FD-HANDLER ADD-SIGIO-HANDLER DUP EXEC-IMAGE
; MAKE-FD-STREAM REMOVE-FD-HANDLERS REMOVE-SIGIO-HANDLERS
; SLDB-BREAK-AT-START SLDB-BREAK-ON-RETURN SLDB-STEP-INTO
; SLDB-STEP-NEXT SLDB-STEP-OUT SOCKET-FD)
; While executing: SWANK-BACKEND::WARN-UNIMPLEMENTED-INTERFACES, in process listener(1).
;Compiler warnings for "z:/LISPBO~1.7/slime-20100514.151447/site-init.lisp" :
; In an anonymous lambda form at position 1132: Unused lexical variable VALUE
;Compiler warnings for "z:/LISPBO~1.7/asdf.lisp" :
; In PARSE-COMPONENT-FORM: In the call to CHECK-COMPONENT-INPUT with arguments (TYPE NAME DEPENDS-ON COMPONENTS IN-ORDER-TO),
; 5 arguments were provided, but at least 6 are required
; by the current global definition of CHECK-COMPONENT-INPUT
;; Swank started at port: 52781.
52781
?

どうすればよいのでしょうか?
最後に出ている?のあとに何かコマンドを打ち込むということなら
どんなコマンドを入れればいいのでしょうか
553デフォルトの名無しさん:2010/12/29(水) 16:57:19
>>552
見た感じ、エラーではなく、警告しか出ていない気がします。
一部の機能がサポートされていない、変数が宣言されているのに使われていない、
関数に渡す引数の数が合っていない、という警告が出ています。無視していいです。

その「?」っていうのは、CCLのプロンプトです。コマンドプロンプトでいう「>」と一緒。
そこにLispの式を入力すると、結果が帰ってきます。REPLという環境です。
試しに、「(+ 1 2)」とか「(* 4 5)」とか入力してみてください。
554デフォルトの名無しさん:2010/12/29(水) 17:32:11
あと、そこからダウンロードできるLispboxが使っているClozure CL 1.5は、
Windowsでかなり致命的なバグがあるので、できれば1.6に更新するか、
CLISPとかの別の処理系を使った方が良いです。

ちなみに、LispboxはEmacsというテキストエディタと、SLIMEという開発環境、
Common Lispの処理系を一緒に配布しているものなので、使い方が分からなかったら、
それぞれの名前でググると情報が色々出てきます。
555552:2010/12/29(水) 23:03:42
>>553-554
ご丁寧にありがとうございます。わかりました。CLISPを使ってみます。
556デフォルトの名無しさん:2010/12/30(木) 00:18:23
すみません。重ねて質問します。
slimeでcclではなくclispに切り替えようとして、
emacsのsite-lisp/lispbox.elの (require 'slime)の直前にこう書きましたがうまく動きません。
clispはインストール済みです
参考にしたサイトをコメントに書きました

;;; clisp
; http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/src/NEWS?revision=clisp_2_49-2010-07-07
;
;CLisp
; http://www.math.s.chiba-u.ac.jp/~matsu/cl/clisp.html
(setq inferior-lisp-program "C:/clisp-2.49/clisp.exe")
(add-to-list 'load-path "C:/Program Files/clisp-2.49")
(setq slime-net-coding-system 'utf-8-unix)
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(add-hook 'lisp-mode-hook (lambda ()
(slime-mode t)
(show-paren-mode)))

lispbox.el以外にも編集するものがあるのでしょうか?
557デフォルトの名無しさん:2010/12/30(木) 01:17:43
>>556 SLIME の info よんだ?
558デフォルトの名無しさん:2010/12/30(木) 08:03:52
>>556
lispbox.elが、自動的にccl-1.5-windowsx86\lispbox-register.elを実行してるからです。
Lispboxをそのまま使うなら、(lispbox-find-lisps)をコメントアウトしてください。

Lispboxを使うよりは、Emacsを普通に使った方が、他の情報を参考にできて楽だと思います。

ttp://ftp.gnu.org/pub/gnu/emacs/windows/emacs-23.2-bin-i386.zip

をダウンロードして適当な場所に解凍して、

ttp://common-lisp.net/project/slime/snapshots/slime-current.tgz

をダウンロードして、先程解凍して出来たemacs-23.2というフォルダにある、
site-lispというフォルダに、丸ごとコピーしてください。

あとは、Emacsを起動して、~/.emacsというファイルを開いて、

(setq inferior-lisp-program "C:/clisp-2.49/clisp.exe")
(require 'slime-autoloads)
(setq slime-net-coding-system 'utf-8-unix)
(slime-setup '(slime-fancy slime-banner))

をコピペして保存すれば終わりです。
559デフォルトの名無しさん:2010/12/30(木) 08:33:03
あとは適当に、>>556にもある、

(add-hook 'lisp-mode-hook
(lambda ()
(slime-mode t)
(show-paren-mode)))

とかを追加しておけばいいと思います。

slime-modeというのは、Lispのコードを編集するときにSLIMEがサポートしてくれる機能で、
SLIMEが起動しているときは、lisp-modeになると自動的にslime-modeも実行されるんですが、
この設定だと、SLIMEが起動していないときにも、lisp-modeになったら、slime-modeを実行します。

show-paren-modeというのは、対応する括弧を強調してくれる機能です。
Lispだと括弧をたくさん使うので、コードが読み易くなります。
560デフォルトの名無しさん:2010/12/30(木) 08:36:55
>>558
文章が抜けてました。slime-current.tgzも解凍してから、できたフォルダをsite-lispにコピーしてください。

多分、普通にEmacsとか使ったことある人な気がするんで、蛇足だとは思うんですが。
561デフォルトの名無しさん:2011/01/12(水) 09:19:33
clbuild2
でweblocks入れようとした
clsqlが入らないのでweblocksのサイトみたら
clsql-fluidとかいうのを入れろと書いてあった
clbuild2でclsql-fluidを入れようとしたら、そんなアプリないぞと言われる
562デフォルトの名無しさん:2011/01/12(水) 13:34:04
Let Over Lambdaの人はemacsよりvimを勧めてるけど
eclipseにもVisualStudioにもemacsキーバインドはあってもvimキーバインドはない
結局慣れて特なのはemacs
563デフォルトの名無しさん:2011/01/12(水) 14:14:10
キーバインドよりもカスタマイズの話。
楽に入力できる環境を整えるよりも、
言語の側で下層 (DSL) を作り込もうということ。
564デフォルトの名無しさん:2011/01/12(水) 22:10:02
>>563
よくわからん。もうちっとkwsk
565デフォルトの名無しさん:2011/01/13(木) 00:32:10
lolで書いてあるのは、統合環境はコード生産に集中出来ない(生産性が落ちる)からviでコード生産に集中しろというような内容だったと思う。
566デフォルトの名無しさん:2011/01/13(木) 00:34:26
構文チェックやコード補完、リファクタリング、デバッグ、GUIビルダーとか必要ない語彙力と簡潔な関数名と簡潔に書ける動的言語が前提だとおもう。
文章書くのに、ワードの補完やTeX、HTMLのタグづけより
真っさらなメモ用紙にアイディア浮かべるのにまず集中しろみたいな感じかな。
567デフォルトの名無しさん:2011/01/13(木) 00:36:58
>>563 は、lolでvi勧めてる理由の要約なのか
568デフォルトの名無しさん:2011/01/14(金) 00:40:28
なるほど。そういうもんなのか。thx!
569デフォルトの名無しさん:2011/01/14(金) 11:54:06
タイピングするのが楽なように、
(DSLを含めて)プログラムを作っていくと、
すっきりした構造になり易いってのは分かるけど、
グダグダなAPIを持つGUIウィジェット使わざるを得ない場合、
ラッピング書くだけで大仕事ですよね。
まあそういうのはある程度割りきってやるしかないけれど。
570デフォルトの名無しさん:2011/01/15(土) 08:45:04
>>561
Quicklisp使え。
571デフォルトの名無しさん:2011/01/18(火) 18:07:24
LispをWEBサイトのフォーム内で実行して結果を表示してくれるサービスってどこかにございますでしょうか?
572デフォルトの名無しさん:2011/01/18(火) 18:17:09
javascriptという名前のlispもあるが
javascript lispでググって
573デフォルトの名無しさん:2011/01/18(火) 21:59:23
574デフォルトの名無しさん:2011/01/18(火) 23:28:21
ミスプリすげーと感動した
575デフォルトの名無しさん:2011/01/19(水) 00:45:09
>>572-573
ありがとうございます、たすかりました。
576デフォルトの名無しさん:2011/01/25(火) 13:34:56
実用common lispを買ったので
windowsにlispboxを入れようとしたら
lispboxの配布が終わっていたことに気づきました。

実用common lispではclispのエラーメッセージを示しながら説明しているので、
clisp + slimeの環境をどうにかして入れたいです。
slimeはemacs+slimeパッケージ?というものらしいのですが、
emacsの設定ファイルをどこに置けばいいのかわからず、自力では設定できませんでした。
577デフォルトの名無しさん:2011/01/25(火) 15:58:10
はい
578デフォルトの名無しさん:2011/01/25(火) 17:18:17
>>576 以下でOKだったと思う。 Windowsはゲーム以外に使わないので間違ってたらごめん

1. HOMEって環境変数つくってemacsの設定ファイルを格納するフォルダーを指定する
2. 上記ディレクトリに .emacs って名前のファイルを作ってslimeの設定を書き込む
579デフォルトの名無しさん:2011/01/26(水) 11:20:21
>>567
最近だと、%APPDATA%以下に置けば良かったはず。
コマンドプロンプトで「echo %APPDATA%」実行して出たところ。
XPならC:\Documents and Settings\manabu\Application Data。

SLIMEのインストールは、

ttp://common-lisp-users.jp/index.cgi?SLIME

見てね。
580576:2011/01/26(水) 12:16:56
みなさん、ありがとうございます。
環境変数のHOMEに.emacsへのパスを追加して再起動しても、
何かうまくいきませんでした。
どこかの設定を変に書き換えてしまったのかもしれません。

>>579
やってみます。
581デフォルトの名無しさん:2011/01/26(水) 12:34:49
>>580
%HOME%は自分のホームディレクトリを設定してください。.emacsへのパスじゃないです。
ホームディレクトリが何かご存知ないなら、こちら。

ttp://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA

例えば、XPなら、「C:\Documents and Settings\ユーザ名」です。
そこに、.emacsというファイルを作ります。

%HOME%が設定されてない場合、%APPDATA%を探すと思います。好きなフォルダに.emacsを置いてください。
582デフォルトの名無しさん:2011/01/26(水) 12:39:51
好きなフォルダというと勘違いさせそうなので。
%HOME%を設定する方法でも、%APPDATA%に置く方法でも、
好きな方でどうぞ、という意味です。

あと、どこかの設定を変に書き換える、っていう心配はしないで良いです。
Emacsはレジストリは使いません。初期の設定ファイルもありません。
.emacsなどの設定ファイルでカスタマイズします。.emacsを消せば、最初の状態に戻ります。
付属のファイルを間違って消してしまった、なんて場合を除いて、
おかしなことになったりしません。安心していじってください。
583デフォルトの名無しさん:2011/02/01(火) 14:19:03
先月末に首になっちゃって、サンデープログラマなんだけど、OS:Ubuntu8.04LTSから10.04LTSへと移行して、emacs22も23へ移行するか検討して、SBCLの環境を作り直そうかな。
Ubuntuも作り直さないといけないし、Slimeの環境ももっと見直さないといけないしなあ。clispだと動かないんだよなあ。
実践ComonLispの付録Aの日本語処理もどうにかして物にしたい。AllegroServeの章もどうにかして英語処理でいいからクリアしたいんだよなあ。なんか途中でうまくいかなくなる。

時間を割くとしても趣味の時間なんであんまり時間を避けないんだけどね。先月末締め切りだった簿記の試験を受けるか、どうか迷って、lispの勉強の方を選んだ。
584デフォルトの名無しさん:2011/02/01(火) 20:01:59
そっか
585デフォルトの名無しさん:2011/02/01(火) 22:41:51
首になるのも納得だわ
586デフォルトの名無しさん:2011/02/01(火) 22:47:23
>>585
どう納得したの?
587デフォルトの名無しさん:2011/02/02(水) 00:33:14
個人的な、あんまCLに関係ない事情を、CLのスレに書き込みに来る辺り、
あんまり仕事がばりばりできる人には見えない。

他人が話に絡めるような内容でもないし、助け舟を出そうにも、エスパーすら難しい情報量の無さ。
文章の整形も杜撰で、内容も散漫。国語力も怪しい。

Twitterかブログに書いておけば良いのに、と思った。>>585じゃないけど。
588デフォルトの名無しさん:2011/02/02(水) 01:03:44
俺もそう思う。 自分の状況を書いてるだけだもんな。
それが何か? としか反応できん。
何か求めていることがあるのならそれを表現できてないし、
自分のメモでしかなく対話する気がないなら掲示板に書くことじゃないだろ。
589デフォルトの名無しさん:2011/02/02(水) 07:57:18
>>587
これはtwitterじゃなく愚痴ッター(ttp://gtitter.com/)レベルだとおもわれ
590デフォルトの名無しさん:2011/02/02(水) 13:54:43
lisp本の多くが詐欺ということなんじゃね
591デフォルトの名無しさん:2011/02/02(水) 18:53:50
そんなこともないだろ。 そもそも LISP を取り上げた本はそんなに多くない。
需要が限られた中にあえて低品質のものを投入したって無駄になるだけじゃね?
592デフォルトの名無しさん:2011/02/02(水) 21:54:52
おれこのデスマの峠越えたら家帰って ttp://lispcabinet.sourceforge.net/ で遊ぶんだ…
593デフォルトの名無しさん:2011/02/02(水) 22:18:38
死亡フラグだな、家にまず帰れんw
594デフォルトの名無しさん:2011/02/07(月) 01:28:45
コンパイラ型の場合、lispのマクロってコンパイル時に展開されるの?
595デフォルトの名無しさん:2011/02/07(月) 01:56:34
>>594
この様になっております。2番目。

ttp://www.lispworks.com/documentation/HyperSpec/Body/03_bca.htm
596デフォルトの名無しさん:2011/02/07(月) 19:09:53
>>595
ありがとうございます。
ふと、lispのマクロは関数も使えたからどうなってるのかなと思ったもので。
 (※1)マクロやシンボルマクロだけを呼ぶマクロならmacro form
 (※2)funcallや関数なんかを含んだマクロならcompiler macro form

※1はトップレベルで展開。コンパイル時でも実行時でも展開可
※2はトップレベルで結果が展開されるとは限らなくてコンパイル時/実行時ともに有り??

2番目というのは※1のことですね
597閃き:2011/02/07(月) 21:59:31
         .。o(日本語キーボードは()を打ちにくい)
         <⌒/ヽ-、___
       /<_/____/

     \  __  /
      _ (m) _  ピコーン
         |ミ|
     /  .`´  \
         <⌒/ヽ-、___
       /<_/____/


       英語キーボード使えばいいんじゃね?
     ∧∧ ∩
    (`・ω・)/
    ⊂  ノ
     (つノ
     (ノ
  ___/(___
/  (___/
598デフォルトの名無しさん:2011/02/07(月) 22:34:01
>>597
その理屈はおかしい、むしろスペース脇にある「変換」「無変換」あたりをhyperシフトにしてhyper+アルファベットで任意の文字を打ち込めるようにした方がべんりだぞ
英語キーボードほどスペースが幅食ってもったいないよ(昔のLispマシンのキーボード的につかおうぜ、109とか106キーを)
599デフォルトの名無しさん:2011/02/07(月) 22:40:04
>>598
これのこと?
キーボードを変えずにソフトで対処できるなら、やってみたいね
http://www.pfu.fujitsu.com/hhkeyboard/kb_collection/#lisp
600デフォルトの名無しさん:2011/02/07(月) 22:48:53
>>599
キーサイズ違うようなうろ覚え感があるけど、親指の器用さをうまく使うと入力が楽になるのは本当
手が小さいせいで数字キーの段がめちゃ遠い自分は「無変換(super)+YUIHJKNM,OL.」がテンキーもどきになるようになってる
変換キーはさすがに日本語入力で使ってる

そのようなわけでemacs以外だと1段目のキーを使う入力がめさ遅い orz

601デフォルトの名無しさん:2011/02/07(月) 22:49:24
(`・ω・)キーボード色々あるのだな、びっくりした
(`・ω・)俺は片手キーボードを覚えてみたいぞ
602デフォルトの名無しさん:2011/02/07(月) 23:41:19
そろそろ括弧の場所を推論してくれるシステムがあっても良いと思う
603デフォルトの名無しさん:2011/02/07(月) 23:56:36
代わりにオフサイドルールが導入されます
604デフォルトの名無しさん:2011/02/08(火) 03:29:27
>>596
コンパイラマクロってのは、

ttp://www.pentaside.org/paper/compilermacro-lemmens/compiler-macros-for-publication.txt
ttp://accomplish-nothing.blogspot.com/2011/01/blog-post.html

こういう、マクロの親戚みたいなもののことなので、多分何か勘違いしてます。

Common Lispのマクロっていうのは、defmacroの本体の部分をコンパイルする際に評価して、
元の式を、本体部分の結果のS式に置き換えるだけです。だから、何かのファイルを読み込もうが、
標準出力に呪いの言葉を書きだそうが、帽子から鳩を出そうが、最終的にS式を返す内容なら、
それはマクロとして成立します。とっても単純。

>>597
英語キーボード使ってるけど、あんま変わんない。
逆に、~が多発するformat書くとき、発狂したくなる。
605デフォルトの名無しさん:2011/02/08(火) 03:53:00
具体的な例を付け足し。つまり、例えば

(defmacro add2 (x) (list '+ 2 x))

っていうマクロを定義した場合、コンパイルするとき、実際にlistが呼ばれるってことです。
listはあんまり使われませんけど、mapcarとかloopとか、labelsでの再帰とかは定番です。

それで、上のマクロを使った式は、

(add2 1) ; → (+ 2 1)

みたいに置き換えられてコンパイルされます。実行時にはコンパイルされたコードが評価されます。
マクロを変更しても、もう一度コンパイルされるまで、変更の影響は受けません。
606デフォルトの名無しさん:2011/02/08(火) 08:18:01
>>599
Windows だと ChgKey ってなフリーソフトがある
Unix系だとxmodmapつかえばOK
おいらは, 日本語キーボードのキーマップをむりやりHHK配列にして使ってる
607デフォルトの名無しさん:2011/02/13(日) 16:40:53
LISPでイベント駆動ってできるんですか?
608デフォルトの名無しさん:2011/02/13(日) 16:56:15
イベント駆動なんて無限ループとコールバックさえあれば実装出来るんだから
言語に依存しないでしょ。ちゃんとした奴を作りたければ kqueue を使ったり
イベント伝播システムとかを実装したりするけど、それも言語に依存しないよ。

REPL 自体がある種のイベント駆動でもある訳だから Lisp はイベント駆動と
相性が良いと豪語する人も居るかもしれない。
609デフォルトの名無しさん:2011/02/13(日) 18:44:31
なるほど。
ではたとえばC#のdelegateでやるイベントみたいなのは
LISPならどうなんでしょうか?
610デフォルトの名無しさん:2011/02/13(日) 19:11:02
C# の delegate って ObjC の delegate と一緒?
611デフォルトの名無しさん:2011/02/13(日) 19:17:15
delegate でやるイベントって chain of responsibility みたいなのの事?
612デフォルトの名無しさん:2011/02/13(日) 19:23:03
何か論点がずれてるような
>>609 が言ってるのは、御約束のイベント処理が決まってる話じゃねぇの?
だとしたら、Lisper は本質的に、*そんなものは好まない*
613デフォルトの名無しさん:2011/02/13(日) 19:27:33
ごめんなさい。難しいの分からなくて。。。
614デフォルトの名無しさん:2011/02/13(日) 20:26:06
>>613
中で何をやってるかって分かってれば lisp では別の簡単な方法がいくつでもある
lisp に限らず、コア部分はおそらく
(let ((event (wait-for-something))
(cond
((prop-p a-thing event) ...)
((prop-p another-thing event) ...)
...
てなことを、やってるんじゃね?
event を振り分けるやり方何てのは、いくらでもあるだろ?
そんなわかりきったことならマクロ書けば何でもできるじゃん
615デフォルトの名無しさん:2011/02/13(日) 20:31:07
ごめん、一文抜けてた
> event を振り分けるやり方何てのは、いくらでもあるだろ?
だとしたら自分の定義でもかまわないし、
> そんなわかりきったことならマクロ書けば何でもできるじゃん

# ちなみに、Lisp の最悪の部分はこの考え方にあるんだけどね
# でも、自由度求めようと思うと必要悪
616デフォルトの名無しさん:2011/02/13(日) 20:34:07
>>614
ああごめん。>>613 は『論点がずれてる』って所に対するレスね。
>>609 はイベントループじゃなくてイベント伝播について聞きたいのかと思ったんだけどな。
その回答は『決まった方法は無い』で良いと思うよ。
617デフォルトの名無しさん:2011/02/13(日) 20:56:24
>>616
CL の場合
> イベント伝播

って、普通にコンディションの伝搬でええんちゃうの?

# unwind-protect が言語 coreで 規定されてるので throw しまくるし…
# condition メカニズムなんてこれないと成り立たないし…
# condition に比べても gcc の try ... catch 遅いし…
618デフォルトの名無しさん:2011/02/13(日) 21:08:16
話が噛み合ってないなw
自分は >>609 が求めてるのは condition じゃないと思うけど、
それなら何かと言うのは >>609 にもう少し詳しく聞いてみないと
何とも言えない。
619デフォルトの名無しさん:2011/02/13(日) 23:06:49
609です・・
たくさんレスありがとうございます。
LISPは数日前にはじめたばっかりなのでよくわからないですが
たぶん>>616『決まった方法は無い』けどどうとでもできる。なんでしょう。

C#で典型的な button1.Click += new EventHandler(button1_Click);
みたいなやつです。
メッセージループな方法じゃなくて言語で(delegate)処理するほう。
620デフォルトの名無しさん:2011/02/13(日) 23:15:28
>>619
そういう時は、コールバックとして実行したい処理を、クロージャにして渡すだけじゃないかな
621デフォルトの名無しさん:2011/02/14(月) 03:45:23
例としては、webフレームワークのルーティングとかも参考になるかな?
http://web4r.org/ja/tutorial3
これも、defpageというマクロを定義して
ソースの中にある example/blog/blog.lisp みたいに使ってる。
622デフォルトの名無しさん:2011/02/14(月) 10:52:22
なるほど。勉強不足でまだよく理解できないんですが
できるんですね。
ひとつ懸念が晴れました。
ありがとうございました。
623デフォルトの名無しさん:2011/02/14(月) 16:18:05
というか、Lisp以外が出来るようになったのがずっと遅い。
624デフォルトの名無しさん:2011/02/15(火) 12:52:17
CLOSのslot使ったイベントドリブンとか、CellsでCLOS拡張してractiveは、CLOS知らない身からすると、面倒くさいのではないか、と勝手に思ってる。
625デフォルトの名無しさん:2011/02/19(土) 21:11:57.78
>>621
おもしろそうだけどweblocksとどう違うの?

そういえばquicklispってclbuildから置き換わる野?
626デフォルトの名無しさん:2011/02/19(土) 21:48:06.60
>>625
継続ベースなのはWeblocksと同じ。記述の短さを最優先にしていて、
Arcを強く意識していたはず。リーダーマクロベースのテンプレート機能を持ってる。
永続化はElephant。開発者が日本人。開発は停止してる模様。

Quicklisp登場後は、clbuildはもう過去の遺物って印象。
Quicklispも完全には程遠いし、個人に強く依存してる、っていう弱点もあるんだけど。
それでも、深く考えずに(ql:quickload "foo")で良いのは便利過ぎる。
627デフォルトの名無しさん:2011/02/21(月) 14:50:17.88
thinlispを最近のclispで動かそうとしたけど動かなかった
どこに質問すればいいんだろ
comp.lang.lispとかってこういう質問するのダメなのかな
628デフォルトの名無しさん:2011/02/24(木) 15:42:40.74
weblocksのソースってなんでこんなわけわかんないの?
629デフォルトの名無しさん:2011/02/25(金) 16:03:43.43
maximaはcvsでうまく動いてるのに
なんでgitに変える必要あるんだ
630デフォルトの名無しさん:2011/02/26(土) 20:34:55.45
>>629 へ? git になっちゃうの?
631デフォルトの名無しさん:2011/03/06(日) 13:17:30.90
Movitzで動くEmacs(LiCE)のHPが見れなくなってたので
他に移動したのか探したのですが見つかりません。
どなたかご存知ではないですか?
632デフォルトの名無しさん:2011/03/06(日) 19:53:44.81
Visual StudioにLISPは入りましたか?^^
633デフォルトの名無しさん:2011/03/06(日) 19:58:02.30
今時 Lisp に対応してない IDE ってあるの?^^
634デフォルトの名無しさん:2011/03/06(日) 21:12:58.12
635デフォルトの名無しさん:2011/03/08(火) 14:44:34.93
>>634
おーっ!ありがとうございます。
636デフォルトの名無しさん:2011/03/09(水) 02:19:50.00
WindowsXPだけどLiCE入れ方わかんないやw
Movitzはすぐ出来たんだけど。
637デフォルトの名無しさん:2011/03/12(土) 20:04:28.25
Movitzって最近どうなん?すげー面白そうなんだけど
638デフォルトの名無しさん:2011/03/17(木) 17:11:23.39
Lispって人工知能言語みたいな事言われてますよね??
どんな特徴があってそう言われているのか知りたいです。
639デフォルトの名無しさん:2011/03/17(木) 17:43:58.76
代数的データ型のようなものがあると人工知能みたいなこといわれる
640デフォルトの名無しさん:2011/03/17(木) 17:55:55.15
その昔Lispが作られたころは、リストのような便利なデータ構造を簡単に使える言語が他になかったので、
人工知能を目的(のひとつ)としてLispが作られたからそう言われてる。
641デフォルトの名無しさん:2011/03/17(木) 18:11:25.75
数値計算は得意な言語はあっても、記号処理が得意な言語はそう無かったから
じゃないの
なにしろ同世代がFORTRANだとかCOBOLだとかなので、Lispはあらゆる意味で高級
すぎて比較にもならないけど、一番決定的なのはたぶんGCだと思う

まあ歴史的な話だよね
642デフォルトの名無しさん:2011/03/17(木) 18:47:52.85
Lisp が人工知能に向いているっていうよりも当時はその他の言語が人工知能記述に向いてなかった。
今ならその分野で Lisp が著しく有利というほどではない。
古くからの蓄積がある分は有利と言えなくもないけどさ。

Common Lisp とか Scheme とかはクセはあっても普通の汎用言語なので、
人工知能記述のための言語と思っているならそれは誤解だと言っておこう。
643デフォルトの名無しさん:2011/03/17(木) 19:20:07.14
>>639>>642 参考になります。
検索しても人工知能が何とかしか出てこなくて困っていました。

人工知能言語と言われていたのは、
単に、Lispが作られるまで人工知能に向いた言語が無かったからですか。
今は他にも向いている言語が色々あるからそうは言えなくなっていると……

すっきりしました。ありがとうございます。
644デフォルトの名無しさん:2011/03/17(木) 20:52:18.79
そもそも「人工知能」という用語を提唱したのがジョンマッカーシー御大本人だったりする
645デフォルトの名無しさん:2011/03/17(木) 23:58:19.39
>>643
>>639は参考にしないほうが良い。

http://en.wikipedia.org/wiki/SHRDLU
大昔最も有名だった人工知能プロジェクト。
MacLispで書いたMicroplannerで記述されていた。

Microplannerの実装者の一人が、SchemeのG. Sussman。
この後続いたロボット制御用言語開発がSchemeにつながった。

そして今MITではロボット制御の授業にPythonを使ってる。


646デフォルトの名無しさん:2011/03/18(金) 00:43:35.65
一瞬素で「サスマン? GじゃなくてJだろ」とか思った俺はもう駄目だ。
647デフォルトの名無しさん:2011/03/18(金) 08:54:34.23
歴史は権威主義を相対化するためにある
既に終わった権威を蒸し返すためではない
648デフォルトの名無しさん:2011/03/18(金) 10:55:50.91
>>647
> 歴史は権威主義を相対化するためにある

何も創りだしたことがない人の考え方だね。
過去の誕生の経緯を知ることは、非常に有益。
649デフォルトの名無しさん:2011/03/18(金) 11:43:54.90
>>648
人名、プロジェクト名、大学名を並べただけでは
経緯を知ることも何かを創りだすこともできない、と言っている
650デフォルトの名無しさん:2011/03/18(金) 18:24:09.79
>人名、プロジェクト名、大学名を並べただけでは
それだけ教えてもらえたら、自力で調べるに事足りるでしょ。
それとも何か、自分で調べる気は全然無いからおまえらもっと詳しく喋れ
とでも言いたいのか?

651デフォルトの名無しさん:2011/03/18(金) 20:50:53.09
>>647は何かが気に入らなかったんだろ

俺にはさっぱりわからないから
>>650もスルーしてやってくれ
652デフォルトの名無しさん:2011/03/23(水) 14:16:55.58
Lispはすごいと連発されてるわりに
使ってみるとperlの方がすごいことを再確認するからじゃないかな
653デフォルトの名無しさん:2011/03/23(水) 14:27:07.98
perlのごった煮感についてけねえよ〜。
キチガイか神しかつかえねんじゃねえかともっちまうよ。
654デフォルトの名無しさん:2011/03/24(木) 09:14:29.02
どんな言語も所詮は道具
活かすも殺すも君次第
655デフォルトの名無しさん:2011/03/24(木) 13:14:13.74
perlは出てきたばかりの頃はよく使ったよ、awkより使いやすかったから
でもLL言語の選択肢が増えた今は新たに使う意味ほとんど無いと思うぞ
Lispの方が継続して使った時の使い心地がいいのはIDE(slime含めて)のおかげと、過去の自分のコードの上に立脚して次が組める事だとおもうのだけどどう?
Perlだとその場の問題を解決する小さいスクリプトの方が多くない?
656デフォルトの名無しさん:2011/03/24(木) 13:39:42.52
Perlはシェルスクリプトの代わりとしてつかったり、
インストーラーの代わりとして使ったりいろいろだよな〜。

まあ小物っていえば小物がおおいのかもね。
657デフォルトの名無しさん:2011/03/24(木) 14:39:08.15
>>655
> Perlだとその場の問題を解決する小さいスクリプトの方が多くない?

CPANできてモジュールが豊富になった後しばらくは、そうでもなかったでしょ。
今はその分野はpythonに席を譲っているが。
658デフォルトの名無しさん:2011/03/24(木) 15:31:19.73
pythonはperlにはまだ遠い
659デフォルトの名無しさん:2011/03/25(金) 19:44:23.15
perlはフィルタ的なものにしか使ってないな
660デフォルトの名無しさん:2011/03/27(日) 08:17:15.39
おれも perl は正直なところ好きじゃないんだけどさ、
テキスト処理の容易さと現実的な速さは、まだ他の言語の追随を許さないと思う。
perl はいきなり書く。python は設計してから書く、という感じ。
Lisp は泥団子だから設計しながら書く。
661デフォルトの名無しさん:2011/03/27(日) 18:35:52.54
>>660
Perlはいきなり書いて2ヶ月後に修正しようとしてあきらめる
Pythonはその点後から修正効くけどスタートダッシュはPerlに勝てない
RubyもPythonと同じだけど実行速度が……
Lispは泥団子だから泥まみれになって遊んでたらできてたってかんじ

でどうせなら楽しいのが良いのでLispで書くと周りからメンテできねぇの苦情が……
662デフォルトの名無しさん:2011/03/27(日) 19:03:59.29
663デフォルトの名無しさん:2011/03/27(日) 19:50:00.62
664デフォルトの名無しさん:2011/03/28(月) 11:18:23.19
hunchenrootで作ったサイトを日本の携帯で閲覧できるのでしょうか?
racketが全然だめだったのであまり期待はしていないのですが
665デフォルトの名無しさん:2011/03/28(月) 13:58:22.93
日本の携帯ったって、各社各機種で事情が様々だと思うんだけど、要件は?
正直、質問が抽象的過ぎて、回答に困る。Apacheで携帯サイト作れますか、みたいな。

というか、そもそもHunchentootは単なるウェブサーバだよ。フレームワークじゃない。
テキストでもバイナリでも、どんな形式のデータでも好きなだけ送り放題だよ。

CL-WHOはXHTML MPに対応していますか、とか、キャリアや機種ごとに処理が分岐できる、
モバイル向けのフレームワークがありますか、とかなら明快な答えがあるけど。
666デフォルトの名無しさん:2011/03/28(月) 14:25:09.31
ちなみに、Racketの方は何がどう全然駄目だったの?
さらっとマニュアルを見た感じ、携帯サイトも普通に作れそうに見えるんだけど。
667デフォルトの名無しさん:2011/03/28(月) 23:17:22.36
>>664
文字コードのせいじゃないのか?
Webサーバの仕様でダメってのは理屈として合ってないからも少し情報だしてみそ
668デフォルトの名無しさん:2011/03/28(月) 23:30:38.72
公式サイト読み比べて、さらにTips探す
http://thinkit.co.jp/article/143/3
http://ke-tai.org/blog/2008/04/16/xhtml_tips/

あるいは、javaのライブラリあるからclojureと組み合わせるとか?
http://mobylet.seasar.org/
669デフォルトの名無しさん:2011/04/01(金) 22:54:50.98
みんなCLでどんなプログラム書いてるの?
670デフォルトの名無しさん:2011/04/02(土) 18:57:26.01
>>669
コンパイラ
671デフォルトの名無しさん:2011/04/05(火) 14:37:32.48
consセルのconsって何の略語なの?
672デフォルトの名無しさん:2011/04/05(火) 15:41:06.99
Concatenate Over Nil SEX
673デフォルトの名無しさん:2011/04/05(火) 15:45:53.33
高尚過ぎて何がなんだかw
674デフォルトの名無しさん:2011/04/05(火) 16:30:24.17
>>671
たしか construct
どこで見たか覚えてないけど、今調べてみるとWikipediaにこんな風に書いてあるから、多分あってる
> cons constructs (hence the name) memory objects
ttp://en.wikipedia.org/wiki/Cons
675デフォルトの名無しさん:2011/04/05(火) 16:52:29.11
>>674
なるほど、ありがとうございます。
676デフォルトの名無しさん:2011/04/05(火) 16:53:38.14
Lisp 1.0のProgrammer's Manualに
> The function consw (construct word) is ...
とある。アセンブラで記述したconsの下請関数。
ちなみにIBM 704のword。
677デフォルトの名無しさん:2011/04/05(火) 20:35:27.51
西日本も福島原発の放射能に曝される。

4/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
678デフォルトの名無しさん:2011/04/06(水) 15:20:34.40
下記のソースを読んでおります。

(defun fib (n)
(if (< n 2) 1
(+ (fib (1- n)) (fib (- n 2)))))

この中にあります (1- n) という表現がわかりません。
1-はSymbolなのか、それとも 1 - n なのか・・・。

いまいちよくわかりません。
よろしけれ解説をお願いいたします。
679デフォルトの名無しさん:2011/04/06(水) 15:39:41.44
680デフォルトの名無しさん:2011/04/06(水) 15:44:09.17
>>679
Functionでしたか、ありがとうございました。
681デフォルトの名無しさん:2011/04/06(水) 22:01:17.06
>>677
なんだかな? ちゃんと読んだ?
ある時間にこれだけの量が放出されたとして、
「その日の気象条件でどれだけ拡散するか?」
って、シミュレーションなんだが
682デフォルトの名無しさん:2011/04/07(木) 01:11:07.98
頭のおかしいのにかまっちゃ駄目
683デフォルトの名無しさん:2011/04/07(木) 13:40:51.05
コンパクトなLISPの処理系を読んでおります。

#define IS_INT( n ) (((int)n & 0x00000001) != 0)
#define CELL2INT( e ) ((int)e >> 1)
#define INT2CELL( n ) ((cell)((n << 1) + 1))

上記のようなコードがあるのですが、整数の有効な桁は符号付31bitとかんがえてよいのでしょうか?
また右シフトは処理系によって違うような記述がちえらほらありますが、
符号付整数を右シフトしても符号があるばあいは補完されるとかんがえていのでしょうか?
684デフォルトの名無しさん:2011/04/07(木) 14:26:37.91
C言語の仕様書も読もう
685デフォルトの名無しさん:2011/04/08(金) 12:44:21.90
一昨日から LISP で CGI を作ってみたくて sbcl 1.0.47 を使い始めました。
HTTP サーバーは lighttpd 1.4.28 で OS は Linux/Ubuntu 8.04 です。

文字セット UTF-8 の自作スクリプトを端末から実行すると問題なく動くのですが、
CGI として実行すると (format t "はろう わーるど") や (set 'x "はろう わーるど") 等
日本語を扱うところで止まって、以降の処理が行われません。

「sbcl cgi 日本語」でググっても解決できる情報を見つけられませんでした。
スレ違いの原因かも知れませんが、CGI で日本語を扱えるようにするには
どうすれば良いか教えていただけませんでしょうか。
686デフォルトの名無しさん:2011/04/08(金) 13:09:17.62
CGIヘッダを吐いてないとか?
とりあえずその自作スクリプトを晒さなきゃ
687デフォルトの名無しさん:2011/04/08(金) 14:31:14.37
>>685
> 日本語を扱うところで止まって、以降の処理が行われません。

kwsk
688デフォルトの名無しさん:2011/04/08(金) 16:56:46.10
>>685
SBCLみたいなでっかい処理系でCGIだとprocess起動だけでマシン負荷高いからfastcgi使うかhanchentootとか使う方が良いよ
CGIにこだわるならCLISPとかの方が起動軽いのでそっちにするのでもいい
689デフォルトの名無しさん:2011/04/08(金) 17:22:21.44
>>686
http://ideone.com/x0fOy

スクリプト: 上記 URL の上の方の「source code」
端末での実行結果: 上記 URL の下の方の「output」

CGI での実行結果(ブラウザからページのソースを表示。タグの括弧を全角に書き換え。)
<html><head><title>lisp-cgi-hello</title></head><body>
Hello, World<br />

>>687
つまり「スクリプトの7行目以降が実行されていないように見える」ということです。

ちなみに 7 〜 9 行をコメントアウトして CGI を実行すると
Good-bye, World<br />
</body></html>
も出力されます。

レス、ありがとうございます。
690デフォルトの名無しさん:2011/04/08(金) 18:45:53.83
Shift JISで保存してんじゃねーだろうな。
ーは二バイト目が0x5b('[')だが。
691デフォルトの名無しさん:2011/04/08(金) 20:49:30.12
反応ないがな…
スクリプトをUTF-8で保存しなおせ!
692デフォルトの名無しさん:2011/04/08(金) 20:59:55.32
clisp 2.42 でも sbcl 1.0.47 と同じ結果(CGI, 端末共)になりました。
スクリプトの #! を外してもやはり同じ。
C、Python、Ruby で作った同等のプログラムは問題なく動きます。

   (1) スクリプトの書き方
   (2) LISP(clisp,sbcl) を起動する HTTP サーバーの設定

のどちらかが悪いのでしょうが、LISP は途中まで実行されているので
(2) は考えにくい。

>>690
間違いなく UTF-8 (BOMなし)です。Shift JIS だと端末からの実行でエラーになります。
また、テキストエディタ gedit 2.22.3 も UTF-8 だと判別しています。
1バイト目0x23(#)、2バイト目0x21(!) です。ファイル中に 0x5b のバイトは
含まれてないはずです。

> ーは二バイト目が0x5b('[')だが。
この「ー」はどういう意味でしょうか? なんかココにヒントがあるような気がする。
693デフォルトの名無しさん:2011/04/08(金) 21:21:16.54
libhttpdはCGIスクリプトのstderrの出力を取得できないのかい?
694デフォルトの名無しさん:2011/04/08(金) 22:01:40.93
clispはencodingが怪しいな。 http://www.clisp.org/impnotes/encoding.html ここら辺を参考に、端末実行時とhttpd経由実行時の設定の違いとか調べてみると良いかも。 sbclは知らん
695デフォルトの名無しさん:2011/04/08(金) 23:27:05.79
なんだろな?と思って、手元のshで実行してみたら、動かなかった…。
でもいろいろエラーが出たから、env LANG=ja_JP.UTF-8 したら動いた。
自分は未だに LANG=ja_JP.eucJP なんだが、これがマズかったらしい。
lighttpd のCGI 実行環境の LANG が UTF-8 じゃないんじゃないかな?とエスパー。
もしそうなら、#!/usr/bin/env .... と書くのは、、邪道かな。
696デフォルトの名無しさん:2011/04/09(土) 00:48:10.94
実践common lispの第11章コレクションについての質問です
正誤表が見当たらないので、ここで伺います

11.2 特殊ベクタの説明(p. 125)で
>"foo"のような文字列リテラルは、#()シンタックスによるベクタのリテラルと似ている。
>固定サイズであり、変更を加えてはならない。
>ただしMAKE-ARRAYに別のキーワード引数 :element-typeを指定することで、サイズの変更ができる文字列を作れる。

最後の:element-typeは:adjustableの誤記でしょうか?
697デフォルトの名無しさん:2011/04/09(土) 00:57:43.92
>>693
HTTPステータスコードによって出力するページを変えることはできるのですが、
例外出力を捕らえることができるのか、まだわかりません。

lighttpd はデーモン化するので端末から起動してもエラーメッセージを吐いて
くれない、error.log にも痕跡はなく access.log もHTTPステータスコードが 200 で
情報が得られない、ので Ruby の WEBrick ライブラリを使った即席の
HTTPサーバーを端末から起動したところ

* sbcl の場合
unhandled SB-INT:STREAM-DECODING-ERROR in thread #<SB-THREAD:THREAD
"initial thread" RUNNING
{AA93BD9}>:
decoding error on stream
#<SB-SYS:FD-STREAM
for "file /media/datum-ext3/local/lib/lisp/tests/lisp-cgi-hello.lisp"
{AA95C19}>
(:EXTERNAL-FORMAT :ASCII):
the octet sequence (227) cannot be decoded.
(以下省略)

* clisp の場合
*** - invalid byte #xE3 in CHARSET:ASCII conversion

のように、端末から CGI スクリプトを起動したときには出なかったエラーメッセージが
得られました。エラーメッセージの意味を充分理解できてないと思いますが
>>694 のご指摘の通りのようです。http://www.clisp.org/impnotes/encoding.html
内容はさっぱりわからんのですが、よく読んで解決したいと思います。

ご助言くださった皆様、ありがとうございました。
698デフォルトの名無しさん:2011/04/09(土) 10:41:13.19
>>696
正誤表あるんだけど、spamerにやられてる。正誤表のHistoryからどうぞ。
そこの部分は載ってないけど。

ttp://pcl.lispuser.net/

誤記で良いと思う。実物持ってないから原著参照したけど、原著も間違ってるみたい。

ttp://www.gigamonkeys.com/book/collections.html

誤記して、さらに誤記したものの解説が続いちゃって、訳わかんなくなってる。
699695:2011/04/10(日) 01:01:16.51
>>697
スルーされてしまった…。 orz
そのエラーとほぼ同じエラーが手元で出たから、LANGをUTF-8にしたら解決したよ、って意味だったんだけどな…。
700697:2011/04/10(日) 02:13:55.62
>>699
もうしわけありません。
ご指摘の LANG=ja_JP.UTF-8 で解決できました。
clisp でも LANG=ja_JP.UTF-8 で問題なく動きました。
また sb-impl::*default-external-format* の値(?)が

  端末での実行で UTF-8
CGI での実行で ANSI_X3.4-1968

だったので間違いないのですが、できればスクリプト内から
標準出力への文字セット変更をやってみたかったので
>>694 (clispの情報)を参考にして色々試していました。
今のところできてません。結局 LANG=ja_JP.UTF-8 で
使ってます。以下、続きます。
701697:2011/04/10(日) 02:15:47.43
(1) >>699 の #!/usr/bin/env .... を使う
  #!/usr/bin/env LANG=ja_JP /usr/local/bin/sbcl --script
  ( 以下省略 LISP スクリプト )
(2) sh スクリプトに LISP スクリプトを埋め込む
  #!/bin/sh
  LANG=ja_JP.UTF-8
  export LANG
  /usr/local/bin/sbcl --noinform --noprint --no-userinit --disable-ldb <<EOT
  ( 中略 LISP スクリプト )
  EOT
(3) sh スクリプトを呼んで、さらに LISP スクリプトを呼ぶ
  #!/bin/sh
  LANG=ja_JP.UTF-8
  export LANG
  /usr/local/bin/sbcl --script ほげほげ.lisp
(4)
  lighttpd の設定
    setenv.add-environment = ( "LANG" => "ja_JP.UTF-8" )
  LISP スクリプト
    #!/usr/local/bin/sbcl --script
    ( 以下省略 LISP スクリプト )

(1) は 「#! のコマンドは引数を一つしか扱えない」ので、できませんでした。
(2) (3) (4) は正常に動作しました。
ただ >>688 での助言に従って mod_fastcgi を使うことを考えると
lighttpd と LISP インタプリタの間に sh が入らない方が良いと思い
今は (4) で動かしてます。しかし、
  http://e.tir.jp/wiliki?lighttpd
  lighttpd では mod_fastcgi と setenv.add-environment は相性が悪い
とのことなので、今後は (3) を使うかもしれません。

スレ違いな内容になってすいませんでした。以上です。
702デフォルトの名無しさん:2011/04/10(日) 09:43:45.30
>>698
ありがとうございます。
その正誤表のページはspamにやられたものだったのですね。
納得しました。
703 忍法帖【Lv=25,xxxPT】 :2011/04/19(火) 21:25:16.15
Lispスレが落ちてる
704デフォルトの名無しさん:2011/04/19(火) 21:27:17.26
Lisp Schemeのスレかい?
1000までいっただけじゃないの??
705 忍法帖【Lv=25,xxxPT】 :2011/04/19(火) 21:29:42.45
Lv足りてると思ったのになぜか次スレ建てれない
↓こんな感じで誰かお願い

Lisp Scheme Part32

Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part31
http://hibari.2ch.net/test/read.cgi/tech/1283507452/

■テンプレ
http://wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その7【質問よろず】
http://hibari.2ch.net/test/read.cgi/tech/1270370267/
706デフォルトの名無しさん:2011/04/20(水) 02:05:36.58
そろそろ Scheme 単体のスレを立ててみても良いかもね
707デフォルトの名無しさん:2011/04/20(水) 12:04:17.11
LISP総合で声優ネタもOKにしたら
落ちないじゃね
708デフォルトの名無しさん:2011/04/20(水) 12:14:02.63
980越えると、一日後ぐらいに落ちる
985だった。
709デフォルトの名無しさん:2011/04/20(水) 13:25:07.51
磯野〜、校門LISPしようぜ!
710デフォルトの名無しさん:2011/04/20(水) 14:16:43.85
racketがドキュメント充実させてきたあたりで
schemeのわからないことは検索したら大概わかるようになったのか
711デフォルトの名無しさん:2011/04/20(水) 14:20:13.77
プログラミング言語ランキング Javaが9ヶ月連続首位
http://hatsukari.2ch.net/test/read.cgi/news/1303187068/

lispは圏外
712デフォルトの名無しさん:2011/04/20(水) 14:26:33.40
TBSのランク王国のコミックtop10を持って
手塚治虫スレに凸するような真似はやめろ
713デフォルトの名無しさん:2011/04/20(水) 20:09:28.49
手塚はないだろ
福井英一か一峰大二あたりじゃね?
714 忍法帖【Lv=4,xxxP】 :2011/04/20(水) 20:38:49.26
今日における影響力を鑑みても比較的適切なチョイスだと思ったのに

ところでLisp Schemeスレはいまだ立たず
LV制限だけならまだしも理由の不明な制限までかかるとお手上げだ
715デフォルトの名無しさん:2011/04/20(水) 20:42:10.59
>>705
立てられたみたい。
誰かテンプレ頼む。
716デフォルトの名無しさん:2011/04/20(水) 20:46:26.79
おつおつ
あれ以上テンプレないよ
717デフォルトの名無しさん:2011/04/21(木) 12:04:31.94
>>712-713
山崎あつし
718デフォルトの名無しさん:2011/04/23(土) 01:00:30.38
Common Lispのセオリー的に3つの値を返す関数を作る場合リストで返すのと多値で返すのどちらがいいのでしょうか?
システムの実装にもよるかもしれないとは思うのですがなんかconsいっぱいするの良くないみたいな文献みちゃうと悩んでしまうのです。
719デフォルトの名無しさん:2011/04/23(土) 01:57:46.25
cons するっていうのはコンスセルをアロケートする (新しくオブジェクトを生成する) ってこと。
いくつかの値を返すって処理なら、返されたリストから値を取り出したらすぐにコンスセルは要らなくなる。
ほんの一瞬の処理のためにゴミを作って、その分だけ余分に GC が働くのはもったいない。
もちろん、多値の実装にもよると思うけど、一般的には多値を使うんじゃないかな。

でも、そんなのを考えるのは実際にネックになっていることがわかってからでいい。
最初は自分にやりやすいスタイルで書けばいいと思うよ。
そういう試行錯誤がやりやすいのが Lisp 系言語の特徴なんだから、書く前に悩むことない。
720デフォルトの名無しさん:2011/04/23(土) 09:30:18.27
新聞のテレビ欄のBSフジのところに「1:00 LISP」とあって
ちょっとびっくりした
721デフォルトの名無しさん:2011/04/23(土) 11:27:19.57
LISP なのに行番号が振ってあるのかw
722デフォルトの名無しさん:2011/04/23(土) 16:50:49.38
>>718
ケースバイケース。consを避けるべき、というのは、>>719にもあるけど、性能の事情。
メモリアロケートって、処理が凄い重いんだよ。だから、何百万回とか繰り返す部分で
無駄にconsしてるとボトルネックになる。数十回とかなら全然問題にもならないけど。

迷ったときは、その部分を関数かマクロで抽象化しちゃうと良い。Lispのセオリー。
そうすれば、後でリストと多値を切り替えるときに他の部分を書き換えなくて済むし。
逆に言えば、抽象化してないと、multiple-value-bindに書き換えるのは面倒。
そもそも、multiple-value-bindって名前が、無駄に長くて面d(ry
723デフォルトの名無しさん:2011/04/23(土) 18:07:04.28
>>719,722
なるほど、理解しましたmultiple-value-bindの値もアロケートの一種だけどリストで返すと少なくとも3つのゴミになるってことなのですね
724デフォルトの名無しさん:2011/04/23(土) 18:21:44.82
まともな実装は多値はスタック上で扱う。ゴミはでない。
725デフォルトの名無しさん:2011/04/23(土) 20:35:25.98
>>723
>>724も指摘しているように、multiple-value-bindでは普通アロケーションは起きない。
timeで調べてみると良いよ。loopとかで繰り返す回数を増やしても、
メモリアロケートする量変わらないだろうから。

ちなみにCCL 1.6の場合だと、multiple-value-callに展開されるようになっていて、
関数呼び出しになる。つまり、引数として処理される。
726デフォルトの名無しさん:2011/04/24(日) 13:52:06.13
>>721
lispを呼び出す側のコードだと考えれば…w
727デフォルトの名無しさん:2011/04/24(日) 23:26:37.26
> multiple-value-bindって名前が、無駄に長くて
CLTLの範囲内でもっと長いのなかったっけ?

728デフォルトの名無しさん:2011/04/25(月) 02:08:47.21
長いシンボルならもう盛りだくさんだよ。

思い付くのだけでも、define-compiler-macroとかwith-hash-table-iteratorとか、
internal-time-units-per-secondとかな!
729デフォルトの名無しさん:2011/04/25(月) 03:10:25.81
パッケージ内に名前閉じ込められるのに長いシンボルがあるのって何が理由なんだろう
いや無駄に短いとワケワカメってのはわかるんだけどさ
730デフォルトの名無しさん:2011/04/25(月) 04:33:09.40
そのうちひとつひとつのシンボルが文章になるんじゃね
731デフォルトの名無しさん:2011/04/25(月) 05:12:35.34
入力するだけなら開発環境が補完してくれるから、
突っ走れるだけ突っ走ちゃったって感じがする。
自分でも、SLIMEで補完しないとやってられない。
たまに端末で作業するとタイピングで死にたくなる。

Haskellみたいに短過ぎるのとどっちがマシなのか。
732デフォルトの名無しさん:2011/04/25(月) 12:22:09.61
俺はそのくらい長いのが好き。
(不)定冠詞はともかく複数形はしっかりして欲しい。
733デフォルトの名無しさん:2011/04/26(火) 18:10:50.43
boostでは複数形のものも単数で書けってルールがある
734デフォルトの名無しさん:2011/04/26(火) 18:31:57.19
最近そっちのほうが多いね。俺は複数形の方が好きだけど。
735デフォルトの名無しさん:2011/04/27(水) 17:44:10.39
独眼竜政宗
736デフォルトの名無しさん:2011/04/29(金) 22:16:02.88
長くてもいいけど、CL は一部統一されてないのが嫌。
clrhash => clear-hash とか
737デフォルトの名無しさん:2011/04/30(土) 01:00:57.27
名前の奇麗な CL が欲しいな
738デフォルトの名無しさん:2011/04/30(土) 01:13:09.05
長い関数orマクロ名トップ20
(let (syms)
(do-external-symbols (s :cl)
(when (fboundp s) (push `(,(length (symbol-name s)) ,s) syms)))
(format t "~20{~{~2D : ~A~}~%~}" (sort syms #'> :key #'car)))

使った事あるのset-dispatch-macro-characterしかねえ
739デフォルトの名無しさん:2011/04/30(土) 07:59:16.95
>>738
GJ!
740デフォルトの名無しさん:2011/05/06(金) 23:59:10.60
SLIMEから長時間のバッチを実行した時の経過が知りたくて、
ループ中にformatを仕込んだのですが、
逐次出力されず、バッチが終了したタイミングで一括表示されてしまいます。

これってSLIMEの仕様でしょうか?
741デフォルトの名無しさん:2011/05/07(土) 17:50:51.63
>>740
syslogに出すようにしちゃだめ?
あるいはSLIMEもInferior-lispじゃなくSLIME-CONNET経由でなら別のプロセスのLispになるからそっちのコンソールに出せるのでそれにしちゃえば?
742デフォルトの名無しさん:2011/05/07(土) 20:17:49.74
SLIMEっていうよりLISP処理系の方のterminal以外での出力の仕様じゃないかな。
force-output挟めばどの処理系でもうまくいくと思う。
(dotimes (i 10) (print i) (force-output) (sleep 1))
743デフォルトの名無しさん:2011/05/07(土) 23:04:56.07
バッファ付き(あるいは)バッファリングI/Oを勉強しといたほうがいいぜ
744デフォルトの名無しさん:2011/05/08(日) 03:52:31.53
ありゃ、Emacsのバージョンアップついでに、slime, auto-complete, ac-slimeを全部最新にしたらslimeでauto-completeが聞かなくなってしもたー。こんな時間になにやってんだかー。
745デフォルトの名無しさん:2011/05/08(日) 12:59:05.79
>>741-743
ありがとうございます!

force-outputでできました。
今までこの関数が何のためにあるのかわからなかったんですが、こういう時に使うのですね。
746デフォルトの名無しさん:2011/05/08(日) 17:54:04.70
SchemeやっててCLにも手をだしてみたんですが、ローカルな変数ってlet以外じゃ定義できないんですか?
値だけならletで十分なんですが、ローカルな関数を定義したい場合に便利な方法はあるのでしょうか。

Schemeだと(define (foo) (define (foo-aux) ...) <BODY>)って感じで関数内で閉じた関数を定義できますが、
同じようなことをCLでしようとしたら(defun foo () (let (foo-aux (lambda () ...)) <BODY>))とし、
<BODY>内では(funcall foo-aux)などとしなければならないのでしょうか?
747746:2011/05/08(日) 17:58:40.10
と、labelsなんてものがあるのですね。失礼しました。
748デフォルトの名無しさん:2011/05/08(日) 20:45:44.71
&auxでローカル変数が定義できるよ
(defun hoge (&aux (local 0))
(incf local))
ローカルな関数はlabelsでもいいけど、fletでもできるよ
でもfletだと再帰できないので注意してね
749746:2011/05/08(日) 21:25:28.13
>>748ありがとうございます。
Schemeだと関数内では呼び出し元の環境に新しく変数/関数が定義ないようになってるので、
てっきりCLでもローカル変数/関数がデフォルトだと思ってました。
Schemeじゃグローバル変数の初期化とかをinit-xxxみたいな手続き内にまとめることができなかったと思うのですが、
CLならできるんですね。
750デフォルトの名無しさん:2011/05/09(月) 00:23:46.22
Schemeから入った人にありがちなパターン。

* internal defineに染まっているのでlabelsを多用する
* loopやiterateではなく、labelsでの再帰を選ぶ
* keywordでなく普通のsymbolを返してはまる
* lambdaに#'を付けても付けなくてもいいことに混乱する
* 自分の知らない機能満載の無駄に複雑なformatにビビる
751デフォルトの名無しさん:2011/05/09(月) 10:08:33.71
日本語が安心してつかえるのはsbclよりclispなんでしょうか?
abclも実質javaだから問題ない?
752デフォルトの名無しさん:2011/05/09(月) 11:18:45.13
Windowsでなければどっちでも問題ない。
753デフォルトの名無しさん:2011/05/09(月) 11:36:06.47
ac-slimeうごかねー。
754デフォルトの名無しさん:2011/05/09(月) 16:08:09.77
CommonLispで利用出来る、標準関数を網羅的に扱っているサイトはございますでしょうか?
日本語のサイトですとうれしいです。
755デフォルトの名無しさん:2011/05/09(月) 19:33:05.47
英語ならHyperSpecがあるんだがアレじゃだめなの?
756デフォルトの名無しさん:2011/05/09(月) 21:26:43.64
>>750
そういうSchemerのためのCommon Lispガイドがまとまってたら凄く助かる。

今はPracticalCommonLispを読んでるから、序盤でkeywordが出てきて少し面食らった。
(eq ':a :a) => Tだし(getf (:a 1 'b 2) 'b) => 2になるしで、まだkeywordが何か分かってない。
(keywordp 'a) => NILから、:付きのシンボルが何か特別扱いされてるんだなーとしか分かってない。
あと、Schemeじゃマクロはdefine-syntaxでやってたから、defmacroに少しビビった。
defmacroの方がS式->S式の関数だから面白いと感じる。
757デフォルトの名無しさん:2011/05/09(月) 21:48:08.15
>>756
750じゃないけど。
キーワードは KEYWORD パッケージのシンボルだね。
CL-USER> (symbol-package '+)
#<PACKAGE "COMMON-LISP">
CL-USER> (symbol-package :+)
#<PACKAGE "KEYWORD">
「パッケージ:シンボル」のパッケージ部分が省略されてる形

でも Schemer のためにはパッケージの説明が要るんだよな
758デフォルトの名無しさん:2011/05/09(月) 22:52:42.44
Schemeはプリミティブというか純粋すぎる
CLは巨大すぎる

で、あいかわらずLisp1.xが好きなのでemacs lispで遊んでる自分
759756:2011/05/09(月) 23:08:10.48
>>757
パッケージ!そういうのもあるのか!
ttp://www.komaba.utmc.or.jp/~flatline/onlispjhtml/packages.html
をざっと読んでみたけど、けっこう複雑だなあ。一番下でsymbolを使うと期待通りの動作をしない例があるけど、それがkeywordを使う理由、でいいのよね?

で、REPLとかで'aって入力すると、実際には*package*にあるパッケージ内で、普通だったら'common-lisp-user::a
が生成される、のかな?画面に表示されるときにはパッケージが省略されてる?
で、頭に:つけると必ずkeywordパッケージにinternするってのはお約束(規格)なのね?

上のuriの項だと`in-package'で新しいパッケージを作ることができるってあるけど、
SBCLじゃ`defpackage'でパッケージを宣言しないといけないのね。

なんかごちゃごちゃしてきたぞ…
760デフォルトの名無しさん:2011/05/09(月) 23:20:15.64
>>759
その理解で合ってると思う
scheme でも Gauche は CLer が開発してるから keyword は特別にあつかってるっぽい
761デフォルトの名無しさん:2011/05/09(月) 23:22:00.89
> in-packageを呼ぶことで新しいパッケージに「入ることができる」
だから作れるとは書いてない。 defpackageで作っておかなきゃだめだよ
762デフォルトの名無しさん:2011/05/09(月) 23:23:59.12
ああ、「新しい」とか書いてあるのが紛らわしいね。
763デフォルトの名無しさん:2011/05/09(月) 23:27:13.57
keywordには、自分自身が束縛されているとか、
定数変数になるとか他にも特徴がある。
764デフォルトの名無しさん:2011/05/09(月) 23:48:51.89
>>761作れるってかいてあるじゃないですか!やだー!

訳文の方には
>in-packageを呼ぶことで新しいパッケージに入ることができる.存在していないなら必要に応じて新たに作られる
ってあって、けど原文の方(ttp://lib.store.yahoo.net/lib/paulgraham/onlisp.pdf)には
>By calling in-package we can switch to a new package, creating it if necessary.
って書いてある。we create the new package if nesessaryっていう意味かな。不覚にも現在分詞でググってしまった。
この文節の後に`defpackage'の説明が出てくるから余計に混乱してしまいました。
765761:2011/05/10(火) 00:16:25.07
>>764
ごめん右の方まで目が行かなかったw でも原文の方でも、無ければ作られるって感じだね。
CLTL2見ると
ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node118.html#SECTION001570000000000000000
[Function] in-package ってとこがpgの説明と合ってて
[Macro] in-package ってとこがふつうの処理系の実装と同じに見える。
どういうことなの…教えて偉い人
766デフォルトの名無しさん:2011/05/10(火) 00:22:35.25
>>765
CLtL1のときは作るんだけど、CLtL2で作らないように変更されたってことかと。
767デフォルトの名無しさん:2011/05/10(火) 08:58:56.20
11.7の最初の説明と11.9の例で詳しく説明してあります。
もちろんCLtL2の方です。
768デフォルトの名無しさん:2011/05/10(火) 16:26:09.72
maxima(sbcl)で数値計算したら強烈に遅い
sbclというよりもmaximaの問題なのかな
769デフォルトの名無しさん:2011/05/11(水) 11:25:06.86
>>754
ttp://xyzzy.s53.xrea.com/wiki/?%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9

xyzzyのだけど、ある程度役に立つとは思う。HyperSpecかCLtL2読んだ方が良いけど。
770デフォルトの名無しさん:2011/05/11(水) 11:43:37.41
>>751
Unicodeの範囲なら、ECLを除いて、ほとんどの処理系で実用的に使える。
逆に言えば、Unicodeに収録されていない文字は、ほとんどの処理系で使えない。
Common LispはCode Set Dependentなので。

ttp://cl.cddddr.org/index.cgi?%bd%e8%cd%fd%b7%cf%3a%c6%fc%cb%dc%b8%ec%a4%ce%b0%b7%a4%a4

ただ、ISO-2022-JPとかも使えないといけないなら、CLISPとJVM系しかない。
ないんだけど、ぶっちゃけた話、対応してなくてもFFIでiconv呼べば済む話だと思う。
771デフォルトの名無しさん:2011/05/11(水) 12:01:01.90
TRONコードな処理系も存在しうるわけか
需要や意欲はともかく
772デフォルトの名無しさん:2011/05/11(水) 12:15:58.15
>>768
> maxima(sbcl)で数値計算
をするもんじゃないだろ。数式処理をするのならまだしも
773デフォルトの名無しさん:2011/05/11(水) 14:37:50.31
maximaのコードはlistをvectorに置き換えれば
結構速い
774デフォルトの名無しさん:2011/05/11(水) 14:51:27.48
そんな簡単におきかえられるの!?
775デフォルトの名無しさん:2011/05/11(水) 14:53:35.05
自前マクロで展開すればいいんだよ
776デフォルトの名無しさん:2011/05/12(木) 12:46:11.23
32bit FreeBSDでmaximaをsbclで使うと
Heap使いきったというエラーでとまる
clispでは問題なく動くけど遅い
777デフォルトの名無しさん:2011/05/12(木) 22:58:34.00
> 32bit FreeBSDで...sbcl
何て無謀な
778デフォルトの名無しさん:2011/05/13(金) 11:27:21.31
>>777
SBCLってそういうものなの?
779デフォルトの名無しさん:2011/05/13(金) 11:45:38.00
SBCLはLinuxに注力してる印象がある。

Windowsのスレッドサポートにやたら手間取っていたり、
Mac OSとかでも利用に問題があったりするのを見てると、
開発者はその辺興味ないんだな、とは思う。
780デフォルトの名無しさん:2011/05/13(金) 11:48:43.59
つまりMac OSやBSDで速度が欲しい場合はどれ使えばいいのだろう
ECL?
CMUCL?
781デフォルトの名無しさん:2011/05/13(金) 12:41:51.32
782デフォルトの名無しさん:2011/05/13(金) 16:43:00.19
>>780
SBCLならOSXで充分に速度出せる。
どんなことするかにもよるが。
783デフォルトの名無しさん:2011/05/13(金) 17:03:01.45
macportsのsbclも頻繁に変になる
下手にアップデートできない危険な存在
784デフォルトの名無しさん:2011/05/13(金) 17:45:49.24
lispってCLOS抜きで、引数の型による分岐ってできないの?
もしあるんなら、その機能の名前教えて。
785デフォルトの名無しさん:2011/05/13(金) 18:42:19.64
>>784
OOPの多態をやりたいってことかな?
786デフォルトの名無しさん:2011/05/13(金) 19:35:12.12
ただC++の特殊化みたいな分岐をやりたいだけ。
787デフォルトの名無しさん:2011/05/13(金) 19:38:32.07
>>784
typecase?
788デフォルトの名無しさん:2011/05/13(金) 20:26:39.25
>>787
できれば、制御文系のやりかたより、オーバーロード見たいに関数追加するだけでいいようなやりかたが
いいんだけど、typecaseを発展させるしかないのかなぁ。
789デフォルトの名無しさん:2011/05/13(金) 20:56:38.49
というか何で generic function じゃ駄目なの?
790デフォルトの名無しさん:2011/05/13(金) 21:03:53.31
>>789
んー。というか単に独立した機能があるかどうか知りたいだけなんだ。
generic functionと一枚岩で切り離せないというならそれで納得するつもり。
791デフォルトの名無しさん:2011/05/13(金) 21:05:59.61
もう一ついうと、ifを使わず分岐を書いてみたいってのがある。
cdrしてnilになったら再帰を止めるとか。
792デフォルトの名無しさん:2011/05/13(金) 23:32:25.65
loopのby句がよくわかりません

(loop for i in (list 1 2 3 4) by #'cdr collect i)
(loop for i in (list 1 2 3 4) by #'cddr collect i)
(loop for i in (list 1 2 3 4) by #'cdddr collect i)
(loop for i in (list 1 2 3 4) by #'cddddr collect i)

それぞれ (1 2 3 4) (1 3) (1 4) (1) が返るのですが、具体的にはどのようなことをしているのでしょうか?
793デフォルトの名無しさん:2011/05/13(金) 23:47:03.61
>>792
次の要素にアクセスするために使う関数をbyで指定する。

cdr => (1 2 3 4) (2 3 4) (3 4) (4) nil
cddr => (1 2 3 4) (3 4) nil
794デフォルトの名無しさん:2011/05/13(金) 23:49:12.57
ブックマークから発掘してきた。ここが分かりやすいと思う。

ttp://smpl.seesaa.net/article/29800843.html
795デフォルトの名無しさん:2011/05/14(土) 10:58:51.46
>>780
MAC は知らないけど AMD64 な FreeBSD だと SBCL 結構安定してるよ
ports からいれる場合 lutex きっとかないとまずいけど
796デフォルトの名無しさん:2011/05/14(土) 21:21:25.27
>>793-794
ありがとうございます。よく分かりました。
797デフォルトの名無しさん:2011/05/15(日) 04:12:25.26
slimeのREPLで戻り値の値が赤文字で表示されるんですが、これを変更するにはなんのfaceにセットすればいいんでしょう?
戻り値が多い時に、黒背景に赤文字が表示されると目がちかちかしてしますので可能ならば変更したいなと。
798デフォルトの名無しさん:2011/05/15(日) 08:19:34.49
http://www.emacswiki.org/emacs/face-list.el
で調べて。分からないことあれば、emacsスレ@UNIX板で。
799デフォルトの名無しさん:2011/05/15(日) 08:52:48.27
>>797
SLIMEを起動した状態で、M-x list-faces-displayするとfaceの一覧が出る。
そこのslime-*とかsldb-*とかがSLIME関係。

本題だけど、slime-repl-inputed-output-faceがREPLの戻り値のfaceだったと思う。
例えば、

(set-face-attribute 'slime-repl-inputed-output-face nil :foreground "green")

みたいにすると、緑になる。
800デフォルトの名無しさん:2011/05/15(日) 08:58:42.80
追記。ちなみに、list-faces-displayはEmacsに組み込みで入ってるから、
追加でインストールしなくても大丈夫。lisp/faces.elに収録されてる。
うろ覚えだけど、Emacs 20.3くらいの時代には既にあったような気がする。
801デフォルトの名無しさん:2011/05/15(日) 11:32:59.33
>>798-800
ありがとうございます!
おかげさまで目に優しい色に変更できました!!
802デフォルトの名無しさん:2011/05/16(月) 16:52:18.86
結局Common Lisp使うならlinuxが一番ということか
仮想マシンで入れるかな
803デフォルトの名無しさん:2011/05/16(月) 17:41:44.85
Linuxは大勢使ってるしね。開発者が使ってる環境はやっぱり充実する。
Clozure CLとかCorman LispとかUfasoft Common Lispみたいな例外はあるけど、少数派。

上で挙げたClozure CLなんかも、割と真面目にWindowsサポートしてるけど、
プロファイリングはMac OSとLinuxしか考慮してなかったりするし。
804デフォルトの名無しさん:2011/05/16(月) 18:06:24.12
FreeBSD好きなんだけどなあ
805デフォルトの名無しさん:2011/05/16(月) 18:08:50.59
Clozure CL って少数派なのか。。。
使ってないけど、成熟した、良い感じな雰囲気があるよね。
806デフォルトの名無しさん:2011/05/16(月) 18:21:59.91
>>804
そういうことはブログに(ry
807デフォルトの名無しさん:2011/05/16(月) 19:01:57.91
>>805
Clozure CL使ってる人が少ないっていうんじゃなくって、
Mac OSが優先される処理系が少数派って意味。誤解させたなら悪かった。
実際にはSBCL>>Clozure CL>CLISP>以下略って感じみたいだよ。

ttp://xach.livejournal.com/271794.html

CMUCLと同じくらいの歴史もあるし、使ってて良い処理系だと思う。
最適化こそSBCLに及ばないけど、機能面では充実してるし。
808デフォルトの名無しさん:2011/05/16(月) 19:39:13.71
Mac OS Xは実行形式がちょっと特殊なんで、
ネイティブバイナリを扱う処理系のポーティング/維持は結構面倒。
コンパイラとかメモリダンプとか。
809デフォルトの名無しさん:2011/05/16(月) 20:57:30.61
会社PCが64bit Win7だから、Lisp環境作るのに苦労してるわ・・・
810デフォルトの名無しさん:2011/05/16(月) 21:23:14.08
windowsで簡単にlispを使える導入ソフトでもあればいいのにね
linuxでの開発者がおおいせいか、windowsが軽視されている気がするよ
811デフォルトの名無しさん:2011/05/16(月) 21:32:01.24
つ virtualbox
812デフォルトの名無しさん:2011/05/16(月) 21:35:25.29
Lispboxェ…。

ttp://common-lisp.net/project/lispbox/

WindowsならCCL 1.6使えば良いじゃない。
付属のASDF-Install使うなら*features*に細工してリコンパイルしなきゃいけなかったけど、
今ならQuicklisp使うから、問題もなくなったし。1.5までのクリティカルなバグも修正されたし。
813デフォルトの名無しさん:2011/05/16(月) 21:44:23.06
>>811
そりゃあねえ……

>>812
そんなものがあったのか
知らなかったわ
早速手を出してみる
814デフォルトの名無しさん:2011/05/16(月) 22:24:27.60
>>808
OSXで言語環境とかになると、ややこしいことやるより
ぶっちゃけUNIX用のソースからコンパイルしたほうが楽だったりするね
バイナリパッケージあるやつならそれで良いんだけど
815デフォルトの名無しさん:2011/05/17(火) 09:11:44.22
>>814
thread 周りが pthread 実装のみに依存してればな
816デフォルトの名無しさん:2011/05/17(火) 10:52:52.17
>>814
>>808の言っている意味を理解してないと思われ

例えば比較的ポータビリティの高いGCL(旧KCL)でも、
ldの仕様が違うからコンパイルしたネイティブコードを扱う方法が変わる。
http://www.softwarepreservation.org/projects/LISP/kcl/paper/kcl-paper.pdf
の7, 8節。
817デフォルトの名無しさん:2011/05/17(火) 11:59:19.02
linux MacOS Windowsは誰かやりそうだけど
FreeBSDはやっぱり今後も放置されたままな予感
818デフォルトの名無しさん:2011/05/17(火) 12:16:24.03
freebsdを捨てましょう か
819デフォルトの名無しさん:2011/05/17(火) 12:37:45.89
Be free from FreeBSD
820デフォルトの名無しさん:2011/05/17(火) 16:13:26.39
Solarisも比較的多くの実行環境用意されてるけど、いまいちなのかな?
821デフォルトの名無しさん:2011/05/17(火) 20:59:26.11
>>817
sbcl-devel みてると結構やってるっぽい
つか、lutex 使わなきゃ、thread 実装も安定してるって
あれだけ言ってるのに
822デフォルトの名無しさん:2011/05/18(水) 00:07:36.97
>>820
CCLをSolaris(OpenIndiana)でしばらく使ってみようと思ってる。
823デフォルトの名無しさん:2011/05/18(水) 00:42:40.86
サードパーティライブラリの使いやすさを考えるとSBCL何だが、
Linux以外スレッド動かないのがいたいのー
824デフォルトの名無しさん:2011/05/18(水) 10:38:40.36
>>823
だからFreeBSDでもthreadは動くと何度言えば...
lutex使わなくてもthreadは動作してくれる
825デフォルトの名無しさん:2011/05/18(水) 15:47:11.11
>>823
Mac でもスレッド動くよ
826デフォルトの名無しさん:2011/05/18(水) 15:56:14.63
ついでに言えば、Windowsでもスレッドサポートブランチのマージについて、
昨年の暮から話が出てる。
827デフォルトの名無しさん:2011/05/19(木) 22:38:55.09
cl-ppcre で改行を置換したいんだけど、

\n

じゃだめ?上手くマッチしないお。
828デフォルトの名無しさん:2011/05/20(金) 00:22:09.76
>>827
(ql:quickload :cl-ppcre)

(defparameter *string* "a
b
c")

(ppcre:regex-replace-all "\\n" *string* " ")
;; => "a b c", T
829デフォルトの名無しさん:2011/05/20(金) 00:56:36.54
エスケープなしで\nとかを使いたい場合は、CL-INTERPOLとかを使えばできるはず。
ただ、CCLを使っている場合は、SLIMEでCL-INTERPOLが使えなかった気がするので注意。
スレッド作成時のリードテーブルの継承の仕組みの関係だったと思うけど、うろ覚え。

また、別解で、cl-irregsexpを使って

(cl-irregsexp:match-replace-all *string*
(#\newline " "))

みたいに読み易くもできるけど、こっちはドキュメント無しな、いつものJohn Fremlinクオリティ。
830デフォルトの名無しさん:2011/05/20(金) 01:00:58.21
>>827
ありがとうございます。
自分もそれでとりあえずは逃げましたが、かっこ悪くなっちゃいますよね。

>>829
ありがとうございます。
CLの弱点はやっぱりドキュメントですよねぇ。特に私みたいな初心者には。
ソース見ろって言われればそれまでなんですが・・・
831デフォルトの名無しさん:2011/05/20(金) 01:17:48.18
>>830
正規表現を文字列で渡すから仕方ない。この辺Emacsを連想するよね。
この辺を良きに計らえるのがリーダーマクロなので、気になるならCL-INTERPOLをどうぞ。

一応、cl-irregsexpはユニットテストのコードが付いてるので、推測しながら使うことは可能。
t/以下にある。というか、彼のコードは非常にトリッキーなことが多いので、正直読みたくない。
832デフォルトの名無しさん:2011/05/22(日) 08:13:43.36
今CLでGUIを使おうと思ったら何がいいの?
cl-xxxみたいな既存のライブラリのバインディング系と、
CLIMとかCELLOとかの、よりLISP的にGUIを扱えるものがあるみたいだって分かったのだけど、
後者で今アクティブなのはこれ、ってのはあるのかな?
できればCFFIでほとんどむき出しの他言語ライブラリより、もうちょっと綺麗にラッピングしてある方がいいなあと思ってるんだけど、
「今自分はこれでGUIプログラム書いてるよ!」ってのがあったら教えてくれると嬉しいです。
833デフォルトの名無しさん:2011/05/22(日) 22:56:35.96
GUIは情報すくないよね。
WEBじゃだめかい?aserve, hunchetoot, weblocksとよりどりみどり。

Clacksを使ってみたいけど、Tutorialがずっとメンテ中・・・
834デフォルトの名無しさん:2011/05/22(日) 23:11:35.38
CL-GTK2で
835uy:2011/05/23(月) 15:05:50.81
LispからWinAPIとDirectX使いたいです
836uy:2011/05/23(月) 17:25:58.09
やっぱいいや
837デフォルトの名無しさん:2011/05/23(月) 20:05:00.86
>>833
http://clacklisp.org/tutorial/

これのことなら、単に空っぽなだけな気がする。
838デフォルトの名無しさん:2011/05/24(火) 06:07:05.21
setに対するsetqのようにfsetに対するfsetqを書きました。
(fset 'my-plus2 '(lambda (n) (+ n 2)))を
(fsetq my-plus2 '(lambda (n) (+ n 2)))こう書けるようにする。

(defmacro fsetq (name lst)
`(fset ',name ,lst))
まずこう書きました。うまく動いたので、次はバッククオートではなくクオートで書いてみようと思いました。

(defmacro fsetq (name lst)
(list 'fset '(identity name) lst))
こう書いたのですが、うまく動きませんでした。nameが評価されるのが、スコープの外になるからでした。

すべきことはこれだと思いますが、どうすれば出来るのか分かりません。
・nameにはmy-plus2が入っている
・nameの中身を引き出し、それをquoteする

つまり`(',name)←これなのですが、これをバッククオートなしに実現するにはどうすれば良いのでしょうか?
emacs lispで書いています。
839デフォルトの名無しさん:2011/05/24(火) 08:18:52.37
>>838
なんでバッククオートを嫌うのかイミフ
(list 'quote name) かな?
840デフォルトの名無しさん:2011/05/24(火) 13:43:48.85
cl-ppcreで末尾マッチは$ではない?

PHPで書いたプログラムをLISPに移植してるんけど、
正規表現がことごとく動かない。
841デフォルトの名無しさん:2011/05/24(火) 13:56:15.58
cl-ppcreのマニュアルの*allow-quoting*とかのあたりの説明を参照すると良いかも。
842デフォルトの名無しさん:2011/05/24(火) 14:01:53.88
>>839
ああ!(list 'quote name)でうまくいきました。
あれこれ試したのですが、なんで分からなかったのだろう。
`をlistと'で置き換えられるのかどうか試していた所でした。
レスありがとうございました。
843デフォルトの名無しさん:2011/05/24(火) 14:07:52.36
cl-ppcreは罠ライブラリだから使うのヤメレ。
Perl互換の正規表現といってるが、まったく互換性ないから。
844デフォルトの名無しさん:2011/05/24(火) 14:23:16.98
>>840
他の言語で当たり前にできることがまともにできないのがLispのウリですし。

LISPはそういうマゾ環境下でのバッドノウハウと、
過去の歴史を懐古して楽しむ貴族の言語だ。

だからLISPは美しいとかよく紹介されてるだろ?
これは芸術であり実のあるものじゃないんだよ。
845デフォルトの名無しさん:2011/05/24(火) 15:13:14.02
そりゃそんなこと言って気取ってる内は何もできるようにはならないな
846デフォルトの名無しさん:2011/05/24(火) 15:24:02.11
だからLispは何もできないじゃんw
847デフォルトの名無しさん:2011/05/24(火) 15:28:22.30
そんなお前らにCojure
848デフォルトの名無しさん:2011/05/24(火) 15:38:24.22
cl-irregsexp使えって。
849デフォルトの名無しさん:2011/05/24(火) 15:45:24.57
iron-schemeって有料??
850デフォルトの名無しさん:2011/05/24(火) 15:51:24.50
>>832
ql見たらlambda-gtkなんてのが出てるね。
851デフォルトの名無しさん:2011/05/24(火) 15:53:46.31
>>840
cl-interpolは使ってる?

後、
http://www.cliki.net/regular%20expression
ここでもcl-irregsexpを最初にあげてあるっしょ。
852デフォルトの名無しさん:2011/05/24(火) 16:56:32.70
swankをリモートサーバに立てて、別マシンからslime-connectってできるのかな?

探してみると、sshでポートフォワーディングして接続してるケースは見かけるけど、
swankをlocalhost以外で待ち受けさせる方法はないように見えるけど。
853デフォルトの名無しさん:2011/05/24(火) 17:10:04.83
In swank.lisp,

この辺変えてみれば?
(defparameter *loopback-interface* "127.0.0.1")

(defun setup-server (port announce-fn style dont-close coding-system)
(declare (type function announce-fn))
(init-log-output)
(let* ((socket (create-socket *loopback-interface* port))
;;;略
854デフォルトの名無しさん:2011/05/24(火) 17:16:27.79
>>851
Windows+clozureで使ってるので、cl-interpolはコンパイル失敗して使えなかったので使ってませんでした。
VMのLinux+SBCLだと動いたので、こっちで動かすことにしてみます。

ありがとうございます。
855デフォルトの名無しさん:2011/05/24(火) 17:30:02.20
>>853
素晴らしい!できました!

ただリモートにすると、M-.のソース展開ができなくなっちゃうんですね。
動作確認用にとどめておきます。
856デフォルトの名無しさん:2011/05/24(火) 18:56:35.20
quicklispでライブラリ大量に読み込んだら、

# Test: return pathname
ok 15
ok 16
ok 17

みたいなメッセージが出るようになっちゃったんですが、
これって何ですか?
857デフォルトの名無しさん:2011/05/24(火) 23:59:33.15
丁寧なドキュメントが存在するCL-PPCREではまる相手にcl-irregsexp勧めるとか、
お前らどんだけサディストなんだよw
858デフォルトの名無しさん:2011/05/25(水) 00:10:02.97
>>856
何かの拍子に、どこかのライブラリのユニットテストでも実行してるんじゃないの?
grepで~/quicklisp以下を検索してみたらどうだろう。実害無いなら放置しといて良い気がする。
859デフォルトの名無しさん:2011/05/25(水) 00:18:19.72
860デフォルトの名無しさん:2011/05/25(水) 00:24:44.37
>>840
(ql:quickload "cl-ppcre")
(ppcre:scan "^abc$" "abc")
;; => 0, 3, #(), #()
(ppcre:scan "z$" "abcdefghijklmnopqrstuvwxyz")
;; => 25, 26, #(), #()
861デフォルトの名無しさん:2011/05/25(水) 01:13:53.41
書いた。網羅しても冗長っぽい気がする。

ttp://tips.lisp-users.org/common-lisp/index.cgi?CL-PPCRE
862デフォルトの名無しさん:2011/05/25(水) 03:13:16.85
ついでにcl-irregsexpの使用例も任せろー。バリバリ

http://tips.lisp-users.org/common-lisp/index.cgi?cl-irregsexp
863デフォルトの名無しさん:2011/05/25(水) 03:17:08.93
>>861
これも入れておいて。2回エスケープしないと駄目ってことに気付かず前にハマった。

乗数を取り出す
CL-USER> (cl-ppcre:register-groups-bind (foo) ("\\^([0-9]+)=" "2^10=1024") foo)
"10"

カッコ内の文字を取り出す
CL-USER> (cl-ppcre:register-groups-bind (foo) ("\\(([0-9]+)\\)$" "math(85)") foo)
"85"

864デフォルトの名無しさん:2011/05/25(水) 03:21:48.84
ごめん、乗数じゃなくて指数ね。
865デフォルトの名無しさん:2011/05/25(水) 03:43:41.74
>>863
追加した。サンクス。
866デフォルトの名無しさん:2011/05/25(水) 10:57:50.94
>>862
ナイスすぎる。
これ世界初のまともな解説文章じゃないかw
867デフォルトの名無しさん:2011/05/25(水) 17:40:53.74
>>861
分かりやすい!
868デフォルトの名無しさん:2011/05/25(水) 19:05:23.98
整形してコメントも付けたから、今度からCL-PPCREの使い方が分からんときは、>>861を読んでくれ。
例が足りんかったら自分で付け足すか、これを追加して、ってのを書いてくれ。
869デフォルトの名無しさん:2011/05/25(水) 20:02:57.84
pregexpなんてのもあるのね
ttp://evalwhen.com/pregexp/index.html
870デフォルトの名無しさん:2011/05/25(水) 20:21:19.95
CL-PPCREのAcknowledgementsによると、その辺の実装に強い影響受けたらしい。
871デフォルトの名無しさん:2011/05/25(水) 22:29:46.99
質問
lambdaって関数返すってのは解るんだけど。実態は何返してんの?
多分何らかのS式か、関数の実体を指す識別値(オブジェクト)なんだろうけどどんな形よ?
872デフォルトの名無しさん:2011/05/25(水) 23:05:57.28
CL-USER> (lambda (x) (+ x x))
#<Anonymous Function #x210372233F>

CL-USER> #'format
#<Compiled-function FORMAT #x10009114F>
873デフォルトの名無しさん:2011/05/25(水) 23:10:25.35
なるほどそうやって表示できたわけね。ありがとう。
874デフォルトの名無しさん:2011/05/26(木) 16:05:57.35
hunchentoot でサーバサイドでのセッションの取り扱いサンプルってどっかにないかな?
いまいち公式読んでてもよくわかんないんだよね。。。

やりたいのはサーバサイドで生成したリストをページをまたがって保持していきたいんですが。
875デフォルトの名無しさん:2011/05/26(木) 17:12:17.21
>>874

(start-sesisoin)してから
(setf (session-value :symbol ) assignvalue)
あとは (sesion-value :symbol)でアクセスできるから普通のWebプログラミングと変わらない
寿命とかは適宜ggってくれ
876デフォルトの名無しさん:2011/05/27(金) 00:42:44.23
>>875
さんく

create-sessionして、その戻り値を使うのかと勘違いしてた。
877デフォルトの名無しさん:2011/05/27(金) 01:38:59.18
paul grahamのansi common lisp本の質問です
翻訳本の 3.8ツリー(p.36)の「car部は右側下位ツリーを、cdr部は左側下位ツリーを示す。たとえばつぎのようなリストは……」
という説明に出てくる「左右」は、p.37の図とは逆では無いでしょうか?
878デフォルトの名無しさん:2011/05/30(月) 20:17:47.99
>>877
書籍に依存する質問だと、持っている人しか分からないから、
引用ということで、図だけ画像化してアップロードしたり、とかしないと、
回答付きにくいと思う。

んで、本題。amazonで本文検索してきたけど、そちらの考え通り誤植みたい。
原書のerrataには載ってなかったから、訳書だけの誤植の模様。
879デフォルトの名無しさん:2011/05/31(火) 12:49:45.91
atom pub のライブラリってないっぽいかな?
CLからブログに投稿したかったんだけど、Drakmaでごり押しするのか。。。
880デフォルトの名無しさん:2011/06/01(水) 00:21:49.71
CLikiとかGitHubにはないっぽい。

Bloggerなら、

ttp://code.google.com/p/cl-blogger/

とかあるけど。
881デフォルトの名無しさん:2011/06/01(水) 02:19:10.95
CL開発で一つのプログラムを複数ファイルに分割するのって、
defsystem で定義して、asdfで読み込むのが普通?
882デフォルトの名無しさん:2011/06/01(水) 06:51:09.49
>>881
普通。require/provideはANSIではdeprecatedだし、ASDFが事実上の標準。
Cでみんなmakeを使うみたいに、CLではみんなASDFを使う。そういうノリ。

ただ、ASDFを使わずに自分で管理することもでもできない訳じゃない。
各ファイルを全部自分でコンパイルした上で、読み込む順番に注意しながら、
loadで読み込んだって良い。
883デフォルトの名無しさん:2011/06/01(水) 15:01:30.39
requireなくなってしまうのか
884デフォルトの名無しさん:2011/06/01(水) 16:33:45.91
>>883
「なんどもなんどもなんどもなんども deplecated だと言ってるのに誰も従わない」
ってな事がどっかに書いてあった記憶がある
# んだが, どこで読んだっけ >自分
885デフォルトの名無しさん:2011/06/01(水) 20:37:59.15
ASDFはちとめんどくさいのがアレだ
ClojureのLeiningenみたくもちっと簡単なのないのだろうか
886デフォルトの名無しさん:2011/06/01(水) 21:32:54.15
>>885
quicklisp
887デフォルトの名無しさん:2011/06/02(木) 01:58:53.70
>>882
サンクス
888デフォルトの名無しさん:2011/06/02(木) 10:09:27.08
>>884
require /provide が deprecated って事は、
現状って、同様の機能の規格標準が無いってこと?

>>886
知らなかった quicklisp
asdf-install より、楽かな。

elpa といい、lisp 界隈の人も cpan 的なものに
目覚めたのかな?
889デフォルトの名無しさん:2011/06/02(木) 11:40:25.63
>>886
コレいいね
ASDFは何でもかんでもできるかわりに最初の手当がめんどいので苦手だったんよ
890デフォルトの名無しさん:2011/06/02(木) 11:51:09.49
CLerのrequire好きは異常。ASDFにまで対応させてるし。
というか、まだまだQuicklisp知らない人多いんだな。

ttp://cl.cddddr.org/index.cgi?ASDF
ttp://cl.cddddr.org/index.cgi?Quicklisp
ttp://modern-cl.blogspot.com/2011/03/quicklisp.html

>>888
規格の範囲ではない。だからASDFが事実上の標準として使われてる。
891デフォルトの名無しさん:2011/06/02(木) 13:04:05.77
>>890
まだベータだし。

ところで XML を扱うライブラリの標準ってある?
892デフォルトの名無しさん:2011/06/02(木) 13:22:29.94
乱立してて標準とかはない。日本だとcxml使ってる人が多い気がするけど。

Closure XML Parser - 高機能。対応内部表現多い。内部表現によっては遅い
ttp://common-lisp.net/project/cxml/

XMLS - 速い。検証しない。エラー処理貧弱
ttp://www.common-lisp.net/project/xmls/

自分で使うならcxmlのSTPかXMLS。
893デフォルトの名無しさん:2011/06/03(金) 02:24:39.77
SLIMEでC-c C-kしてバッファをコンパイルするとたまに

error in process filter: end of buffer

とか出てロードできない時があるけど、いまいち原因がわからないんだよね。
C-c C-c でS式ごとにコンパイルすれば問題なっしんぐ。
894デフォルトの名無しさん:2011/06/03(金) 22:36:14.06
>>878
遅くなりましたが、ありがとうございます。
納得しました。
895デフォルトの名無しさん:2011/06/03(金) 23:15:50.47
896デフォルトの名無しさん:2011/06/04(土) 00:18:11.44
お、やったじゃん。
897デフォルトの名無しさん:2011/06/04(土) 03:57:04.39
おぉ、後はチュートリアルをw
898デフォルトの名無しさん:2011/06/04(土) 05:14:41.78
早くWinのSBCLでスレッドサポートしてくれないかなー。
899デフォルトの名無しさん:2011/06/04(土) 08:33:32.40
今、Anton Kovalenkoのスレッドサポートのブランチを、David Lichteblauが
mainlineにマージする作業してるみたいだからもう少し待ってあげて。
この週末で出る1.0.49には間に合わないだろうけど、入るのもそう遠くないはず。

すぐに使いたいなら、バイナリが

ttps://github.com/akovalenko/sbcl-win32-threads/wiki

に置いてある。
900デフォルトの名無しさん:2011/06/04(土) 08:40:20.30
あと、今年の年明け辺りから、Windowsのスレッドサポートの話題が定期的に出てるから、
SBCLのWindowsでのスレッドサポートに興味がある人は、sbcl-devel読むと良いかも。

ttp://sourceforge.net/mailarchive/forum.php?forum_name=sbcl-devel
ttp://groups.google.com/group/sbcl-devel
901デフォルトの名無しさん:2011/06/04(土) 09:01:03.87
>>893
処理系から意図した応答が返ってきてないとか?

*slime-events*とか見れば手がかり掴めるかもよ。
902デフォルトの名無しさん:2011/06/05(日) 04:48:21.75
>>899
おー、これいいな。
ちと試してみるか。
903デフォルトの名無しさん:2011/06/05(日) 15:42:06.51
CLのスレッドってみんな何を使ってる?
904デフォルトの名無しさん:2011/06/07(火) 01:54:29.91
@doc ってなに?

パッケージのソースを追っていると、たまに見かけるんだけど、
検索しても明確な情報が出てこなかったので。。。

(defun hoge ()
@doc "

comment

"

なんて形で使われてるんだけど、あっても無くても違いがよくわかりませんでした。
905デフォルトの名無しさん:2011/06/07(火) 03:47:53.17
On Lispの最後にある状態遷移マクロ等は
パッケージ化されてないのでしょうか
906デフォルトの名無しさん:2011/06/07(火) 06:48:09.40
>>904
cl-annotだと思ったんだけど、使いかた違うっぽいなー。

ttps://github.com/arielnetworks/cl-annot

リーダーマクロでそれっぽいの定義してない?
具体的なパッケージ名は?
907デフォルトの名無しさん:2011/06/07(火) 06:53:01.56
>>903
Bordeaux Threadsを使ってる人なら割と見掛ける。

ttp://common-lisp.net/project/bordeaux-threads/
908デフォルトの名無しさん:2011/06/07(火) 07:26:30.20
>>905
On Lispにそんなのあったっけ?
最後ら辺っていうと、CLOSとパッケージがおざなりに紹介されてた覚えしか無い。
909デフォルトの名無しさん:2011/06/07(火) 07:40:08.32
Debian系ならonlisp-codeってパッケージをapt-getすれば
本文とASDFで読める形にパッケージし直したコードが手に入る
.debをダウンロードすればDebian系でなくとも手に入る
910デフォルトの名無しさん:2011/06/07(火) 09:29:00.97
911デフォルトの名無しさん:2011/06/07(火) 10:40:20.16
>>908
そんな意味のないレス書きこむなよw

debian系じゃない人はここから取ってこれる。
http://packages.ubuntu.com/search?lang=ja&searchon=names&keywords=onlisp
*.debはar形式で、その中のdata.tar.gzにonlisp.lispとonlisp.asdがある。
912デフォルトの名無しさん:2011/06/07(火) 11:03:44.53
サーセンw興味のない機能への、あの投げやりっぷりが印象深かったんだよw

そういや、ATNとかあったね。今ググったら、萩谷教授のUIについてのエッセイとかが引っ掛かって、
DFAとかATNのUIへの応用とかが書かれてて、勉強になったわ。今だとあんまり聞かない気がするけど、
どこかで応用されてたりするのかね?
913デフォルトの名無しさん:2011/06/07(火) 12:03:23.10
あそこは継続、マルチプロセス、非決定性と来て、
その応用としてATNパージング、さらにPrologと来て、凄く面白いところ。
こういう流れのいい本読むとやっぱりLisp(というかS式?)はいいなあって思うね。
最後のOOの章はまあ書かんとまずいかねって感じだね。
914デフォルトの名無しさん:2011/06/07(火) 15:59:29.04
>>910
あるよ。
以上。
はい、次。
915デフォルトの名無しさん:2011/06/07(火) 17:35:05.31
onlispの単に写しただけなのは
最近のCLで動かないぞ
916デフォルトの名無しさん:2011/06/07(火) 17:43:43.40
Debianのは動くようになってるんで、>>909の人も勧めてるんだと思います。
onlisp.lispの最初のところにあれこれ書いてある。

Debianによる配布については、copyrightファイルに、
Paul Grahamの許可のメールが載ってる。
問い合わせとパッケージ化してくれたのはKevin M. Rosenbergさん。
917デフォルトの名無しさん:2011/06/07(火) 18:23:42.96
onlisp のパッケージは Debian lenny (1 つ古い安定板)まではあったけど、
それ以降の squeeze ではリポジトリにはない。

Peter Norvig の Artificial Intelligence: A Modern Approach Book
のパッケージ cl-aima も squeeze から失くなってる。

自分はさっき、
git clone http://git.debian.org/git/pkg-common-lisp/cl-aima.git
git clone http://git.debian.org/git/pkg-common-lisp/onlisp.git
で落としてきた。
918デフォルトの名無しさん:2011/06/07(火) 19:19:25.21
現在英語で書かれた教科書でschemeを学んでいます.

そこで練習問題として
Write predicates free? (respectively, bound?) that detemines if an expression contains a free (respectively, bound) instance of a particular variable.

という問題がありました.

特定の変数の独立したインスタンスを含むかどうか判別する述語free?を作れという文章だと思うのですが,どうでしょうか?
また,その場合free?をどう作れば良いのかわかりません.
どなたか方針だけでも
お願いします.
919デフォルトの名無しさん:2011/06/07(火) 19:50:15.65
schemeはスレ違い

Lisp Scheme Part32
http://hibari.2ch.net/test/read.cgi/tech/1303299696/
920918:2011/06/07(火) 20:23:04.06
>>919
そのようなスレがあったんですね
誘導ありがとうございます
921デフォルトの名無しさん:2011/06/09(木) 02:02:55.28
("data=1")

みたいなリストを、

(:data "1")

みたいに整形する事ってできますか?マクロを使わずに。
922デフォルトの名無しさん:2011/06/09(木) 05:07:54.49
練習。 こう?
ttps://gist.github.com/1015265
923デフォルトの名無しさん:2011/06/09(木) 07:17:48.76
Quicklisp使ったらまずかったかな?
(ql:quickload :split-sequence)
(defun conv (list &aux acc)
(dolist (data list (nreverse acc))
(destructuring-bind (fst snd) (split-sequence:split-sequence #\= data)
(push (list (intern (string-upcase fst) :keyword) snd) acc))))

(conv '("data=1" "data=2"))
;=> ((:DATA "1") (:DATA "2"))
924デフォルトの名無しさん:2011/06/09(木) 08:28:32.56
>>921
マクロはコンパイル時のコード変換だから、こういうのとはあんま関係ない。
定数じゃないと無理だし。

(ql:quickload :cl-ppcre)

(destructuring-bind (k . v)
(ppcre:split "=" "data=1")
(cons (intern (string-upcase k) :keyword) v))

(ppcre:register-groups-bind (k v)
("(.*)=(.*)" "data=1") ; ひどくいい加減な正規表現
(list (intern (string-upcase k) :keyword)
v))

(ql:quickload :cl-irregsexp)

;; パターンの表現に癖があるので、詳細は逆引きCommonLisp参照
(cl-irregsexp:match-bind (k #\= v) "data=1"
(list (intern (string-upcase k) :keyword) v))
925デフォルトの名無しさん:2011/06/09(木) 14:39:00.54
>>922-924
ありがとうございます。

internという関数があるのですね。
文字列 キーワード 変換 とかでググってもわからなかったので助かりました。
926デフォルトの名無しさん:2011/06/09(木) 14:50:44.46
キーワードは特殊なシンボル
927デフォルトの名無しさん:2011/06/09(木) 23:01:35.62
cxmlでfeedを読み込んでデータを抽出する方法が全くわからん・・・
S式形式でパースするとアクセスがひどく冗長的になるので、
DOMでやろうと思うのだけれどドキュメントが無くて手詰まり。

どっかにサンプル無いですかね・・・
928デフォルトの名無しさん:2011/06/10(金) 07:27:03.77
>>927
ほんとに調べた? 「closure xml」でググると、最初に

ttp://d.hatena.ne.jp/sakura-1/20080720

という記事が引っ掛かるし、Closure XMLは本家のドキュメントも非常に整備されていて、

http://common-lisp.net/project/cxml/quickstart.html

まさにそのままズバリの「Quick-Start Example / FAQ」というのがあるんだけど。
APIの使い方が分からないのはDOMだからないよね? Lispへのマッピングについても、
「DOM/Lisp mapping」で触れられているし。
929デフォルトの名無しさん:2011/06/10(金) 07:49:18.80
あと、S式形式でのアクセスが冗長というけれど、ケースバイケースだと思うよ。
S式にしてしまえば単なる木構造になるわけで、リスト操作の関数が使える。
mapcarとかreduceとか使いたい放題だし、child-nodesとか使わずに済む。
XMLS形式なら確かcddr。

S式じゃないにしても、STPならmap-childrenとかdo-childrenとかあるし、便利。
DOMは小回り効かないからあんまお勧めしない。
930デフォルトの名無しさん:2011/06/13(月) 10:48:15.98
すいません><
まったくの初心者なので質問させてくださいorz

次のリスト構造をconsセルを用いて表してください。
1 (a b c)
2 ((x y)(u v))
3 (a (b (c)))

次のconsセル構造に対応するリストを書いてください
1 [1| -] →[2| -]→[3| -]
2 [. | /]→[. | /]→[hi | /]

lispの基本的な問題らしいのですが、
プログラミング初心者のため、わからず困っています。

どの問題でもいいので、ご存じの方いらっしゃいましたらよろしくお願い致します。
931デフォルトの名無しさん:2011/06/13(月) 10:57:19.28
>>930
【CL】Lispの宿題片付けます 2【Scheme】
http://kamome.2ch.net/test/read.cgi/river/1307889022/
932デフォルトの名無しさん:2011/06/13(月) 11:47:35.17
>>930
とっても簡単な問題だから、もうちょっと自分で考えてみようぜ。
コンスセルというものを理解できれば、単なるパズルだ。

ttp://blog.livedoor.jp/lisp_learner_group/archives/201288.html

で、これを踏まえた上で、例えば、(a b)というリストは、

[ a | -]→[ b | / ]

なわけだ。((a) (b))なら、

[  | -]→[  | / ]
↓    ↓
[ a | / ] [ b | / ]

になる。じゃあ、>>930の問題の答えはどうなる?
933デフォルトの名無しさん:2011/06/13(月) 12:00:14.96
ちなみに、これはLisp以外でも、とてもよく使われるデータの形。
「線形リスト」というものの一種で、「片方向リスト」と呼ばれる。
プログラミング言語の授業取った(=プログラミングに興味がある)なら、
覚えといて絶対に損はないぜー。
934デフォルトの名無しさん:2011/06/13(月) 12:28:06.58
>>930
どうでもいいけど後半の1と2は回答しようがないな
問題を写し間違っているんだろうけど
935デフォルトの名無しさん:2011/06/13(月) 12:42:14.84
2は(cons (cons (cons hi nil) nil) nil)じゃないかと予想。
1は謎。関係ないけど、「-]→」って表現にはちょっと感心した。
936デフォルトの名無しさん:2011/06/13(月) 12:52:44.47
>>935
なるほど
carから矢印が伸びていたわけね
937デフォルトの名無しさん:2011/06/15(水) 13:51:51.22
>>929
racketのS式と互換性あるといいんだけどなあ
racketは不正なhtmlでも変換する
938デフォルトの名無しさん:2011/06/15(水) 14:19:17.00
Closure XMLなら、パーサに自前で定義したハンドラを渡せば、
好きなデータ構造を作れるようになってたと思う。
939デフォルトの名無しさん:2011/06/17(金) 10:54:24.21
940 【東電 80.6 %】 :2011/06/17(金) 12:44:21.29
えー
941デフォルトの名無しさん:2011/06/19(日) 08:00:09.18
寿命短すぎ
パロディ処理系すら作れやしない
942デフォルトの名無しさん:2011/06/19(日) 08:17:10.20
プログラミング言語Asumis
943デフォルトの名無しさん:2011/06/19(日) 08:54:11.21
>>939
もうGCに回収されるのか
944デフォルトの名無しさん:2011/06/19(日) 16:44:44.51
アスミスが死にそうだからな
945デフォルトの名無しさん:2011/06/21(火) 15:13:43.49
CLのスレッドって検索してもあんまり情報が引っかからないんだけど、
そんなに使われているモノでもないの?
946デフォルトの名無しさん:2011/06/22(水) 00:54:56.69
SLIMEとかHunchentootとか、普通にみんな使いまくりだと思う。
947デフォルトの名無しさん:2011/06/22(水) 03:05:57.97
ac-slimeを導入してみたら補完のタイミングでエラーこいてデバッカが起動するようになっちまった。
948デフォルトの名無しさん:2011/06/22(水) 03:26:01.48
CCLってSBCLみたいに大量のライブラリを読み込んだイメージ作れないのかな?
起動が速くなるし、aproposでもかなり重宝してたんだけど。
949デフォルトの名無しさん:2011/06/22(水) 09:35:50.27
>>948
ccl:save-applicationで普通に作れるよ。
Common Lispの処理系なら大抵できると思う。

ttp://ccl.clozure.com/ccl-documentation.html#Saving-Applications

何でも好きなライブラリ読み込んでから

(ccl:save-application "foo.image")

でオーケー。読み込みはコマンドラインのオプションの-Iか--image-nameで。
950デフォルトの名無しさん:2011/06/22(水) 12:43:27.03
>>949
ありがとう!!
951デフォルトの名無しさん:2011/06/28(火) 01:36:41.87
(defun top3 (a b c) (format nil "top3 is ~A, ~A, ~A" a b c))

; リストのカッコを外した物を引数にしたい
(setq are 'grape args '('apple 'orange are))
(top3 ,@args) ;こういう要領で
(top3 'apple 'orange are) ; こう変換したい
; => args is APPLE, ORANGE, GRAPE
(eval `(top3 ,@args)) ; 実装するとこうなりました

evalを使うのはどうかと思ったのですが、もっと良い方法はあるのでしょうか?
952デフォルトの名無しさん:2011/06/28(火) 02:45:26.54
>>951
(apply #'top3 args)
953デフォルトの名無しさん:2011/06/28(火) 02:46:46.49
ほらよ
(defmacro rm-parens-apply (f arg) (funcall (funcall ((lambda (x) (lambda (y) (lambda (z) `(,x ,@(funcall y z))))) f) 'symbol-value) arg))
(rm-parens-apply top3 args)
954952:2011/06/28(火) 02:50:50.03
>>951
ごめん、結果見直したら、希望と違ってた。
955デフォルトの名無しさん:2011/06/28(火) 02:55:32.33
>>953 変数名にx,y,zという無意味なものを使うな。あと改行入れろ。
(defmacro rm-parens-apply(top3 args)(funcall
(funcall(funcall(lambda(top3)(lambda(symbol-value)
(lambda(args)`(,top3 ,@(funcall symbol-value args)))))top3)'symbol-value)args))
(rm-parens-apply top3 args)
956951:2011/06/28(火) 23:31:40.31
皆さんレスありがとうございます。なるほど、そうすれば良かったのですね。
変数名と改行に気をつけてこう仕上げました。

(      defmacro rm-parens-apply
(      args top3
 )
(         funcall
(         funcall
(         funcall
(         lambda
 (        args
  )
 (        lambda
 (        top3
  )
 (        lambda
  (       symbol-value
   )`
  (,      symbol-value
 ,@
 (        funcall args top3
) ) )
 ) )'     symbol-value
 )        top3
 )        args
) )

(defun top3 (a b c) (format nil "top3 is ~A, ~A, ~A" a b c))
(setq are 'grape args '('apple 'orange are))
(rm-parens-apply top3 args)
;=> "top3 is APPLE, ORANGE, GRAPE"
957デフォルトの名無しさん:2011/06/29(水) 16:44:12.60
ワロタw
958デフォルトの名無しさん:2011/06/29(水) 22:06:03.96
すまねぇ仙人の皆、俺には>>956がLispに見えない。
もっと別の、おぞましい何かにしか…

Lisper的にはPythonのブロックインデントは有り?無し?
959デフォルトの名無しさん:2011/06/29(水) 22:42:17.22
オフサイドルールっぽいけど、全然違う所も評価高いな。
960デフォルトの名無しさん:2011/06/29(水) 23:00:37.77
>>958
pass って書くのめんどいから ) がいい。
961デフォルトの名無しさん:2011/06/29(水) 23:19:32.99
>>958
オフサイドルールについては、Haskellに対してだけど、とても面白い洞察があるよ。

ttp://d.hatena.ne.jp/camlspotter/20101212/1292165692

それ以外の部分も面白いからお勧め。名前空間の部分とか、CLでも参考になる。
962デフォルトの名無しさん:2011/06/29(水) 23:28:09.74
ttp://d.hatena.ne.jp/camlspotter/20100521/1274446264

こっちのが適切だったかも。
963デフォルトの名無しさん:2011/06/30(木) 05:55:58.43
Linux Lispbox設定方法知ってる方いますか?
964デフォルトの名無しさん:2011/06/30(木) 06:15:48.61
Lispboxって設定なんもいらんだろ?
965デフォルトの名無しさん:2011/06/30(木) 06:20:43.51
↑うまく起動できないもので
966デフォルトの名無しさん:2011/06/30(木) 06:46:48.67
>>965
ダウンロードした Lispbox はどれで
使っている Linux は何?

つーか、Linuxならパッケージマネージャで環境整わない?
967デフォルトの名無しさん:2011/06/30(木) 06:54:49.36
わるいこといわん lisp cabinetにしとけ
968デフォルトの名無しさん:2011/06/30(木) 06:57:21.24
そういうときは、行った操作とその結果(エラーメッセージなどの状況)を教えてくれないと、
誰も答えようがない。

ダウンロードした場所、インストールのときに行った操作、どうやって起動したか、
そしてその結果、どのようにうまく起動できなかったのか。例えば、エラーメッセージが出るとか、
エラーメッセージすら出ないとか、コアダンプするとか、そういった情報を書いてくれ。
969デフォルトの名無しさん:2011/06/30(木) 07:01:01.18
Lispbox-0.7
Vine Linux4.1
970デフォルトの名無しさん:2011/06/30(木) 07:01:34.23
Lisp CabinetってWindows専用じゃん。
971デフォルトの名無しさん:2011/06/30(木) 07:18:43.97
ありがとうございました
972デフォルトの名無しさん:2011/06/30(木) 08:14:05.97
Windowsでやっとけよ。
973デフォルトの名無しさん:2011/07/02(土) 12:43:52.17
practical common lispのpdfっていつの間にか無料配布をやめちゃったんだね。
974デフォルトの名無しさん:2011/07/03(日) 14:07:11.81
lispのvimerってあまり見かけないけど、vimerなlispさんにどうぞ
http://gajon.org/common-lisp-development-vim/
slimv ってvimのslime版プラグインはそこそこの出来だよ。ただし、pythonが
必要だが。
975デフォルトの名無しさん:2011/07/04(月) 09:18:27.26
すいません…初心者なので質問させていただきます…。

リストの中の3つの要素が同じかそうでないかをくらべ、同じならその記号を違うならnilを返す関数hikakuを作成してください。

参考書の練習問題を解いていたのですが、わからなかったため質問させていただきました。
ヒントとしては3つのものが同じかどうか判定し、結果には最初のものを返せばよい。
との事ですが…どなたかご存じの方おりましたらよろしくお願い致します。

実行例としては
(hikaku '(x x x)) →X
(hikaku '(x y x)) →nil
(hikaku '(x x nil)) →nil
となっています…。

よろしくお願い致します。
976デフォルトの名無しさん:2011/07/04(月) 10:09:41.86
(defun hikaku (list)
(let ((x (car list)))
(if (remove x list)
nil
x)))
977デフォルトの名無しさん:2011/07/04(月) 10:59:22.27
(defun hikaku (x)
(reduce (lambda (a b) (if (eql a b) a nil))
x))
978デフォルトの名無しさん:2011/07/04(月) 11:06:54.51
>>975
Common Lispには、「同じ」という意味がいくつかあるから注意した方が良いよー。

ttp://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp03.html

見てね。

>>976とか>>977で解答が出てるけど、要は、最初の要素とそれ以降の要素を比較して、
リストの最後まで一致すれば、最初の要素を返す、一致しないものがあれば、nilを返す、
っていう処理を書けば良い。
979デフォルトの名無しさん:2011/07/04(月) 14:43:23.29
突然失礼しますorz

(setq board '((11 12 13) (21 22 23) (31 32 33)))
といったものが与えられている時、

(11 21 31) を表わす関数xの定義
(12 22 32) を表わす関数yの定義
(13 23 33) を表わす関数zの定義
(11 22 33) を表わす関数aの定義
(31 22 13) を表わす関数bの定義


はどのようにして書けばよいのですか?
appendなどでつなごうとしたのですが上手くいかず困っていますorz
980デフォルトの名無しさん:2011/07/04(月) 14:48:45.01
宿題?
a bはともかく、x y zはmapを使うんだと思うけど。
981デフォルトの名無しさん:2011/07/04(月) 14:53:08.96
>>890
古い参考書に載ってた練習問題です…orz
解説を見ようとしたら中古品だったので解説部分が切り取られてましたT-T
982デフォルトの名無しさん:2011/07/04(月) 14:56:58.90
とりあえず動作例が一つしか与えられてないわけだから、
xの仕様を日本語で書き下してみたら?
983デフォルトの名無しさん:2011/07/04(月) 15:03:09.97
>>982
どのようにして(11 21 31)を取り出すのかさえ分かれば
解けると思うのですが…orz
初心者なので???状態です…。
984デフォルトの名無しさん:2011/07/04(月) 15:13:22.89
>>983
まず、日本語で仕様を書き下す。
次に、それを実現するために必要な関数を調べる。
そして、仕様を言語で書き直す。

さあ、xの仕様を日本語で書き下してみよう。
初心者かどうか関係ない。問題を理解できたかどうかの問題。
985デフォルトの名無しさん:2011/07/04(月) 16:37:58.69
関数xの仕様としては、carしてcarしたものとcdrしてcar したものとcdrしてcdrしてcarしたものをつなげばいいです。

ただその結合が上手くいきません…。
986デフォルトの名無しさん:2011/07/04(月) 17:10:18.20
consはわかってる?
987デフォルトの名無しさん:2011/07/04(月) 17:16:49.96
consとappendとlistの違いがよく分かってないのかね。

(defun list-copy-by-one-level (x) (cons (car x) (cdr x))
(defun list-copy-by-one-level (x) (append (list x) (cdr x))

はconsセルの消費数以外は同じ関数。

(defun list-copy-by-one-level (x) (nconc (list x) (cdr x))

ならconsセルの消費数も同じです。(pure functionalでなくなるが)
x, y, zはこの関数のごく単純なバリエーションにすぎません。
988デフォルトの名無しさん:2011/07/04(月) 18:58:25.57
>>985
>関数xの仕様としては、carしてcarしたものとcdrしてcar したものとcdrしてcdrしてcarしたものをつなげばいいです。

処理系あるなら一回試してみ
あるいはboardをconsだけで書いてみるといいよ
989デフォルトの名無しさん:2011/07/05(火) 01:15:13.78
誰ぞ次スレを
990デフォルトの名無しさん:2011/07/05(火) 18:09:12.44
>>946
Hunchentoot
そんなに使われてる?
991デフォルトの名無しさん:2011/07/05(火) 18:14:36.52
スレが立ってから15か月になるのか...
992デフォルトの名無しさん:2011/07/05(火) 19:22:49.48
>>990
とりあえず、私的に実験的なページだとHunchentootつかうかな
parenscriptあたりもlispのりで書けるし...
993 忍法帖【Lv=3,xxxP】 :2011/07/05(火) 20:07:19.94
>>990
元のレスは「Hunchentootで普通にスレッド使いまくり」って意味だけど、
Hunchentoot自体も普通に使われてると思うよ。
だって、まともにメンテされてんのがHunchentootくらいだし。
994デフォルトの名無しさん:2011/07/06(水) 16:35:27.80
cl-lexの使い方の例ってどこかにないのでしょうか
995 忍法帖【Lv=10,xxxPT】 :2011/07/06(水) 17:17:00.89
次スレ
http://hibari.2ch.net/test/read.cgi/tech/1309940115/l50
テンプレとか、よろしく。
996 忍法帖【Lv=4,xxxP】 :2011/07/06(水) 19:53:00.47
丸投げすんなよー。テンプレ貼るのめんどいんだよー。貼っといたけどさ。スレ立て乙。

>>994
ttp://d.hatena.ne.jp/einblicker/20101114/1289691118
997デフォルトの名無しさん:2011/07/06(水) 20:41:11.83
お疲れさまでした
うめ
998デフォルトの名無しさん:2011/07/06(水) 21:16:11.87
ぼんやり読んでたら>>991をスレが立ってから15年と読んで混乱した
ともあれ乙
999デフォルトの名無しさん:2011/07/07(木) 00:08:40.08
>>990
以前はプロトタイプのweb作るのに使ってた(あと管理系のwebツール)
いまはclojure+compojureの方が書きやすいと思うようになっちゃった

1000デフォルトの名無しさん:2011/07/07(木) 00:15:57.48
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。