2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2010/04/04(日) 17:37:47
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
ANSI Commn Lisp 仕様関係
http://www.lisp.org/HyperSpec/FrontMatter/index.html
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html
http://lispdoc.com/
http://clqr.berlios.de/index.html

日本語のチュートリアル
ttp://www.fireproject.jp/feature/common-lisp/index.html
ttp://www.geocities.jp/m_hiroi/xyzzy_lisp.html
ttp://home.soka.ac.jp/~unemi/LispProlog/
ttp://www.haun.org/kent/lisp1/
ttp://wisdom.sakura.ne.jp/programming/lisp/index.html

5 :デフォルトの名無しさん:2010/04/04(日) 19:06:06
進んだ話題が欲しい人に...
(和文)
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/index.html
ttp://lispuser.net
(英文)
http://wiki.alu.org:80/
http://www.cl-user.net
http://www.common-lisp.net
http://planet.lisp.org/
http://groups.google.co.jp/group/comp.lang.lisp
http://www.cliki.net/index
http://cl-cookbook.sourceforge.net/
http://www.gigamonkeys.com/book/
( http://www.apress.com/free/ よりpdf版が入手可能)
http://www.psg.com/~dlamkins/sl/cover.html
http://www.cs.cmu.edu/~dst/LispBook/index.html

その他の情報
http://ja.wikipedia.org/wiki/Common_Lisp

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

27 :25:2010/04/25(日) 16:48:56
>>26
レスありがとう
その本なら知ってます
しかし、自分にはレベル高すぎのような気が・・・
いずれ読もうとは思ってるけどね
まずは「対話によるCommon Lisp入門」や「これがLISPだ! 」あたりから読もうかと

28 :25:2010/04/25(日) 16:52:37
>>26
あっ、そうそうそれがlispbox
自分は↓のサイトで知りました
ttp://sites.google.com/site/shidoinfo/Home/programing-lang/関数型プログラミング言語/lisp/common-lisp/初心者の為のlisp環境

29 :デフォルトの名無しさん:2010/04/29(木) 12:11:39
初めてのためのLISPの付録のところで
ドット対は
(a b c . c)
って描きかたしてもいいみたいな記述あったんだけど

ドット対の右側って複数の要素ならべてもいいの?
それともこの本だけ?

30 :29:2010/04/29(木) 12:14:04
ちなみに 付録Lispのまとめ の A1.6コンス のところね

31 :29:2010/04/29(木) 12:16:06
ごめん大まちがいした

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

右側は理屈上S式1個しか書けないよね

32 :デフォルトの名無しさん:2010/04/29(木) 13:35:34
ドット表記にすれば分り易い?
'(a . (b . (c . c)))

33 :29: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
CLtL2だとこの辺。

ttp://www-prod-gif.supelec.fr/docs/cltl/clm/node28.html#SECTION00640000000000000000

36 :29: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はただのコンテナ

どういう意味?
「ただの」って。

44 :29: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
検索したらこれが一番上でした
http://www.amazon.co.jp/%E5%AE%9F%E7%94%A8Common-LISP-%E8%A1%A3%E7%AC%A0-%E6%88%90%E4%B8%80/dp/4526022829

72 :67: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 ってどこで宣言してるんだ?


140 :139: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
http://news.ycombinator.com/item?id=1390944

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
ttp://journal.mycom.co.jp/news/2010/07/27/007/index.html

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
竹内郁雄 part1
http://pc11.2ch.net/test/read.cgi/prog/1280205933/

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上に移るのか?・・・

68 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)