【入門】Common Lisp その7【質問よろず】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/04/04(日) 17:37:47初心者の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)
0002デフォルトの名無しさん
2010/04/04(日) 19:01:26(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未対応
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))
0003デフォルトの名無しさん
2010/04/04(日) 19:02:44(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の系譜))
0004デフォルトの名無しさん
2010/04/04(日) 19:04:39http://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
0005デフォルトの名無しさん
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
0006デフォルトの名無しさん
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 の 参考書を探しているならこれ一択)))
0007デフォルトの名無しさん
2010/04/06(火) 06:22:360008デフォルトの名無しさん
2010/04/08(木) 22:03:360009デフォルトの名無しさん
2010/04/10(土) 15:23:260010デフォルトの名無しさん
2010/04/10(土) 15:37:55ttp://practical-scheme.net/chaton/common-lisp-jp/
0011デフォルトの名無しさん
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
0012デフォルトの名無しさん
2010/04/16(金) 14:22:34>#\ <- (「#\い」にならない
細かい環境がわからんからアレだが
ウチのMeadow+Slime+ABCL+JDK1.6では
#\い
が返る、slimeの設定で指定してるのは
slime-net-coding-system が 'utf-8-unix
な事くらい
0013デフォルトの名無しさん
2010/04/16(金) 22:35:51や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.
0014デフォルトの名無しさん
2010/04/17(土) 08:52:38ttp://ccl.clozure.com/blog/?p=83
faslとヒープイメージのバージョンが上がったので、要再構築。
擬似乱数生成器が、周期が約2^185のMRG321k3pになって、
ベクタストリームが追加された。メモリ解析ツールの改良と機能追加も。
>>11
XCLは前にABCL調べてたときに見付けたけど、
まだ新しいし、どういう路線なのかが分からなかったんで、スルーしてた。
簡単でもいいから、方向性とか示してくれてると、wktkできるんだけども。
0015デフォルトの名無しさん
2010/04/17(土) 11:49:390016デフォルトの名無しさん
2010/04/17(土) 12:39:32元々の名前はOpenMCLっていうんだけど、
それとは別にMCLってのがあるんだぜw
0017デフォルトの名無しさん
2010/04/17(土) 22:55:370018デフォルトの名無しさん
2010/04/18(日) 00:04:450019デフォルトの名無しさん
2010/04/18(日) 00:21:000020デフォルトの名無しさん
2010/04/19(月) 22:15:51どうしてでしょうか?
0021デフォルトの名無しさん
2010/04/22(木) 13:38:11もともとは、£24.50+5.00 ?24.50+5.00 $24.50+5.00で、用意してたとかかな。
ttp://www.lambdassociates.org/order.htm
0022デフォルトの名無しさん
2010/04/23(金) 03:57:10スパムじゃないかな
0023デフォルトの名無しさん
2010/04/23(金) 16:59:33http://ja.doukaku.org/lang/commonlisp/
なんでこんなところスパムしてるんだろ
0024デフォルトの名無しさん
2010/04/23(金) 17:07:01評価の高い投稿だけ表示したらまともになった
0025デフォルトの名無しさん
2010/04/25(日) 13:29:02lispなんて全然やったことないんのにw
lispの本は難しそうだから、ネットの入門サイト見ながらいろいろ試してるとこ
括弧に抵抗なくなったら、一番やさしそうな本でも読んみる
0026デフォルトの名無しさん
2010/04/25(日) 16:31:25lispboxってこれ?
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
002725
2010/04/25(日) 16:48:56レスありがとう
その本なら知ってます
しかし、自分にはレベル高すぎのような気が・・・
いずれ読もうとは思ってるけどね
まずは「対話によるCommon Lisp入門」や「これがLISPだ! 」あたりから読もうかと
002825
2010/04/25(日) 16:52:37あっ、そうそうそれがlispbox
自分は↓のサイトで知りました
ttp://sites.google.com/site/shidoinfo/Home/programing-lang/関数型プログラミング言語/lisp/common-lisp/初心者の為のlisp環境
0029デフォルトの名無しさん
2010/04/29(木) 12:11:39ドット対は
(a b c . c)
って描きかたしてもいいみたいな記述あったんだけど
ドット対の右側って複数の要素ならべてもいいの?
それともこの本だけ?
003029
2010/04/29(木) 12:14:04003129
2010/04/29(木) 12:16:06誤>ドット対の右側って複数の要素ならべてもいいの?
正>ドット対の左側って複数の要素ならべてもいいの?
右側は理屈上S式1個しか書けないよね
0032デフォルトの名無しさん
2010/04/29(木) 13:35:34'(a . (b . (c . c)))
003329
2010/04/29(木) 23:20:31ありがとう
意味は了解しますた。
ところでこれってCommonn LispとかLispの一般的な記法なんですか?
ドット使った記法ってペアしかダメだと思い込んでたもので。
あとたとえば( . b )
って書き方はCommon Lisp ではOKですか?
理屈の上では ( . b ) = b な気がするんですが。
0034デフォルトの名無しさん
2010/04/30(金) 01:03:32とても一般的な記法。というか、(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
0035デフォルトの名無しさん
2010/04/30(金) 01:06:54ttp://www-prod-gif.supelec.fr/docs/cltl/clm/node28.html#SECTION00640000000000000000
003629
2010/04/30(金) 01:48:50どうもありがとうです。了解しました
( . x)はやっぱだめですか
ちなみにcar に何が入ってるというか、
(a b . c)
/\
a /\
b c
(b . c)
/\
b c
( . c)
c
というふうに左の項が1つ減るたびに
「aへ」 が減ってく感じで類推してたんですが、、
0037デフォルトの名無しさん
2010/04/30(金) 02:41:50その発想は無かった。そういうLispがあって良い気もする。
ただ、実用上のメリットが無いから規定されてないだけな気もする。
一応、追加の資料。
ttp://www.lispworks.com/documentation/HyperSpec/Body/22_ace.htm
0038デフォルトの名無しさん
2010/04/30(金) 06:53:28それだと、記法の整合性が取れないのでは??
cdr部がリストのときは、carとcdr部間のドットとcdr部の一対の括弧が省略される。
なので、cdr部がアトムだとドットが省略されない。
nilはリストでもあるから、cdr部がnilの場合は隠されてしまう。
(a . nil) と (a) は同じ。
0039デフォルトの名無しさん
2010/04/30(金) 06:56:270040デフォルトの名無しさん
2010/04/30(金) 07:17:10(a . b) = [ a | b ]
0041デフォルトの名無しさん
2010/04/30(金) 09:38:27今はもう慣れたけど
0042デフォルトの名無しさん
2010/04/30(金) 12:48:49印字表現とデータ構造を混同するな
0043デフォルトの名無しさん
2010/04/30(金) 21:56:25> consはただのコンテナ
どういう意味?
「ただの」って。
004429
2010/04/30(金) 22:17:41( a ) = (a .())を>34のdotted listとして一般化して
( … )=(… . ()) の…が空の場合を考えれば
nil = () =( . ()) = ( . nil) でしょうし、
nil = ( . nil) なら a = ( . a)でもおかしくないんじゃないかと、、
でもまあ結局のところ
>42の人のいうとおり仕様というか決めの問題なわけで
実際Common Lispではこんな変な記法は仕様にないことは十分納得しましたです。
ありがとうございました
0045デフォルトの名無しさん
2010/04/30(金) 23:56:18という部分で、無の文字列に意味をもたせちゃった事で矛盾が生じている。
(cons X Y) = (X . Y) なんであって、 NIL = () はドット記法ではあらわせない。
() はアトムでもあってそれ以上分割できない。単位元みたいな存在。
CONS で表現できないドット対があると、ドット対の定義から変更する必要がでて
きちゃうからねぇ。でも深く考えてみるのはいいことだと思う。学生の頃の俺は
そんな深く考えなかったよ…最近の若者はすごいな。
0046デフォルトの名無しさん
2010/05/01(土) 00:43:51(i) アトムは S 式である。
(ii) S1, S2ともに S 式ならそのドット対 (S1 . S2) も S 式である。
(iii) (i) と (ii) で定義されるものだけが S 式である。
( . ()) は car に S 式がないじゃん
0047デフォルトの名無しさん
2010/05/01(土) 00:57:38ドット表記って単なる糖衣構文だと思ってたんだけど、
糖衣構文なら( . ()) = ()とするLispがあっても良い気はする。
もちろん、CLHSにあるように、CLではNGだけど。
ただ、上でも書いたけど、それによる利点が無いし、
ドット表記でcarとcdrを明示的に書く習慣とも一致しないし、
多値の導入における対称性みたいな、課題の解決とかもないから、
あえてそうする意味も無いとは思う。
深く考えるのは良い事というのには同意。
今回色々調べてみて自分も勉強になった。
0048デフォルトの名無しさん
2010/05/01(土) 02:25:58> ドット表記って単なる糖衣構文だと思ってたんだけど、
そんなこと思う人間は珍しい。
どっちかというとプリミティブな記法。
0049デフォルトの名無しさん
2010/05/01(土) 07:34:10こういう文脈で使われる「ただの」ってのは、「それ以上でもそれ以下でもない」
ってな意味じゃねーの。
0050デフォルトの名無しさん
2010/05/01(土) 09:44:06(1 2 3) が糖衣構文だと思うけどなぁ
0051デフォルトの名無しさん
2010/05/01(土) 11:02:490052デフォルトの名無しさん
2010/05/01(土) 11:41:35'nil = (cdr 'nil) とか
(たぶん関係ない)
0053デフォルトの名無しさん
2010/05/01(土) 12:51:40nil = (nil . nil) 的なかんじになるんじゃないか?
CL では規格で car, cdr は「引数が NIL だったら NIL を返す」と決まっているから
そうなっているのであって、NILという値のcar/cdr部の値が NIL なわけじゃない。
CLでは NILは generalized boolean として false と空リストの両方の意味を兼ねているからね。
これは設計上のトレードオフなので、Schemeなんかは空リストに対するcar/cdrはエラーになるし、
そもそも空リストと偽 #f は別の値だ。
0054デフォルトの名無しさん
2010/05/01(土) 13:16:400055デフォルトの名無しさん
2010/05/01(土) 13:18:17(a b c . d)= (a . (b . (c . d)))→(b . (c . d))→(c . d)→d
∴X=d
0056デフォルトの名無しさん
2010/05/01(土) 13:31:322 * 1/2 = 1
1 * 1/1 = 1
∴ 0 * 1/0 = 1
0057デフォルトの名無しさん
2010/05/01(土) 21:53:26(define-syntax sample
(syntax-rules ()
((_ (a ...) b)
'(a ... . b))))
こう使うと…
(sample () d)
こうなる
'd
素直に解釈するとマクロ変数 a がはからっぽで b には d が入ったわけだから
マクロ展開の結果は '( . d) なはず。
これが 'd ということになるのはなんだか不思議な気がする。
0058デフォルトの名無しさん
2010/05/01(土) 22:39:19なんでこのスレで Scheme の話すんの?
0059デフォルトの名無しさん
2010/05/02(日) 00:16:04言語も泥んこ玉だからってことじゃないの?
いや、詳しくは知らないが
0060デフォルトの名無しさん
2010/05/02(日) 01:46:43Scheme でも空リスト相当だが、君は空リストではない「からっぽ」を考えてしまっている。
Schemeでも ( . d) なんてのは不正なので、それに「なるはず」というのはちょっと無理があるね。
特異点があるのが許せないのかもしれないけど、数学の世界にだってあるしねぇ。
SRFI-1 の cons* でもこう。
(cons*) => ()
(cons* 1) => 1
(cons* 1 2) => (1 . 2)
(cons* 1 2 3) => (1 2 . 3)
0061デフォルトの名無しさん
2010/05/02(日) 12:18:46不思議じゃない。
syntax-rulesを実装してみれば君の勘違いが分かる。
>>55な感じの再帰になる。
0062デフォルトの名無しさん
2010/05/04(火) 14:57:15ttp://mixi.blog.ocn.ne.jp/koware/2010/03/lisp_61ab.html
> 「入門 Common Lisp」(新納浩幸、マイコミ)
:
> 仕様では含まれていない関数を当たり前のように使うとは
:
> まえがきを確認してみると「本書ではLispを動かす環境としてxyzzyを想定していますが」と
0063デフォルトの名無しさん
2010/05/04(火) 17:49:56Lispは拡張していく言語だっていうから、それを実感して良かったのでは?
0064デフォルトの名無しさん
2010/05/04(火) 20:22:440065デフォルトの名無しさん
2010/05/04(火) 23:07:55) . (を解釈しないのはおかしいと言ってるのと同じ
0066デフォルトの名無しさん
2010/05/05(水) 02:31:15いつの間にか接続が切れててイラッとするバグ、1.5で直ったね。
手を焼かされてたから良かった。
0067デフォルトの名無しさん
2010/05/05(水) 18:53:19寝っ転がって読もうとしたが、その質量にあえなく挫折した
今は正座している
0068デフォルトの名無しさん
2010/05/05(水) 20:13:560069デフォルトの名無しさん
2010/05/05(水) 22:59:47つゴロ寝 de スク
0070デフォルトの名無しさん
2010/05/05(水) 23:31:43今日本屋で見かけて俺もビビった
PAIPの邦訳が本当に出てるという事実だけでも驚いた
0071デフォルトの名無しさん
2010/05/05(水) 23:49:43http://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
007267
2010/05/06(木) 01:41:19それはしらなんだ
俺が買ったのはピーター・ノヴィグの方ね、
CLTL2より質量があって中身も濃いんだわ
とりあえずゆっくり寝転んで音読楽しもうとしたら>>67 になったので正座して速読したのだけど
速読でも20分かかるよ!
てか速読中に手が疲れたの久々だよ!
0073デフォルトの名無しさん
2010/05/06(木) 12:25:33これか、分冊しないで出したのか。値段も凄い
アマゾンで5/11発売になってるからジュンク堂とか専門書扱ってる書店の先行発売かな
0074デフォルトの名無しさん
2010/05/06(木) 20:40:04でかすぎて立ち読みしようとは思わなかったけど
評判がいいなら買うかも
0075デフォルトの名無しさん
2010/05/06(木) 20:45:200076デフォルトの名無しさん
2010/05/06(木) 20:47:21そして持ち上げる気も起こらなかった
0077デフォルトの名無しさん
2010/05/08(土) 01:00:52邦訳するなよ。俺の英語力が上がらないではないか。
でも¥9660wたけえww
0078デフォルトの名無しさん
2010/05/08(土) 01:59:26しかしAIと絡めた話が読めるのはうれしい
0079デフォルトの名無しさん
2010/05/08(土) 06:13:510080デフォルトの名無しさん
2010/05/08(土) 11:01:310081デフォルトの名無しさん
2010/05/08(土) 12:14:23愛とAIどっちが大事なんだよ
0082デフォルトの名無しさん
2010/05/08(土) 12:17:05お前二行目が言いたかっただけだろ(棒読み
0083デフォルトの名無しさん
2010/05/08(土) 15:36:04デート二回とか………一度だって人生に無い俺に謝れ
0084デフォルトの名無しさん
2010/05/08(土) 16:08:479kも払うほどの内容か?
0085デフォルトの名無しさん
2010/05/08(土) 17:04:450086デフォルトの名無しさん
2010/05/08(土) 17:10:240087デフォルトの名無しさん
2010/05/08(土) 17:34:02いやむしろ一行目を声を大にして言いたかったんだろお前
くやしいのう
まぁ俺はAIに生きるがな
0088デフォルトの名無しさん
2010/05/08(土) 17:45:300089デフォルトの名無しさん
2010/05/08(土) 19:11:17AIの研究所か研究室に来るLisp知らん学生向け講義の教科書になるように書いたのかな
0090デフォルトの名無しさん
2010/05/09(日) 05:55:17そこに AI があれば、それでいいじゃないか。
0091デフォルトの名無しさん
2010/05/10(月) 20:50:25落っこちるだけど、動いた人いる?
0092デフォルトの名無しさん
2010/05/13(木) 10:49:45脳内彼女をLISPで組んでる俺は…
0093デフォルトの名無しさん
2010/05/13(木) 10:53:080094デフォルトの名無しさん
2010/05/13(木) 20:39:360095デフォルトの名無しさん
2010/05/22(土) 06:53:30動きました。
いろいろ難しかったです。
0096デフォルトの名無しさん
2010/05/23(日) 11:39:32そのうち、lisp制御のtengaを作るんですね!
0097デフォルトの名無しさん
2010/05/23(日) 13:44:36うずらみたないのを作って女の子言葉だけネットワーク上で選らんで学習させてちょっと悦に入ってた時期がボクにもありました
いい気になって好き勝手にURL読ませたら2chばっかり拾いやがって……
シクシク
0098デフォルトの名無しさん
2010/05/23(日) 19:39:430099デフォルトの名無しさん
2010/05/25(火) 11:02:47(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のキーバインドをシャドウしてしまうのが原因。
0100デフォルトの名無しさん
2010/05/25(火) 17:55:54いきなり*enable-binary-locations*とか削除されてたからびっくりした。
0101デフォルトの名無しさん
2010/05/26(水) 14:38:33全然つながらない
0102デフォルトの名無しさん
2010/05/26(水) 23:07:50女なんて所詮、生けるテンガ。
0103デフォルトの名無しさん
2010/05/26(水) 23:22:120104デフォルトの名無しさん
2010/05/27(木) 15:23:37andなんて定義されてませんよ
というエラー出る
0105デフォルトの名無しさん
2010/05/27(木) 15:27:18andはマクロであって関数ではない。というのが答え。
0106デフォルトの名無しさん
2010/05/28(金) 11:46:42関数のつもりで使ったらエラーになって、実はマクロでしたと判明するとガックシ。
0107デフォルトの名無しさん
2010/05/28(金) 12:37:360108デフォルトの名無しさん
2010/05/28(金) 12:42:330109デフォルトの名無しさん
2010/05/28(金) 19:05:36CommonLisp ではない。
0110デフォルトの名無しさん
2010/05/30(日) 03:36:12実行バイナリってどうやって作るんだよ?
0111デフォルトの名無しさん
2010/05/30(日) 03:46:48コンパイラだよ。
実行バイナリの作り方はこんな感じ。
http://www.sbcl.org/manual/Saving-a-Core-Image.html
0112デフォルトの名無しさん
2010/05/30(日) 07:22:070113デフォルトの名無しさん
2010/05/30(日) 11:44:13さんくす!
>>112
マジでけえwww
SBCLでアプリ作って、実行バイナリで配布しようとしたらこんなサイズになっちまうのか・・・
0114デフォルトの名無しさん
2010/05/30(日) 14:19:530115デフォルトの名無しさん
2010/05/30(日) 19:50:590116デフォルトの名無しさん
2010/05/30(日) 20:05:400117デフォルトの名無しさん
2010/05/30(日) 20:14:37つ cc
0118デフォルトの名無しさん
2010/05/30(日) 22:51:38あったとして必要なアプリを全部,手動で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
0119デフォルトの名無しさん
2010/05/31(月) 05:14:29メモリイメージ込みだから。逆に、メモリイメージを保存するということで、
色々融通が利くというメリットもある。重い処理済んだ所で保存するとか、
そういうのが凄い簡単。
でも実際、AllegroだかLispWorksだかにあるとかいう、
必要ない部分は省く機能とかは、あった方が嬉しいよね。
0120デフォルトの名無しさん
2010/05/31(月) 05:43:36ttp://lispuser.net/memo/lisp/2007-09-05-22-23.html
サイズの小ささを重視するなら、CLISPお勧め。
0121デフォルトの名無しさん
2010/06/02(水) 12:00:110122デフォルトの名無しさん
2010/06/02(水) 17:58:59がっかりしちゃうかもしれないけどL#って実装が一応ある
俺はclojureの.net移植でいい気がする
0123デフォルトの名無しさん
2010/06/02(水) 19:42:380124デフォルトの名無しさん
2010/06/07(月) 23:19:09例えば+と+なら同じだからtrueを返し、+と−なら異なるのでfalseを返すといった感じです。
0125デフォルトの名無しさん
2010/06/07(月) 23:25:28(eq? + 1) => #f
0126デフォルトの名無しさん
2010/06/08(火) 00:10:43出来ました。有り難うございます。
0127デフォルトの名無しさん
2010/06/08(火) 05:15:05portsでいれたcl-fooが(require :foo)で動きません
0128デフォルトの名無しさん
2010/06/09(水) 00:18:11ASDF1なら、asdf:*central-registry*に、
cl-fooのasdファイルがある場所を追加すればオーケー。
多分、どっかの下にあるsystemsってディレクトリに、
asdファイルのシンボリックリンク作ってると思うから、
そこをpushしとけばいいんじゃないかな。
(push "/home/foobar/share/lisp/systems/" asdf:*central-registry*)
みたいな感じ。
ASDF2なら、仕様が劇的に変化したから、公式のドキュメント読んでくれ。
0129デフォルトの名無しさん
2010/06/12(土) 15:14:29反復やsetf、letなんかを使うと負けた気分になるんだけどこれって正しい?
0130デフォルトの名無しさん
2010/06/12(土) 19:10:17最初のうちは、反復やsetfを使わないように意識するのは良いことだよ。
基本が身についたら反復もsetfもloopマクロも遠慮なく使うべきだ。
0131デフォルトの名無しさん
2010/06/12(土) 22:37:590132デフォルトの名無しさん
2010/06/14(月) 03:51:10せっかく慣れたのに
0133デフォルトの名無しさん
2010/06/14(月) 11:28:42この書き込みから、LISP信者は勉強ギライだということが分かりました
0134デフォルトの名無しさん
2010/06/14(月) 11:39:36listを使って再帰でループを回したら勝った気分になったんだけどこれって正しい?
A 勝手に何でも使って勝った負けたと喜んでいてください。
ループの固定回で違う処理を追加するために制御変数を渡すようにしたら不格
好に見えるんだけどこれって間違っている?
A 不格好かどうかは本人の主観です。勝手に間違っていると思っていてください。
0135デフォルトの名無しさん
2010/06/14(月) 11:42:55ソース見てみないと分からない
0136デフォルトの名無しさん
2010/06/14(月) 19:33:19つい最近出来た。仕様が変わりまくりで、良く言えば柔軟になった。
悪く言えば、は略。一応、後方互換も多少は残ってる。
>>134
速度の必要な場所ならベクタ(配列)使うべきだろうけど、
問題にならない場所なら、概ねリストの方が扱い易い。
ルックアップテーブルにリストを使うとかしなければ。
それと、状態を持ち回らないといけない場合は状態を渡すけど、
制御変数という表現には微妙に引っ掛かりを感じる。
なんとなくLispのイディオムから外れてる気もするので、
>>135の言うように、例を挙げてもらうといいかも。
0137デフォルトの名無しさん
2010/06/14(月) 22:01:35レスサンクス
最初が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)))))
続く
0138デフォルトの名無しさん
2010/06/14(月) 22:03:33(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 "~%"))
0139デフォルトの名無しさん
2010/06/14(月) 22:16:16なんか色々変だな
cond の条件節に setq ?
そもそも ch ってどこで宣言してるんだ?
0140139
2010/06/14(月) 22:21:48直感的には loop マクロ一発で書ける気がする
0141デフォルトの名無しさん
2010/06/14(月) 22:26:25色々抜けてるけど(外からやってきたと思われるaddrとか)、
ざっと見てとりあえず、
* アドレスをダンプする処理はl16-dumpには必要ない(呼び出し元でやるべき)
* リストを走査する処理がLispのセオリーとかけ離れている
* letとsetqの理解が曖昧
辺りは気になった。
関数ごとの機能を小さく作って、複数の機能を持たせないのが関数型の基本だし、
リストの処理をするときは、carで先頭を取って、残りをcdrで次に回すのが普通。
setqの部分は普通letを使ってchに束縛する。
0142デフォルトの名無しさん
2010/06/14(月) 22:58:27(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))))
こんな風だと思う。
0143デフォルトの名無しさん
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かなぁ。
0144デフォルトの名無しさん
2010/06/14(月) 23:37:37chは宣言していない。setqは代入された値を返すからlistの終端でnilを返し
再帰が終わる。addr と *addr*はともに別のところで大域変数宣言している。
*の有無は慣習を知らなかったため。
loop マクロ一発で書けるだろうが簡単になるとは思えない。
>>141
アドレスのダンプは1行分の処理をまとめたかったのでこうしている。
あとの二つは恥ずかしながらまったくわからない。letは局所変数宣言と
初期設定だと思っていた。letを使うべきでsetqがなぜダメなのかは知りたい。
最後の2行目はその通りにしている。
>>142
listで受けてdoを使ったのも書いてみた。制御変数(と言わないかもしれ
ないが)が必須なので若干違っている。
0145デフォルトの名無しさん
2010/06/14(月) 23:56:120146デフォルトの名無しさん
2010/06/14(月) 23:58:31もう少し落ち着いてから書き込めよ
0147デフォルトの名無しさん
2010/06/15(火) 00:01:08iphoneで書き込んだら変な変換かかってしまったw
実践Common Lisp 読みながら寝るぜ
0148デフォルトの名無しさん
2010/06/15(火) 01:56:38なら、アドレスもダンプする関数に渡すとかしたらどうだろう。
元のコードだと、外部の状態に処理が依存していて、関数型っぽくない。
参照透過性について調べてみて。これ無視すると関数型の威力激減。
二番目はこちらの勘違い。ごめん、忘れて。
letとsetqは慣習の話。仕様的にはsetqでもダメじゃない。
letは値に名前を付ける。setqはその名前に結び付けられた値を書き換える。
だから、setqを見たLisperは、どこかの変数の値を書き換えてるんだな、と思う。
典型例は>>139。要するに紛らわしい。
0149デフォルトの名無しさん
2010/06/15(火) 20:22:55マジレスすると16より少ない場合があるからたぶん使えない。
>(if (<= 32 c 126) (code-char c) #\.)
なるほどこれはいい。
>>148
>なら、アドレスもダンプする関数に渡すとかしたらどうだろう。
以前は必ずそういう書き方をしてたのだが最近になってしなくなった。
なぜしなくなったか書くと私にとってくだらない議論になるだけだから書かない。
あのソースを出したのは不用意だった。こういう展開になるのを予想できていた
らそのように書いたのを見せていただろう。再帰については>>142のやり方が綺
麗に見える。
0150デフォルトの名無しさん
2010/06/15(火) 20:46:46対話型の学習には向いていないのでテンプレのリンク集を試してみて下さい
0151デフォルトの名無しさん
2010/06/15(火) 21:05:57何か色々話が逸れたけど、本題の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に'(" " " " " " " ")渡せばいい。
0152デフォルトの名無しさん
2010/06/15(火) 22:48:54とってもアレだから気を付けようね。
* (let'(a 1)(list quote a))
(NIL 1)
0153デフォルトの名無しさん
2010/06/16(水) 23:10:41動的型なのに
0154デフォルトの名無しさん
2010/06/16(水) 23:49:570155デフォルトの名無しさん
2010/06/17(木) 00:12:45>letは値に名前を付ける。setqはその名前に結び付けられた値を書き換える。
このあたり抽象的すぎて理解できていない。メモリ上のデータが両者でどう違
うか分かるまでは分かったような気にならない人間だからこういう説明は結構
辛い。説明が悪いといっているのではなくアセンブリ言語から入った人は多少
はこういう感覚を持っていると思う。
>>150
> 対話型の学習には向いていない
いえいえそんなことはありません。>>134以来皆さんのレスのおかげで随分
学習が進んでいます。あらためてお礼を申し上げます。この程度ならlisperが
違和感無く見られるソースを書けるようになっていると思います。
>>151
レスサンクス。
>まず、データを読み込むときに、16に足りない分はnil辺りで埋めておけば、
これだとlengthで位置がとれる(今やってみた)のでそちらの方が簡単かと。
>>152
これを書くときはwebを見てコピペしたみたいだ。自分の参考書2冊ともこん
な書き方をしてなかった。なぜアレなのかは想像もつかないがこれでなぜ動
いているのかの方がもっと不思議。
0156デフォルトの名無しさん
2010/06/17(木) 03:22:50letは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)))))
こういう意味。これなら、不足バイト分後から空白で埋める必要ないから。
0157デフォルトの名無しさん
2010/06/17(木) 03:39:21どうぞ、disassemble関数(ANSI標準)で心ゆくまで納得してください。
0158デフォルトの名無しさん
2010/06/17(木) 07:32:27英語だけど平易だし斜め読みでいい。
ttp://www.cs.umd.edu/~nau/cmsc421/norvig-lisp-style.pdf
lisp にも、他の言語と全く同じく、良いスタイルがあるんだ。
0159デフォルトの名無しさん
2010/06/17(木) 15:56:09すげぇ。lisperってこんなん普通に書いちゃうわけですね... orz
sep に渡す引数って、使いきっちゃうと nil 渡したときのデフォルトが使われ始めるけど
これを最初に渡した sep で繰り替えしたいときはどうするのが一番スマートですか?
リーダーマクロ使って循環リストを引数に渡す、ってのは思いつきましたけど
lisperならフツウどうするんですか?
0160デフォルトの名無しさん
2010/06/17(木) 17:55:50letとsetqの違いを理解できないのは私がアホなだけで説明する人のせいではあり
ません。
もともとは再帰関数で制御変数みたいなのをを持って回るのがカッコ悪いのでは
ないかという疑問だったのです。listを持って回るのは再帰的構造をしているので
違和感はないのですが渡すのが一つで済むならそちらがいいのではないかと思
ったわけで好みの問題だと思います。
>>157
サンクス gclでやってみたけど違いはsetqではグローバル変数を作ってそれに値
を入れるということでいいのだろうか?そこしか違いが分からないがもしそうだとす
れば気持ち悪いソースを書いていたんだと思う。
0161デフォルトの名無しさん
2010/06/17(木) 18:08:110162デフォルトの名無しさん
2010/06/17(木) 18:08:550163デフォルトの名無しさん
2010/06/17(木) 18:43:17ってか
0164デフォルトの名無しさん
2010/06/17(木) 20:48:36そんなんだわ。愛してるよ。
0165デフォルトの名無しさん
2010/06/18(金) 01:34:40要はひとつのサイクルを持ち回すことができれば良いので、
(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で関数内関数を作ってそちらを再帰したり、
ネタっぽい方法しか思い付かなかったので、普通に循環リスト使うのが良いと思います。楽だし。
0166デフォルトの名無しさん
2010/06/18(金) 01:37:39(defun f (l n)
(loop repeat n
for y = l then (if (cdr y) (cdr y) l)
do (format t "~a" (car y))))
で。
0167デフォルトの名無しさん
2010/06/18(金) 02:21:03必要な状態を持って回るのは普通だと思う。不要な物まで持ってく必要はないけど。
再帰の定石を知りたいなら、Schemeのコードが参考になるんじゃないかと。
CLerは普通loopとかdoとか使うし。
setqは、ローカル変数の宣言次第でまた違うけど、件のコードだとまさにそう。
0168デフォルトの名無しさん
2010/06/18(金) 20:35:40サンクス 関数のなかでグローバル変数を作れてしまうのに逆に驚いてしまった。
皆さんのおかげで最初の一歩を踏み出す準備ができました。とくにソースを示して
くれた人、どれも示唆に富んでいました。ありがとうございました。
0169デフォルトの名無しさん
2010/06/20(日) 22:19:55そして何故 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回でそれぞれ回してるのが気になるけどどうにかならない?
0170デフォルトの名無しさん
2010/06/20(日) 22:26:180171デフォルトの名無しさん
2010/06/20(日) 23:30:58CLも使うけど、元々SchemerだからCLのformatには付いて行けないw
0172デフォルトの名無しさん
2010/06/21(月) 20:16:160173デフォルトの名無しさん
2010/06/21(月) 22:52:13formatterマクロを通してどんな関数に変換されてるのか想像しながら書くと楽しいんじゃないか。
~Rとか~@Rみたいなのはどうかと思うけど、年に2回くらい感謝する時があるから困る
0174デフォルトの名無しさん
2010/06/21(月) 23:24:33shiroさんは変態という名の紳士なんだね…
0175デフォルトの名無しさん
2010/06/22(火) 15:44:14GIMPのScript-fuを勉強してるのですけど
while が出てくるんですよ
でも、勉強用にインストールした DrScheme 上で、
言語選択でR5RSにして
while を使おうとしても「そんなのねえよ」と言われてしまう
たぶん、GIMP上では while が独自に実装されてるんでしょうけど
R5RSでは while が無いということは…
while でループをするのは、
Lisp系の言語にとって「筋が悪い」ことなのでしょうか?
できるだけ再帰でループしたほうが「筋がいい」のでしょうか?
Lisp系の中で、while の扱い・立場がよくわかりません
0176デフォルトの名無しさん
2010/06/22(火) 20:56:32Lisp 的には、再帰的な処理は再帰で書き、繰り返し的な処理はループで書く
というのが筋がいいと思う。Lisp の利点は再帰を使う事ではなく、問題に
合わせて自然にプログラムを書ける事だよ。
ちなみに Scheme のスレは↓こっち。
Lisp Scheme Part30
http://pc12.2ch.net/test/read.cgi/tech/1270897776/
0177デフォルトの名無しさん
2010/06/22(火) 22:52:18変態の称号授与
0178デフォルトの名無しさん
2010/06/23(水) 00:28:21知らない人が見たら罵倒でも
CLerには称号なんだよな〜
なんでこんなとんがった言語扱いなんだろう、こんなにも平べったいのに
0179デフォルトの名無しさん
2010/06/23(水) 09:26:57最小限必要な機能の中にはないってことだと思う。
R5RS は言語コアで何でも解決しようっていうものじゃないから、
規格にあるか無いかは筋の良さとはあまり関係がない。
while くらいなら自前で書いても大した手間じゃないから、
それほどポータビリティが損なわれるわけでもない。
while で書くのが自然だと思うなら while で書けばいい。
0180デフォルトの名無しさん
2010/06/23(水) 12:08:410181デフォルトの名無しさん
2010/06/23(水) 15:18:53(最小の?) lisp からのブートストラップで CommonLisp を構築、っていう方向性の実装はありますか?
0182デフォルトの名無しさん
2010/06/23(水) 21:44:27shiro さんの format じゃないけど, 普通見るだろ, manual を?
# まぁ unix の man はすりへらなからなぁ
# ls のオプション全部覚えてる人っているのかな?
0183デフォルトの名無しさん
2010/06/23(水) 23:35:56SBCL とか Clozure とか。
最小の Lisp からブートストラップと言うより、既存の CL 処理系を使って
ブートストラップする感じだけど、ANSI で標準化されている言語だから
最小に拘る必要も無いのよね。C のコードは少ないから、まあ見てみなよ。
0184デフォルトの名無しさん
2010/06/24(木) 01:42:56ttp://trac.clozure.com/ccl/ticket/696
WindowsでClozure CL使ってる人、やっと来たぜー。
SLIME使ってると良く固まる不具合が解決した。
これで1.4からバージョンアップできる。
0185デフォルトの名無しさん
2010/06/24(木) 14:55:19CLtLを紙で見てないけど…
0186デフォルトの名無しさん
2010/06/24(木) 15:00:410187デフォルトの名無しさん
2010/06/24(木) 15:52:580188デフォルトの名無しさん
2010/06/24(木) 16:48:030189デフォルトの名無しさん
2010/06/24(木) 17:00:030190デフォルトの名無しさん
2010/06/24(木) 17:08:410191デフォルトの名無しさん
2010/06/24(木) 21:03:260192デフォルトの名無しさん
2010/06/24(木) 21:08:130193デフォルトの名無しさん
2010/06/24(木) 21:09:38あっただと?
まだ俺の部屋にあるぜ。
0194デフォルトの名無しさん
2010/06/25(金) 19:44:04(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 `|.|) の ` はどういう意味があるんでしょうか?
0195デフォルトの名無しさん
2010/06/25(金) 21:03:01出現順単語表のルートでは?
0196デフォルトの名無しさん
2010/06/25(金) 21:24:250197デフォルトの名無しさん
2010/06/25(金) 22:01:10タイピングがはるかに楽だったという事に気付いてorzってなったと見た
0198デフォルトの名無しさん
2010/06/28(月) 12:27:470199デフォルトの名無しさん
2010/06/29(火) 07:08:060200デフォルトの名無しさん
2010/07/01(木) 00:13:20与えられた数と演算子から、リストを狭める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)が
返ってくる筈なのですが、(☆)の行で、関数に対して無駄な部分がある というメッセージと共に
エラーが出ます。何処が間違っているのか、ご教授頂けないでしょうか。
0201デフォルトの名無しさん
2010/07/01(木) 00:22:36ここはSchemeスレじゃNEEEEE!!
というか、Schemeだと関数内関数は、
(define (f x)
(define (aux x)
...)
...)
みたいに普通に入れ子でdefineで定義できるぞ。
というか、そのlocalはどこから出てきた。
0202デフォルトの名無しさん
2010/07/01(木) 00:25:57学校で局所関数を用いる時はlocalを使って上のように書く、と教わったもので…
0203デフォルトの名無しさん
2010/07/01(木) 00:29:04R5RS
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/
0204デフォルトの名無しさん
2010/07/01(木) 00:31:17処理系(コンパイラあるいはインタプリタ)はどれ?
0205デフォルトの名無しさん
2010/07/01(木) 00:40:07DrSchemeです。
0206デフォルトの名無しさん
2010/07/01(木) 00:44:53それlocal文の外でf使ってるからだよ。
(reduce ...)の前の閉じ括弧ひとつ消して。
で、マニュアルをちゃんと読むんだ。
マニュアル
ttp://docs.racket-lang.org/reference/local.html
限りなくここの大学と思われる参考資料
ttp://www.db.is.kyushu-u.ac.jp/rinkou/scheme/kougi15/Slide02.html
0207デフォルトの名無しさん
2010/07/01(木) 00:53:28>local式内で定義された変数、関数などは、そのlocal式の中でのみ有効
本当ですね…括弧閉じの位置が違うせいで、fがlocal外に出ていました…。
解決することが出来ました。本当に有り難うございました。
ちなみにどうして大学バレたし
0208デフォルトの名無しさん
2010/07/01(木) 00:56:52次Schemeの質問ここでしたら、Common Lispに改宗な。
国内でScheme教えてて、DrScheme使ってて、独自拡張のlocal文教えてる所なんて、
超レアなんだから、ググったら一発。
0209デフォルトの名無しさん
2010/07/01(木) 12:43:250210デフォルトの名無しさん
2010/07/01(木) 19:49:29宿題丸投げじゃなくて悩んで書いた事がわかるときはLispスレって妙に親切だよね
あとやっぱりCommonLisp単独でのネタはなかなか来ないからってのもあるのかもね
0211デフォルトの名無しさん
2010/07/04(日) 12:18:590212デフォルトの名無しさん
2010/07/05(月) 11:24:31Lispの処理系ばっか増えてライブラリー作りを誰もしないからな
0213デフォルトの名無しさん
2010/07/17(土) 05:11:38http://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
0214デフォルトの名無しさん
2010/07/20(火) 07:30:13サーバにsbcl等の処理系入れて、コンパイルしたfaslファイルをおいてcronからコマンドでって感じでしょうか?
0215デフォルトの名無しさん
2010/07/20(火) 09:35:59sb-ext:save-lisp-and-dieで実行バイナリ作れば良いよ。
0216デフォルトの名無しさん
2010/07/20(火) 21:56:19repl上でcron作れるからrepl抜ける必要がないみたい。
0217デフォルトの名無しさん
2010/07/21(水) 23:33:52>>214 じゃないんだが感謝。
cron のまがいのものを、必要に迫られて作ってる最中。
day of month で carry が出るときの day of week の処理が、とてもめんどっちい
0218デフォルトの名無しさん
2010/07/22(木) 11:50:35継続とdelayの出番
0219デフォルトの名無しさん
2010/07/22(木) 20:03:36cron は、時系列処理じゃないことに留意
# 簡単な例
m 月と n 月の x1, x2 日と毎週 y1曜日とy2曜日に処理する
m と n が連続してればいいけど, してなかった場合, 処理を実行すべき
y? 曜日ってどうやって決定する?
0220デフォルトの名無しさん
2010/07/25(日) 04:56:15サンクスです。規制されてて書き込めませんでした。
cl-cron なんてのもあるんですね。
0221デフォルトの名無しさん
2010/07/25(日) 11:20:04結構Lisp向きのデータ構造だと思うんだが。
0222デフォルトの名無しさん
2010/07/26(月) 08:52:26を、昨日は lambdassociates.org に接続できなかったけど今日はOKだた。
たまぁに接続できなくなるのはなんでだろ。
0223デフォルトの名無しさん
2010/07/27(火) 08:30:310224デフォルトの名無しさん
2010/07/27(火) 10:28:51これからweb検索するのがえらくめんどくさい事になりそうでやだなぁ
0225デフォルトの名無しさん
2010/07/27(火) 12:07:35それに映ってるLISPのロゴ入ったノートPCがほしい
0226デフォルトの名無しさん
2010/07/27(火) 12:45:55こりゃだめだわ 流行らない
0227デフォルトの名無しさん
2010/07/27(火) 16:02:220228デフォルトの名無しさん
2010/07/27(火) 16:05:400229デフォルトの名無しさん
2010/07/27(火) 16:23:570230デフォルトの名無しさん
2010/07/27(火) 16:41:400231デフォルトの名無しさん
2010/07/27(火) 17:00:020232デフォルトの名無しさん
2010/07/27(火) 17:42:230233デフォルトの名無しさん
2010/07/27(火) 18:48:46このスレにはそんな人が多いと信じていた。
0234デフォルトの名無しさん
2010/07/27(火) 19:40:47しかしSchemeスレよりこっちのほうが否定的でないのには驚いた
0235デフォルトの名無しさん
2010/07/27(火) 21:12:55nilじゃなきゃ大丈夫だからじゃね?
0236デフォルトの名無しさん
2010/07/27(火) 23:53:30split-sequenceもkmrcl:delimited-string-to-list もダメぽでした。
0237デフォルトの名無しさん
2010/07/28(水) 01:08:11何でも取り込むのがCL流。
0238デフォルトの名無しさん
2010/07/28(水) 07:48:02asdf::split
0239デフォルトの名無しさん
2010/07/28(水) 07:49:430240デフォルトの名無しさん
2010/07/28(水) 09:50:15cl-ppcreのsplitどう?
0241デフォルトの名無しさん
2010/07/28(水) 19:09:39阿澄 「coffee-p?」
片岡 「tea.」
0242デフォルトの名無しさん
2010/07/28(水) 22:37:040243デフォルトの名無しさん
2010/07/28(水) 23:27:43それだったら俺もほしいかも
0244デフォルトの名無しさん
2010/07/28(水) 23:49:07おぉ、サンクスです!できました!
参考までに教えていただきたいんですが、こういうのってどうやって調べてるんですか?
0245デフォルトの名無しさん
2010/07/29(木) 00:52:17次に、マッチングする関数を提供するなら、それを使った操作も一緒に提供するだろうと、
cl-ppcre見に行ったらビンゴだった。
普段は、逆引きCommonLispやThe Common Lisp Cookbookを見たり、
適当なキーワードでググったりしてる。
0246デフォルトの名無しさん
2010/07/29(木) 01:28:12; loading system definition from /root/.sbcl/systems/jp.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM :JP> as JP
; registering #<SYSTEM :JP-TEST> as JP-TEST
こういうヤツ。
0247デフォルトの名無しさん
2010/07/29(木) 08:06:180248デフォルトの名無しさん
2010/07/29(木) 22:44:00240じゃないけど、asdf-install や cl-build でありったけライブラリ入れておいて、
その状態のコアイメージ作成する。
で自分の欲しい機能や関数をM-x slime-aproposで検索して探すのがいいんじゃないかな。
0249デフォルトの名無しさん
2010/07/30(金) 05:47:45http://pc11.2ch.net/test/read.cgi/prog/1280205933/
0250デフォルトの名無しさん
2010/08/03(火) 12:17:17> 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上に移るのか?・・・
0251デフォルトの名無しさん
2010/08/04(水) 23:08:35CLに実装して、その先は、Clojure over JVM/CLR/DVM で動くようにするのか。
0252デフォルトの名無しさん
2010/08/05(木) 12:28:03復刊決定だって
すげーな
けど、なんで?Lisp
0253デフォルトの名無しさん
2010/08/05(木) 13:03:44それこのスレの4か5位で復刊してほしいとか言う話があったはず、もっと前スレかもしれんけど
0254デフォルトの名無しさん
2010/08/05(木) 13:07:39みつけた
【入門】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
ちょうど三周年なので記念に購入してきた
0255デフォルトの名無しさん
2010/08/05(木) 14:04:48それともサイトに載せるだけなのだろうか。
0256デフォルトの名無しさん
2010/08/05(木) 14:07:44みんなの青い星
あと、参院予算委員会をみてるにょ
0257デフォルトの名無しさん
2010/08/05(木) 22:52:35昔書泉で見つけて、あの時買っておけば良かったなーとか思ってたけど、復刊してたのか。
そういや、bitも無くなってるんだな。
0258デフォルトの名無しさん
2010/08/09(月) 04:29:23CLOSが設計されるに至った経緯の部分は読み物として今も面白いと思うし、
示唆に富む部分もあると思う。
0259デフォルトの名無しさん
2010/08/09(月) 14:55:34誰か使い方分かる人いる?
0260デフォルトの名無しさん
2010/08/09(月) 14:57:54に2004年ぐらいにあがってた
thinlisp-1.1.tar.gz
というファイルをおもちの方は誰かいませんか?
0261デフォルトの名無しさん
2010/08/09(月) 21:08:04これか?
ググル先生の1ページ目にあったが
0262デフォルトの名無しさん
2010/08/10(火) 12:02:440263デフォルトの名無しさん
2010/08/10(火) 20:44:090264デフォルトの名無しさん
2010/08/11(水) 07:21:23デフォルトで入ってるloopなどのマクロを展開させないことはできますか?
0265デフォルトの名無しさん
2010/08/11(水) 22:54:21そうゆうマクロを書けばええんちゃうの?
つか、なんのための package?
0266デフォルトの名無しさん
2010/08/14(土) 11:14:480267デフォルトの名無しさん
2010/08/17(火) 04:41:520268デフォルトの名無しさん
2010/08/17(火) 09:19:04何がやりたいのかを説明したほうが、
より良いアドバイスをもらえると思うぞ。
0269デフォルトの名無しさん
2010/08/17(火) 13:23:430270デフォルトの名無しさん
2010/08/17(火) 13:40:320271デフォルトの名無しさん
2010/08/21(土) 18:18:41プロファイルのように、実行中のプログラムのどの関数でコンシングが起こっているか調べる方法はないでしょうか。
処理系はSBCLです。
0272デフォルトの名無しさん
2010/08/21(土) 19:39:18cons 関数を適当に上書き (再定義) してみるとかってどうだろう。
0273デフォルトの名無しさん
2010/08/21(土) 21:10:45ここの真ん中くらい
http://a-nickels-worth.blogspot.com/2008/03/optimizing-cl.html
0274デフォルトの名無しさん
2010/08/21(土) 21:12:46(profile-soundex)
ってところね。
0275デフォルトの名無しさん
2010/08/22(日) 00:08:530276デフォルトの名無しさん
2010/08/22(日) 02:57:36マニュアルで一章丸々割いて説明してるんだが。
ttp://www.sbcl.org/manual/#Profiling
>>275
devブランチは停滞しつつも先に進んでるみたいよ?
まあ、実際に仕事で使ったりしない限り、モチベーション続かないとは思うけど。
0277デフォルトの名無しさん
2010/08/24(火) 17:12:38clはscheme(特にplt)と比べるとドキュメント少ないね
ソース読めってことなのかな
0278デフォルトの名無しさん
2010/08/24(火) 21:24:590279デフォルトの名無しさん
2010/08/25(水) 00:15:45Schemeのドキュメントが豊富とか全く思ったことがない。
「PLTの」ドキュメントが充実しているだけで、SchemeもCLも似たようなもん。
0280デフォルトの名無しさん
2010/09/08(水) 13:09:42ドキュメントを保存している人いませんでしょうか
0281デフォルトの名無しさん
2010/09/08(水) 23:14:31http://www.thinlisp.org/index.html
のこと?問題なく見れるけど。
0282デフォルトの名無しさん
2010/09/09(木) 00:16:38サイトがとまるのか、DNSが引けないのか
そこらへんかね
0283デフォルトの名無しさん
2010/09/09(木) 13:39:47http://vsedach.googlepages.com/code.html
0284デフォルトの名無しさん
2010/09/09(木) 15:18:540285デフォルトの名無しさん
2010/09/11(土) 01:56:58global変数の何かが違うみたい
0286デフォルトの名無しさん
2010/09/11(土) 05:34:11どっちも間違ってる可能性もあるし、どちらも規格上妥当かもしれない。
HyperSpecかCLtL2、あるいはANSIを参照するのが一番確実。
あとは、コードとかの具体的な情報を貼っておけば、偉い人が答えてくれるかも。
0287デフォルトの名無しさん
2010/09/12(日) 19:33:07などをファイルで落とせるとこ誰か知りませんか?
あれも、LISPの仲間なので…
0288デフォルトの名無しさん
2010/09/12(日) 22:30:40確かにRはアルゴルシンタックスのLispと言えなくもないから、
まったくスレ違いじゃないな。
0289デフォルトの名無しさん
2010/09/13(月) 03:47:360290デフォルトの名無しさん
2010/09/13(月) 07:22:430291デフォルトの名無しさん
2010/09/13(月) 11:19:51最近規制多いからな
0292デフォルトの名無しさん
2010/09/13(月) 11:22:000293デフォルトの名無しさん
2010/09/13(月) 16:46:29/usr/share/common-lisp
asdf-installが入れるのが
/opt/common-lisp
か
~/share/common-lisp
clbuidが入れるのが
~/clbuild
同じパッケージのバージョン違いが
これらのasdfのpathの中にあるのだけど
どうしたものか
0294デフォルトの名無しさん
2010/09/13(月) 21:28:510295デフォルトの名無しさん
2010/09/14(火) 23:49:14clbuildをベースにしているみたいなので、使い勝手もそんな変わらないし、
処理系毎に、faslを管理してくれるし。
0296デフォルトの名無しさん
2010/09/16(木) 09:43:46sbclでない処理系使えばいいのだろうか
0297デフォルトの名無しさん
2010/09/16(木) 11:13:41あと古い情報だけどSBCLはISO-2022-JPをサポートしてないらしい。
http://lispuser.net/commonlisp/japanese.html
0298デフォルトの名無しさん
2010/09/16(木) 16:06:010299デフォルトの名無しさん
2010/09/16(木) 22:12:40簡単に書けるだろ?
EUC <-> ISO-2022-JP 変換
GR 呼び出しでまかなえなけりゃシングルシフトするだけだし…
0300デフォルトの名無しさん
2010/09/17(金) 01:49:23化けてるって、具体的にはどうなってんの?
単に内容がベクタで返ってくるとかでなく?
>>298
何のためにガーベッジコレクタがあるんだ。
要らないなら捨てて新しいの使っとけ。
0301デフォルトの名無しさん
2010/09/17(金) 02:58:05とかで出てくる &rest みたいな & 付きのキーワードみたいなものは、一体何者なのでしょうか?
記号がググりにくくてしょうがないので聞いてみました。
0302デフォルトの名無しさん
2010/09/17(金) 03:06:250303デフォルトの名無しさん
2010/09/17(金) 06:31:460304デフォルトの名無しさん
2010/09/17(金) 18:29:04Scheme なら htmlprag が定番だが、あれってどういう仕組なんだろうな。
CL へ移植するついでに解説してくれ。
0305デフォルトの名無しさん
2010/09/17(金) 23:35:24ttp://www.cliki.net/web
にいくつか候補がある。使ったことはないから詳細は不明。
ただ、CLの世界ではSXMLってメジャーじゃないから、
SXMLに変換するライブラリは多分ないと思う。
0306デフォルトの名無しさん
2010/09/21(火) 15:41:33気になったのはwindowsのxyzzyではCLOSが実装されていないことですが、
xyzzyに実装されているCLの関数やマクロで、
CLOSをなんとかしてエミュレートできないものでしょうか。
どこかの本で、CLOSの正体はCLの基本的な?機能により実装されたものである、みたいなことを見かけた気がしますので。
0307デフォルトの名無しさん
2010/09/21(火) 15:46:22ttp://xyzzy.s53.xrea.com/wiki/index.php?tips%2F%A4%CA%A4%F3%A4%C1%A4%E3%A4%C3%A4%C6CLOS
こんなのがあるけどどの程度準拠してるのかな
0308306
2010/09/21(火) 15:49:53ANSI Common LispじゃなくてCLtL2でした。
0309デフォルトの名無しさん
2010/09/21(火) 16:04:49PortableCommonLoops
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)
が参考になるんじゃないでしょうか。
0310デフォルトの名無しさん
2010/09/21(火) 23:25:31ttp://blog.nicovideo.jp/niconews/2010/09/009179.html
名前考えた奴はLisperか
0311デフォルトの名無しさん
2010/09/21(火) 23:27:36ttp://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/clos/closette/0.html
以前xyzzyで動かそうとしてた人を見たような気がしたけどどうなったのかね。
0312デフォルトの名無しさん
2010/09/21(火) 23:28:49ttp://hibari.2ch.net/test/read.cgi/tech/1270897776/786
0313デフォルトの名無しさん
2010/09/22(水) 09:48:48一冊買って一通りやったのですがプログラム例少なくていまいち直感が掴めません
サンプルプログラムが多い本かHPあったら教えてください
0314デフォルトの名無しさん
2010/09/22(水) 12:22:100315デフォルトの名無しさん
2010/09/22(水) 12:33:46http://www.geocities.jp/m_hiroi/xyzzy_lisp.html
はどうですか?
0316デフォルトの名無しさん
2010/09/22(水) 17:33:540317デフォルトの名無しさん
2010/09/22(水) 20:51:06ここはCommon Lispのスレだから、
Schemeの話はLisp Schemeスレでお願いしたいところ。
あと、その質問の仕方じゃ、LOL読んだ人以外、
どれだけ良書知ってても紹介できない。
マクロの応用例が豊富に紹介されてる本ってことでいいの?
というか、伝統的マクロも健全なマクロも本質は同じで、
アプローチが違うだけなので、Schemeでも大抵似たようなことはできる。
0318デフォルトの名無しさん
2010/09/22(水) 21:51:30emacsとSBCLはなんとかインストールしたんですが
0319デフォルトの名無しさん
2010/09/22(水) 22:17:130320デフォルトの名無しさん
2010/09/22(水) 22:51:550321デフォルトの名無しさん
2010/09/22(水) 23:01:38プログラミングというものを覚える手段としてなら、
そんなハードルは高くない。むしろ楽な方。
じゃなきゃ、教育でLispなんて使わない。
ただ、とにかく何か作ってみたい、とか思っていて、
それがWindowsのゲームとかだったりすると、
割と茨の道確定。優劣ではなく、適正の問題で。
0322デフォルトの名無しさん
2010/09/22(水) 23:40:070323デフォルトの名無しさん
2010/09/23(木) 07:10:39ぜんぜん高くない。Have fun!
0324デフォルトの名無しさん
2010/09/23(木) 09:49:460325デフォルトの名無しさん
2010/09/23(木) 10:17:000326デフォルトの名無しさん
2010/09/23(木) 12:54:37むしろ中間が無い
どちらかというと入門の方が多いかもしれん。
上の方だといつも決まった名前しかでてこないし。
0327デフォルトの名無しさん
2010/09/23(木) 16:54:39Emacs Lispのものくらいじゃないか?
0328デフォルトの名無しさん
2010/09/23(木) 17:44:50VBS程度しか知らない初心者の俺が今読んでいるのが「初めての人のためのLISP」。
併行して「入門CommonLisp」と>>315のサイトで勉強してるんだが、初LISPは
凄く丁寧な説明で納得しながら進む事ができてる。
妙なテンションには引いたけど。実際に動かす為の例題として他2つを使っている感じ。
実は昔、グレアムのANSI CommonLispを読んで挫折してる。
0329デフォルトの名無しさん
2010/09/23(木) 18:53:34「俺が養分になっているうちに皆逃げるんだ!!」
「そう・・・それでいい・・・・ごふっ」
0330デフォルトの名無しさん
2010/09/23(木) 19:32:51consすらプログラミング初心者にはきついんじゃないかね
理解できないというより必要性を感じられない話題が多く、日常的な場面で役に立つような知識もなかなか出てこない
入門書は軽く十年以上前の本ばっかで環境の差異を自力で吸収しなきゃならなかったりと
とにかく必要以上に苦しむ気がする
学校でアルゴリズムやら何やらキッチリ叩き込んでもらいながら、勉強として覚えていくなら
Lispは入門用に適してるかもしれんけど
独学者が最初の一歩として選ぶ理由は無いと思う
0331デフォルトの名無しさん
2010/09/23(木) 21:15:29> 日常的な場面で役に立つような知識
これが具体的にどういうものであるかによるな
0332デフォルトの名無しさん
2010/09/23(木) 21:23:080333デフォルトの名無しさん
2010/09/23(木) 21:25:09初心者はCよりlispを選ぶべきだとか言いたいわけじゃないが。
どういう言語であれ、最初は短い断片的なプログラムをちょっとずつ動かして
自分なりにいじって遊んで覚えていくと思うんだが、そういう時間的な余裕のない人ということか?
0334デフォルトの名無しさん
2010/09/23(木) 22:03:590335デフォルトの名無しさん
2010/09/23(木) 22:33:37学者は初心者に対してやたらと、抽象化された純粋な知識ばかり教えたがる傾向があるけれど
それを独学で受け止められる奴はそうそういないぞ
簡単で強力なライブラリを豊富に持つ言語で、簡単なゲームや自分用のスクリプトを書けるようになってから
それでもなお学ぶ意欲があるならLispって道が一番楽だと思う
0336デフォルトの名無しさん
2010/09/23(木) 23:42:350337デフォルトの名無しさん
2010/09/24(金) 00:35:09あの頃に今のCommon Lispがあったら狂喜乱舞したと思う
たとえば
なんとなく名前が想像付きそうな機能を探す
BASICだとわずかな書籍(当時)
CommonLisp ならaproposで一覧 -> describe
目の前の機械からヒントもらえるとか当時はなかったもの。
まぁ今時ならどの言語でもggrksで済むけどな
0338デフォルトの名無しさん
2010/09/24(金) 01:21:16>学者は初心者に対してやたらと、抽象化された純粋な知識ばかり教えたがる傾向があるけれど
これって誰がわるいん?
0339デフォルトの名無しさん
2010/09/24(金) 02:53:47最初にLispの是非はさておき、純粋な知識だけ教えても退屈、というところには同意。
リストやツリーなどのデータ構造。ソートやサーチのアルゴリズム。
こういったものをそれだけでwktkして聞ける奴ってのは少ないと思う。一種のマニア。
普通は、実際にそれがどう実用的に応用できるか、ってのを聞いて初めてwktkする。
Practical Common Lispなんかは、その点ある程度考えてると思う。
On Lispとかも地味だけど面白い。
0340デフォルトの名無しさん
2010/09/24(金) 08:13:47ttp://journal.mycom.co.jp/articles/2010/09/24/lisp/index.html
0341デフォルトの名無しさん
2010/09/24(金) 08:58:520342デフォルトの名無しさん
2010/09/24(金) 12:26:36Practical Common Lisp、On Lisp
こっちのほうが言語マニアっぽいが…
0343デフォルトの名無しさん
2010/09/24(金) 12:44:05とかいってThe Little Lisperの朗読CDとか出たら買っちゃうんだろ?
0344デフォルトの名無しさん
2010/09/24(金) 12:48:46曲のタイトルが
普通のやつらの上を行け
とか
百年の言語
ファンクラブの名前はY Combinator
0345デフォルトの名無しさん
2010/09/24(金) 12:55:27後ろにいる黒いのが lambda
0346デフォルトの名無しさん
2010/09/24(金) 21:35:36> 日常的な場面で役に立つような知識
馬鹿に優しくしても馬鹿は馬鹿のまんまだ
0347デフォルトの名無しさん
2010/09/24(金) 22:50:440348デフォルトの名無しさん
2010/09/24(金) 23:10:350349デフォルトの名無しさん
2010/09/25(土) 00:46:070350デフォルトの名無しさん
2010/09/25(土) 05:37:27認知(神経)科学じゃね?
0352デフォルトの名無しさん
2010/09/30(木) 09:12:410353デフォルトの名無しさん
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))))
0354デフォルトの名無しさん
2010/10/08(金) 23:08:33(if (null lst)
nil
(nconc
(mapcar #'(lambda (x) (list (car lst) x))
(cdr lst))
(my-pair (cdr lst)))))
0355デフォルトの名無しさん
2010/10/08(金) 23:26:27(defun my-pair (l)
(mapcon #'(lambda (x) (mapcar #'(lambda (y) (list (car x) y)) (cdr x))) l))
0356デフォルトの名無しさん
2010/10/09(土) 01:53:56(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)))
再帰と言われたので、再帰だけで書いた。末尾再帰なので最適化可能。
0357デフォルトの名無しさん
2010/10/09(土) 04:11:44あと気になったこと色々。
その条件のときだけ何かしたい、って場合は、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の使用を検討すべき。
実際のプログラムでは、探した組み合わせをどうこうしたい場合がほとんどなので、
どうせなら組み合わせをリストとかで返したい。
以上、分かるところだけ直すと良いと思う。多少は先生の覚えがめでたくなるはず。
0358デフォルトの名無しさん
2010/10/09(土) 04:18:270359353
2010/10/09(土) 11:49:58>>357 大変参考になります。皆さんありがとうございました
最近はじめたんだけどSchemeにくらべてずいぶん過疎ですね
0360デフォルトの名無しさん
2010/10/09(土) 11:53:340361デフォルトの名無しさん
2010/10/09(土) 12:00:35初心者はいないのかなって
0362デフォルトの名無しさん
2010/10/09(土) 13:26:05過疎ってないSchemeがどれなのかどこなのか聞いてみようじゃないか
0363デフォルトの名無しさん
2010/10/09(土) 14:27:02>>359
Schemeも割とそうだけど、Common Lispをガンガン使ってる人って、
あんまり2chには常駐してない。ブログ界隈とかツイッター方面にはちらほらいる。
あとは、ネタ振ってくれれば、反応してくれる人も結構いると思う。
0364デフォルトの名無しさん
2010/10/09(土) 14:52:41CommonLispって国内だと園城さんのサイトだけで十分おなかがいっぱいで幸せになれちゃうからね
0365デフォルトの名無しさん
2010/10/09(土) 21:54:20> その条件のときだけ何かしたい、って場合は、ifよりもwhenを使う方が意図が分かり易い。
はあ?
0366デフォルトの名無しさん
2010/10/09(土) 22:03:440367デフォルトの名無しさん
2010/10/09(土) 22:06:22> はあ?
当たり前の事だけど、君には理解できないの?
0368デフォルトの名無しさん
2010/10/09(土) 22:17:11これは恥ずかしい。もしシラフで書き込んだんなら首を吊るレベル。
0369デフォルトの名無しさん
2010/10/09(土) 22:27:17著作は出てくるけどサイトがみつからない
0370デフォルトの名無しさん
2010/10/09(土) 22:36:25Norvigと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/
のことだと思う。おんじょうさん、って読むんだね。勉強になった。
0371デフォルトの名無しさん
2010/10/09(土) 22:37:10もうこれからは全部condだけでいいよな!
>>369
ttp://lispuser.net/じゃなかった?
0372デフォルトの名無しさん
2010/10/09(土) 22:54:59あー、みたことあるわ。さんこす!
0373デフォルトの名無しさん
2010/10/09(土) 23:00:42CLISP の製作者にパッチを送っているような方だったのね
納得しました
0374デフォルトの名無しさん
2010/10/09(土) 23:04:48もうちょっと詳しく補足すると、英単語としての語感の問題もあるけど、
whenはelse-formが無いから、条件付きの処理という意図を読み易い。
ifはelse-formがあるかどうかで、単なる条件付きの処理なのか、
分岐する処理なのか判断するから、僅かに文意が曖昧になる。
もちろんスタイルの問題であって、汎用的にifやcondを使う人もいるし、
R5RS Schemeなんかにはwhenやunlessは無い。
0375デフォルトの名無しさん
2010/10/10(日) 13:16:11普段使ってる言語はってあたりがものすげーウラヤマ
ASDFより手でライブラリを管理ってあたりで涙
何にCLつかってるので、やっぱり趣味なのかと納得
ショボーン
0376デフォルトの名無しさん
2010/10/10(日) 13:40:25たまに、作りのad hocさに足を引っ張られて、イラッとくることがある。
そういう意味でもQuicklispには期待する。
0377デフォルトの名無しさん
2010/10/10(日) 13:59:35ttp://random-state.net/sbcl-survey-2010.html
SBCLユーザの人、協力してあげてくれ。
0378デフォルトの名無しさん
2010/10/12(火) 11:39:41テストフレームワークでおすすめのものを教えてくれませんか?
出来ればASDFでインストール出来るものがいいです。
0379デフォルトの名無しさん
2010/10/13(水) 08:53:020380デフォルトの名無しさん
2010/10/13(水) 09:33:32使ってないから分からないけど、一応、こういうのはある。
ttp://www.cliki.net/test%20framework
>>379
できない訳がない。
ttp://www.lispworks.com/documentation/HyperSpec/Body/f_file_p.htm
0381デフォルトの名無しさん
2010/10/13(水) 09:58:26邦訳もあるし、英文なら無償で公開されてるから、読んでみるのもいいかも。
ttp://www.gigamonkeys.com/book/practical-building-a-unit-test-framework.html
0382デフォルトの名無しさん
2010/10/13(水) 10:09:27ttp://aperiodic.net/phil/archives/Geekery/notes-on-lisp-testing-frameworks.html
0383デフォルトの名無しさん
2010/10/13(水) 10:49:43こんな感じ。もちろん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)
0385デフォルトの名無しさん
2010/10/15(金) 15:10:48自動で日本語コード判別してhtmlへの変換なんてできますか?
0386デフォルトの名無しさん
2010/10/15(金) 22:10:50http://www.cliki.net/guess
0387デフォルトの名無しさん
2010/10/15(金) 23:09:010388デフォルトの名無しさん
2010/10/16(土) 00:15:15Drakmaは確か、ベースにしている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とか使って変換できる。
0389デフォルトの名無しさん
2010/10/16(土) 11:11:10いや、CLとあまり関係ない処理系なんだけどね
0390デフォルトの名無しさん
2010/10/16(土) 16:55:03面白い処理系なんだけどね
0391デフォルトの名無しさん
2010/10/18(月) 08:42:450392デフォルトの名無しさん
2010/10/18(月) 12:09:100393デフォルトの名無しさん
2010/10/18(月) 12:21:400394デフォルトの名無しさん
2010/10/18(月) 16:36:05sbclで
(* (- 1.0 0.6) 1.0)
とやると
0.39999998
となります
精度を上げることはできないのでしょうか?
CLには四種類の不動小数点型があるそうなんですが
デフォルトでどの型を使用するか指定することってでき
ないんでしょうか?
0395デフォルトの名無しさん
2010/10/18(月) 16:50:53四則演算のプロシージャを再定義したら?
0396デフォルトの名無しさん
2010/10/18(月) 17:24:36それってlockされてできないようになってませんでしたっけ?
0397デフォルトの名無しさん
2010/10/18(月) 17:27:54(* (- (coerce 1 'double-float) 0.6) 1.0)
0398デフォルトの名無しさん
2010/10/18(月) 18:25:40(format nil "~,20F" (* (- 1.0 0.6) 1.0)) で出るんじゃねーの、とか思ったら、違った... orz
clisp だと、 >>397 のやりかたでも 0.39999998 ってなる。どうしたらいいんだろう。w
0399デフォルトの名無しさん
2010/10/18(月) 19:28:37(setf *read-default-float-format* 'double-float)
0400デフォルトの名無しさん
2010/10/18(月) 20:15:49(eval (read-from-string "(* (- 1.0 0.6) 1.0)")))
0.4d0
0401デフォルトの名無しさん
2010/10/18(月) 21:50:04> (* (- 1.0 0.6) 1.0)
0.39999998
> (* (- 1.0d0 0.6d0) 1.0d0)
0.4D0
CCLだけど、SBCLでも同じじゃない? ANSIでどうなってるかは調べてない。
速度を重要視しない場合、有理数で計算するのもありだとは思う。
0402デフォルトの名無しさん
2010/10/18(月) 21:57:14CLISP 2.48でも、全部の精度合わせれば0.4d0になるよ。
> (* (- 1.0d0 0.6d0) 1.0d0)
0.4d0
0403デフォルトの名無しさん
2010/10/18(月) 22:33:440404デフォルトの名無しさん
2010/10/20(水) 21:09:12すごい欲しいんだけど
0405デフォルトの名無しさん
2010/10/20(水) 22:05:34自分で朗読すればいいんじゃね?
0406デフォルトの名無しさん
2010/10/20(水) 22:29:300407デフォルトの名無しさん
2010/10/21(木) 13:11:44治りそうな気配がない
sbclだけ古いバージョンの入れることってできたかな
0408デフォルトの名無しさん
2010/10/21(木) 13:24:410409デフォルトの名無しさん
2010/10/21(木) 13:31:190410デフォルトの名無しさん
2010/10/21(木) 14:27:14他の処理系選べよ。
0411デフォルトの名無しさん
2010/10/21(木) 14:44:390412デフォルトの名無しさん
2010/10/21(木) 16:24:39http://sourceforge.net/projects/sbcl/files/
から1.0.29のtar形式バイナリ取得すれば十分では?
0413デフォルトの名無しさん
2010/10/21(木) 23:25:26http://common-lisp.net/project/mkcl/
名前がイカす
0414デフォルトの名無しさん
2010/10/21(木) 23:49:430415デフォルトの名無しさん
2010/10/21(木) 23:50:340416デフォルトの名無しさん
2010/10/21(木) 23:55:250417デフォルトの名無しさん
2010/10/22(金) 00:16:33みんな考えることは一緒っぽい。
0418デフォルトの名無しさん
2010/10/22(金) 00:25:20Macの流儀は知らないけど、適当に/optみたいな場所に手動で突っ込んどけば?
そもそもLisp人口が少ないんだから、自分がメンテナになるくらいの勢いじゃないと、
パッケージシステムには期待できない。
0419デフォルトの名無しさん
2010/10/22(金) 00:57:56MacPorts がデフォルトでは /opt/local 以下にインストールされるから
出来れば名前を変えた方がいいかもしれないが、言っている事には同意。
0420デフォルトの名無しさん
2010/10/22(金) 03:13:48自分の手許の環境だと、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 に読み替えれば大丈夫だと思います。
0421デフォルトの名無しさん
2010/10/27(水) 12:55:08基本的な処理をスタックベースで実装したいです
竹内先生の本と3imp.pdf(ただしこれはscheme処理系)を読んで大体の雰囲気はつかめたのですが
実際にどこから手を付けてよいのかわかりません。
参考ページはありますか?
0422デフォルトの名無しさん
2010/10/27(水) 12:59:450423デフォルトの名無しさん
2010/10/27(水) 15:08:05ええ、ごく簡単なリスト処理とreplその他をカバーするものを
作ってみたいです
0424デフォルトの名無しさん
2010/10/27(水) 16:24:53「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/
0425デフォルトの名無しさん
2010/10/27(水) 16:40:01キャンパスリップほそみとかそういうノリか。
0426デフォルトの名無しさん
2010/10/31(日) 09:25:44いまはCLを勉強中。まだ基本的なことしかわかってないけど。
schemeはまったくわからん。
ひととおりCLについてわかったら、どっちかに手を出そうと思う。
ちなみに、Lispを使ってきちんとしたプログラムを作る気は
(今のところ)ない。
こんなことができるのか!って驚きを得たいってのが動機。
0427デフォルトの名無しさん
2010/10/31(日) 09:31:30マクロ以外の全てをやりたいか
どっち?
あとSICPはSchemeなので(事前知識はいらないけど)。
0428デフォルトの名無しさん
2010/10/31(日) 09:42:31レスありがとう。
マクロがやりたいかどうかより、両方やるんだけど説明が丁寧な方を
先に読みたい。敷居が高いと挫折しそうだから。
0429428
2010/10/31(日) 10:07:07ただ、どちらも敷居が高いことはわかってるんだ。
それでも段階を少しずつ上げていくことができたら、
挫折しなくて済むかなと思って。
文章がわかりにくかったので訂正を
>マクロがやりたいかどうかより、両方やるんだけど説明が丁寧な方を
>先に読みたい。
マクロもそれ以外もいずれやるつもりだから
内容で順番を決めるつもりはなくて、
それよりも説明が丁寧な方を先にやりたいと思ってる。
0430デフォルトの名無しさん
2010/10/31(日) 20:27:32それなりのLisperがより高度なマクロを学んでより高度なコーディングができるようになるための本。
マクロに関する話は (よほど基本的なところを除けば) 順を追って丁寧に記述されてるけど
標準ライブラリのことは当然知っているものとして書かれているから、
基本的なことしかわかってない、という程度の人が読んでも挫折するのがオチ。
SICPは、そもそもプログラミング言語とは何か?的な講義のテキストだから
段階を追って勉強したい人にはそっちから読んだ方が良いと思う。
0431デフォルトの名無しさん
2010/10/31(日) 21:02:59SICP は問題の表現の仕方というか、概念的なモデルの組み立て方を教えている。
言語として Scheme を使っているのはあくまでも解説のための記法のような位置付け。
Scheme 自体については大して説明していない。
On Lisp はそのタイトルが示す通り、 Lisp を前面に出してる。
ちょっとだけ Scheme も取り上げているけどほぼ Common Lisp が主役。
概念モデルのバリエーションは SICP で説明されているものよりは少ない。
但し、「Lisp で」表現するための具体的なテクニックを教えている。
>>426
> こんなことができるのか!って驚きを得たいってのが動機。
と、言うことであればどちらかというと SICP かなと思う。
SICP の思いきったパラダイムの転換は驚きが大きい。
On Lisp では現実的な部分からそういった抽象へと繋げようとしている感じがする。
0432デフォルトの名無しさん
2010/10/31(日) 21:39:36たいしたパラダイム転換は存在してないよ.
# ただし, ある意味, 書いてある内容は computer science の王道だ
ぶっちゃけ, 言語は scheme でなくても OK
たまたま, scheme が採用されていただけ(つか, 書いた人が...)
0433428
2010/10/31(日) 22:06:39とても参考になります。
話を参考にして考えると、SICPの方が良いみたいですね。
SICPを読みながら、気分転換にCLの知識を増やして
On Lispに臨むことにします。
どうもありがとうございました。m(_ _)m
0434デフォルトの名無しさん
2010/11/01(月) 07:58:32*** ERROR: unbound variable: nil
となるのにはまる。
0435デフォルトの名無しさん
2010/11/01(月) 10:04:02多分な
0436デフォルトの名無しさん
2010/11/01(月) 21:37:14CLというかLispについては基礎レベルをこなしているって事?
0437433
2010/11/02(火) 20:38:07人によっては、基礎できてないやんって思われる程度ですけど。
mapcar関数の使い方とかマクロの作り方(本当に基礎的なレベル)とか
くらいならわかります。
0438デフォルトの名無しさん
2010/11/02(火) 21:23:04SICP、On Lispよりも先に。SICPは挫折する人も多いらしいから。
0439433
2010/11/02(火) 22:36:08そうなんですか。
やっぱ、自分でマクロを不自由なく書けないと、
On Lispは難しいのかもしれないですね。
もう少しCLを勉強したらSICPに臨むつもりでしたが、
CLの勉強を続けてマクロが脳内ですぐに展開、あるいは作成
できるくらいまでやってみることにします。
0440デフォルトの名無しさん
2010/11/03(水) 12:42:26のぞいてみるぐらいいいんじゃないの
http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/
0441デフォルトの名無しさん
2010/11/03(水) 13:37:30on lisp と sicp は対象領域が全く別物
on lisp: common lisp の macro を極めよう!!!
sicp: 計算機科学の教科書
で, on lisp は, しつこく読んで例題やってりゃそのうち何とかなるが
sicp はプログラミングの知識だけじゃそのうちついていけなくなる.
0442433
2010/11/03(水) 16:02:11書き込みありがとうございます。
正直なところ、みなさんに、ここまで親切にしてもらえるとは
思っていませんでした。
>>440
のぞいてみました。
変数捕捉ってgensymで解消するんじゃないの?って思ってたら、
一部にそれっぽいことが書いてあったので、やっぱりそうかと思えました。
あと、意外にサンプルコードが短いですね(もちろん、理解は難しいの
でしょうけど)。
少し臆病になりすぎていた部分に気づけたのは良かったです。
>>441
SICPはプログラミングだけの知識だけじゃそのうちついていけなくなる
というのは、具体的にはどんな知識が要求されるのでしょうか?
それとも高い理解力が要求されるのでしょうか?
0443デフォルトの名無しさん
2010/11/03(水) 17:06:08微分方程式の知識が必要になったりとか...
大学 1 年 で要求される他の知識も必要となる.
0444デフォルトの名無しさん
2010/11/03(水) 18:19:04(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が更新されません.
どのようにすれば,他のスロットも更新されますか?
教えて下さい.
0445433
2010/11/03(水) 18:51:45微分方程式ですか・・・対象をモデリングするときに使うのですか?
他の本を読んで思い出せば、大丈夫だとは思いますが・・・orz
数学は記憶の彼方です。
ただ一度理解したものなので、マクロの使い方よりは自信があります。
(本当に思い出せるのかは、正直不安ですが)
0446デフォルトの名無しさん
2010/11/03(水) 18:55:24ごちゃごちゃ言ってる暇があったら読んでみればいいだけだろ
0447433
2010/11/03(水) 19:02:36そうですね。
CLの勉強をしたら、さっそくSICPを読んでみようと思います。
不愉快な思いをさせたみたいで、すいません。
0448デフォルトの名無しさん
2010/11/03(水) 20:07:480449デフォルトの名無しさん
2010/11/04(木) 01:48:20defsetf や define-setf-method で定義した setf の方が (setf HOGE) より優先されるんだったような
defstruct がどっちで setf するようになってるかは処理系依存のはず
0450デフォルトの名無しさん
2010/11/04(木) 11:09:01classの方でやればできるな。
(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))
0451デフォルトの名無しさん
2010/11/04(木) 11:13:37:accessor my-hoge-x の代わりに:wirterと:readerを別に設定するとシンプルにできるね。
0452デフォルトの名無しさん
2010/11/04(木) 12:28:29この辺りの過程を規定した自作の 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)
0453デフォルトの名無しさん
2010/11/04(木) 12:53:40訂正です.>>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)
0454デフォルトの名無しさん
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)))
0455デフォルトの名無しさん
2010/11/04(木) 14:13:210456デフォルトの名無しさん
2010/11/04(木) 19:28:41amb は面倒だと思うが可能。 CPS 変換を手書きする方法と、マクロで隠蔽するヒントが On Lisp に載ってるよ。
0457デフォルトの名無しさん
2010/11/06(土) 13:13:471.6での主な変更点は、
* ARM対応
* ASDF2対応
* コードカバレッジ機能改良
* cl:loadでネットワーク上のファイルを読めるように
* WindowsとLinuxでのクリティカルなバグの修正
0458デフォルトの名無しさん
2010/11/11(木) 01:01:02http://www.amazon.com/Land-Lisp-Learn-Program-Game/dp/1593272812/
大分前から日本アマゾンからもおすすめにのってたけど、発売されたの最近なのか。
サイトもあった気がする。
まんが?
0459デフォルトの名無しさん
2010/11/11(木) 15:07:42このマクロはすごいとかLispはすごいとか
それはわかってるからこの本読んでるわけで
本題だけを手短に説明してほしい
0460デフォルトの名無しさん
2010/11/11(木) 16:27:49むしろLispとかマクロとかの凄さをわかってるつもりになっていて実はまだまだ
って層のために書かれたんだろうし。
0461デフォルトの名無しさん
2010/11/11(木) 19:03:11おととい発送の通知が来てた。
0462デフォルトの名無しさん
2010/11/14(日) 04:19:38with-open-file で出来るのかと思ったら上手くいかなくて…
あ、DRAKMA は使わない方法で、です
0463デフォルトの名無しさん
2010/11/14(日) 04:48:08with-open-fileってローカルのファイル操作で、drakmaってhttpとかですよ? 用途が違う。
0464デフォルトの名無しさん
2010/11/14(日) 05:13:12with-open-file でも http からのアクセスが出来るのかと思って。すみません
やりたいことは、例えば http://example.com/ にあるファイルを取得したいんです
0465デフォルトの名無しさん
2010/11/14(日) 08:40:56「Common Lisp で」というのが処理系の拡張やライブラリ類を含まないとするなら回答としては「出来ない」
0466デフォルトの名無しさん
2010/11/14(日) 17:52:46ANSI Common LispはISO Cとかと一緒で委員会言語だから、
標準化の難しい機能まで規格には入れないよ。成立した時代の関係もあるけど。
Cだって、ソケットは、ISO CじゃなくてPOSIXで定義してるでしょ?
あと、何でDrakma使いたくないの? 処理系ごとのネットワークAPIばらばらだし、
基本上位ライブラリ使った方が楽なんだけど。しっかりした理由があるなら聞きたい。
0467デフォルトの名無しさん
2010/11/14(日) 17:55:34みたいな後付設定くるで
0468デフォルトの名無しさん
2010/11/14(日) 19:25:180469デフォルトの名無しさん
2010/11/15(月) 15:09:20ttp://love5an.wordpress.com/2010/11/14/intro/
Doors:
COMやOLE含むWindows APIのバインディング
LDX:
LisperフレンドリーなDirectXのラッパー。まだ未着手
Virgil:
新しいFFIフレームワーク。DoorsとLDXのベースライブラリ
まだまだ開発中みたい。
でもこういうのって大抵、Windows APIの膨大さで、失踪か放置か開発中止に追い込まれるよね。
結局は使う範囲だけ自分でFFIのコードを書くことになりがち。
0470デフォルトの名無しさん
2010/11/15(月) 15:10:58ありがとうございます。レスが遅れてすみません
やはりライブラリを使わないと出来ないんですね。素直に DRAKMA を使います
>>466
何となく DRAKMA 使わないで出来るかやってみようと思いまして
>>467
いやいやいや
0471デフォルトの名無しさん
2010/11/15(月) 18:53:31知的好奇心を満たしたい、って話なら、各処理系のマニュアル読めば、
直でソケット触れるAPIがどの処理系にもあるから、読んでみると良いよ。
あとはCとかと同じ。
あと、ライブラリを使わないとできない、ってのはちょっと意味合いが違うというか。
正確には処理系独自の拡張である、ネットワーク機能を使わないとできない。
基本的に、ライブラリで処理系にネットワーク機能付けられる訳じゃないから。
あと、これまた独自拡張だけど、Foreign Function Interface(FFI)を使えば、
POSIX APIでもWinsockでも呼び放題だから、それを使うという手もある。
良くあるパターンは、FFI経由でlibcurlとかへアクセスして、SSL通信するとか。
ただ、手間とか考えると、Drakmaとかを使えるなら使った方が、どう見ても楽。
0472デフォルトの名無しさん
2010/11/15(月) 19:04:360473デフォルトの名無しさん
2010/11/16(火) 02:25:58(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した結果は全く同じだったんですが、宣言を追加したときの
最適化されやすさなど違いがあったらお願いします。
0474デフォルトの名無しさん
2010/11/17(水) 16:02:360475デフォルトの名無しさん
2010/11/17(水) 17:47:14そういう書き換えが可能だということ自体、環境の独立性を示しているわけで、
違いが出る道理はなさそうだね。もし違ったら危険信号かも。
0476デフォルトの名無しさん
2010/11/17(水) 19:36:58comp.lang.lisp辺りで聞いてみると面白そうな気がする。
0477デフォルトの名無しさん
2010/11/18(木) 10:47:240478デフォルトの名無しさん
2010/11/18(木) 23:58:22あるけど、処理系依存だと思う。常用してる処理系だと、
> (ccl:object-direct-size "abc")
16
> (defstruct foo x y z)
foo
> (ccl:object-direct-size (make-foo))
24
みたいにできる。
0479デフォルトの名無しさん
2010/11/19(金) 16:33:18なるほど、ありがとうございます。処理系のマニュアルを見てみます。
0481デフォルトの名無しさん
2010/11/22(月) 00:43:46CPS 変換かけてラムダ持ち上げやると同型の式が得られると思う
0482デフォルトの名無しさん
2010/11/22(月) 01:21:24英語っても、複雑な質問じゃないし、短く質問して解答もらったらお礼言うだけじゃない。
規格の隅っこ突付く質問に、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して結果が違ってから気にすれば良いと思う。
0483デフォルトの名無しさん
2010/11/22(月) 02:04:37examplesでfletにinline使ってるし。
ttp://www.lispworks.com/documentation/HyperSpec/Body/s_flet_.htm
CLtL2にもそれっぽいこと書いてないみたいだし、規格上では同一性は保証されないけど、
多くの処理系では、最適化の過程で>>481のような処理がされて、結果が等しくなる、
って結論で良いんじゃないかと思う。
0484デフォルトの名無しさん
2010/11/22(月) 06:05:52「環境の独立性」で言いたかったのは、
fooの中の変数が、sqrt%の中の局所変数と束縛関係を持たない、みたいな。
ごめん、言い回しが正確じゃないかもw
0485デフォルトの名無しさん
2010/11/24(水) 19:38:02これのCommon Lisp版誰か作ってるだろうと思ったら
検索しても出てこない
0486デフォルトの名無しさん
2010/11/25(木) 00:36:17CPS変換ができません。
一旦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%(%)も自分の引数しか使ってないってことですか?
0487デフォルトの名無しさん
2010/11/25(木) 01:26:19CPS変換云々ってのは、処理系が末尾再帰を最適化するときに、
そういうことをするってことだと思うんだけど。ラムダリフティングも。
だから、labelsも当然展開されると思うんだけど、違うの?
0488デフォルトの名無しさん
2010/11/25(木) 02:05:03sqrt%をCPS変換するとどうなるんですか?
0489デフォルトの名無しさん
2010/11/25(木) 02:18:34というかできなくない? labelsの展開とlambda liftingはできても。
0490デフォルトの名無しさん
2010/11/25(木) 02:51:50ラムダリフティングはCPS変換で出てきたラムダをグローバルに
名前付けして順序を入れ替える操作、でいいんですか?
0491デフォルトの名無しさん
2010/11/25(木) 02:57:07ttp://en.wikipedia.org/wiki/Lambda_lifting
0492デフォルトの名無しさん
2010/11/25(木) 03:03:42(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見て調べた口だから間違ってたらごめん。
0493デフォルトの名無しさん
2010/11/25(木) 03:20:23(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
0494デフォルトの名無しさん
2010/11/25(木) 03:21:200495デフォルトの名無しさん
2010/11/25(木) 03:24:26ttp://www.is.s.u-tokyo.ac.jp/vu/jugyo/processor/process/soft/compilerresume/coverq3/coverq3.html
こういうことなのかもしれない。
これ以上は詳しくないので投げる。おやすみ。
0496デフォルトの名無しさん
2010/11/25(木) 03:35:47;; 最初
(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)))))
0497デフォルトの名無しさん
2010/11/25(木) 04:02:18ありがとうございます。
表計算ソフトを使ってるときも思うんですが、どうせカッコだらけに
なるんだからLispと同じシンタックスにすればいいのに.
>>492
>>496
結局リフティングするのにCPS変換はいらないんですか?
0498デフォルトの名無しさん
2010/11/25(木) 04:20:39>>497
全部自作自演でした……ということはないが、それ両方とも俺だ。
lambda liftingは自由変数をローカル関数から排除する仕組みで、
CPS変換は継続を明示的に渡していく仕組みだから、直交する概念のはずー。
でも、最近の関数型のコンパイラだと大抵は両方やってるっぽい。
0499デフォルトの名無しさん
2010/11/25(木) 17:49:15単にどこからも参照されないようにしてからsb-ext:gcを呼べばいいかと思って次のようにしても、topとかで見るとメモリ使用量が減っていないので。
(defparameter object 超巨大なリスト)
(setf object nil)
(gc)
ちなみにSBCL 1.0.34 で環境は FreeBSD 8.0R/ amd64 です。
0500デフォルトの名無しさん
2010/11/25(木) 18:02:47malloc(3)したメモリをfree(3)で返すとは限らない。
0501デフォルトの名無しさん
2010/11/25(木) 18:46:33更には free したからといってそのメモリがシステムに返却されるとは限らない。
最近の BSD は積極的にシステムに返す方針みたいだけど。
BSD を使おうという人ならその程度のことは知ってなきゃだめだよ。
0502デフォルトの名無しさん
2010/11/26(金) 07:28:07shiroさんなんて夜中の3時とかに何か書いたりしてる、いつ寝てるんだろう
0503デフォルトの名無しさん
2010/11/26(金) 07:38:01そうだとしたら shiro さんがいるハワイは8時頃だ
0504デフォルトの名無しさん
2010/11/26(金) 19:32:54アプリがOSにメモリを返す事は技術的には可能だが
実際の実装はケースバイケース
0506デフォルトの名無しさん
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
0507デフォルトの名無しさん
2010/11/28(日) 10:53:230508デフォルトの名無しさん
2010/11/28(日) 16:26:08いいなぁ、あれ欲しかったんだけど買えなかったんだよ
ポケコンコレクションで欠けてる部分結構でかいんだよな
0509デフォルトの名無しさん
2010/11/29(月) 00:12:43高価なアレグロしかないのでしょうか
0510デフォルトの名無しさん
2010/11/29(月) 00:12:45http://ja.wikipedia.org/wiki/LISP%E3%83%9E%E3%82%B7%E3%83%B3
これなのか
一切見たことがなかったから興味があるよ
今のパソコン換算でいうと(言うのが難しいかもしれないけど)、どれくらいのスペックなの?
0511デフォルトの名無しさん
2010/11/29(月) 08:26:100512デフォルトの名無しさん
2010/11/29(月) 12:55:13どういうレベルで言ってるのか知らないけど、
|aaa|で小文字のシンボルで、|Abc|で混合のシンボル。
エスケープしたくないって話なら、CLISP辺りには普通に機能がある。
0513デフォルトの名無しさん
2010/11/29(月) 13:24:491990年ごろには汎用のワークステーション使ったほうが安くて同じくらいの性能出るよね、
という話になったということなので、SPARCstation 1ぐらいということになるのかな。
0514デフォルトの名無しさん
2010/11/29(月) 13:27:330515デフォルトの名無しさん
2010/11/29(月) 13:48:24>>513
SPARC機に刺すシンボリックスのワンボードLispマシンあったけどね。
もともと環境が売りなので、性能比べても仕方ないけど。
0516デフォルトの名無しさん
2010/11/29(月) 23:06:34readtable-case
0517デフォルトの名無しさん
2010/11/29(月) 23:31:42CLHS見てみたけど、ANSIにあるんだね。独自拡張だと思ってた。
ACLのModernモードの仕組みってこれ?
0518デフォルトの名無しさん
2010/12/02(木) 15:46:49'#.*package*
という構文があるのですが、なんのためにこんなもの使うのでしょう
0519デフォルトの名無しさん
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)がおかしいようなのですが、どう修正すればよいでしょうか?
0520デフォルトの名無しさん
2010/12/03(金) 21:15:36`(progn ,@body)ではなく`(progn ,body)でした
0521デフォルトの名無しさん
2010/12/03(金) 21:20:31これでどうよ?
(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
]
0522デフォルトの名無しさん
2010/12/03(金) 22:39:05ありがとうございます。
意図したとおりできました。
なるほど、prognをはじめに使うのですね
勉強します
0523デフォルトの名無しさん
2010/12/03(金) 23:50:05そのマクロだと、マクロが展開されるときにformatが実行されちゃうので、
意図した通りに動かない。CLのマクロは、マクロ定義を評価した結果のリストを、
単純に呼び出しの所に置き換えるだけだから。仕組み自体はとてもシンプル。
これがSchemeのhygienic macroだと色々ややこしいんだけど。
>>520
それは,@bodyで合ってると思う。
0524デフォルトの名無しさん
2010/12/03(金) 23:59:35あと、マクロが上手く動いてない場合、実際に展開してみると良いよー。
というか、展開せずにデバッグするのは難しい。
(macroexpand-1 '(print-test-macro-ver (print-foo-etc) (print-piyo-etc)))
みたいにmacroexpandやmacroexpand-1を使うか、
SLIME使ってるなら、C-c C-mとかすると、新しいバッファに展開してくれるよー。
0525デフォルトの名無しさん
2010/12/05(日) 16:08:08処理系ってありますか?
0526デフォルトの名無しさん
2010/12/05(日) 17:17:46CP/M時代にはMuMathがやっていたような気がするけど。
0527525
2010/12/05(日) 18:14:47>>526
WindowsCE上にMaxima載せてrun_testsuite()する野望が…
0528デフォルトの名無しさん
2010/12/05(日) 23:11:48処理系というかライブラリだと、http://www.cliki.net/trivial-garbageとか。
処理系レベルの仮想記憶はweak pointer, finalizerなどの
primitiveに分解されてしまいました。ライブラリやミドルウェアの仕事です。
そういえばHLISPの実装者はお二人ともお亡くなりになってしまいましたね。
0529デフォルトの名無しさん
2010/12/06(月) 01:48:06cmucl とか sbcl あたりは 自前の仮想記憶を mmap と mprotect で
シミュレートしてる感じ
# thread とかの話が出てくるとややこしくなるけど、基本的にはってことで…
0530デフォルトの名無しさん
2010/12/06(月) 07:55:400531デフォルトの名無しさん
2010/12/06(月) 09:06:14もっとも CL は関数型とかいいながら手続き型要素てんこ盛りだけどね…
0532デフォルトの名無しさん
2010/12/06(月) 12:14:09haskel,mlと、scheme,clは、それぞれひとつづつ知ってたほうがいいと思う。
0533デフォルトの名無しさん
2010/12/06(月) 17:58:56Scheme も色んなパラダイムをサポートするよって冒頭に書いてある。
関数型的な性質が中核に据えられてはいるけど、言語として関数型には分類できない。
まぁ、そもそも「関数型とは何か」ってのもそれほど明確な定義は無い。
どちらが良いかという質問に対して正解は無い。 選択があるだけ。
0534デフォルトの名無しさん
2010/12/06(月) 18:57:50趣味として両方遊べばいいじゃない
0535デフォルトの名無しさん
2010/12/06(月) 20:45:380537デフォルトの名無しさん
2010/12/08(水) 12:59:56CLOSを使ってるとスロットへの代入がしょっちゅう出てきて関数プログラミング的じゃないよね。
0538デフォルトの名無しさん
2010/12/08(水) 13:06:530539デフォルトの名無しさん
2010/12/08(水) 15:12:12マルチパラダイム言語であるLispとしては、
破壊代入があるから不都合なことが多い。
0540デフォルトの名無しさん
2010/12/08(水) 18:51:54破壊代入があるから不都合なことって何?
破壊代入があるから結果としてマルチパラダイム言語になっているんじゃいのか
0541デフォルトの名無しさん
2010/12/08(水) 19:02:37意図しない共用が起きてそれを破壊しちゃうことが起きうるので、
破壊代入とハッシュによる共通部分は相性が悪い、とか、
そんなことだろうと思うが。
0542デフォルトの名無しさん
2010/12/08(水) 22:12:12ttp://trac.clozure.com/ccl/wiki
ttp://trac.clozure.com/ccl/wiki/ReleaseNotes/1.6
ttp://common-lisp-users.jp/index.cgi?Clozure%20CL#H-hprg786w
0543デフォルトの名無しさん
2010/12/12(日) 15:33:26http://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が分離されてる
あと、第四回って最近はじまったのかな
0544デフォルトの名無しさん
2010/12/12(日) 16:11:400545デフォルトの名無しさん
2010/12/12(日) 19:05:44…しかし熱い本だ。初めての Perl を彷彿とさせる
0546デフォルトの名無しさん
2010/12/12(日) 19:12:30EuLispが入ってない!って感覚は古いのですか?
それともいとこのISLISPが入っているからよしとすべきでしょうか?
0547デフォルトの名無しさん
2010/12/23(木) 01:42:32これってどうやって設定してるんでしょう?
0548デフォルトの名無しさん
2010/12/23(木) 02:01:480549デフォルトの名無しさん
2010/12/23(木) 02:39:450550574
2010/12/23(木) 14:01:57slime-setup の silime-fancy でできました。
0551デフォルトの名無しさん
2010/12/24(金) 01:02:18未来からいらっしゃい。
contributeされたパッケージにある、slime-autodoc-modeですね。
SLIMEはデバッガやインスペクタまで揃ってて、慣れると離れられなくなりますぜー。
0552デフォルトの名無しさん
2010/12/29(水) 01:18:08初回起動でまずエラーが出て、一旦閉じて再起動してもまたエラーになりました
; 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
?
どうすればよいのでしょうか?
最後に出ている?のあとに何かコマンドを打ち込むということなら
どんなコマンドを入れればいいのでしょうか
0553デフォルトの名無しさん
2010/12/29(水) 16:57:19見た感じ、エラーではなく、警告しか出ていない気がします。
一部の機能がサポートされていない、変数が宣言されているのに使われていない、
関数に渡す引数の数が合っていない、という警告が出ています。無視していいです。
その「?」っていうのは、CCLのプロンプトです。コマンドプロンプトでいう「>」と一緒。
そこにLispの式を入力すると、結果が帰ってきます。REPLという環境です。
試しに、「(+ 1 2)」とか「(* 4 5)」とか入力してみてください。
0554デフォルトの名無しさん
2010/12/29(水) 17:32:11Windowsでかなり致命的なバグがあるので、できれば1.6に更新するか、
CLISPとかの別の処理系を使った方が良いです。
ちなみに、LispboxはEmacsというテキストエディタと、SLIMEという開発環境、
Common Lispの処理系を一緒に配布しているものなので、使い方が分からなかったら、
それぞれの名前でググると情報が色々出てきます。
0556デフォルトの名無しさん
2010/12/30(木) 00:18:23slimeで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以外にも編集するものがあるのでしょうか?
0557デフォルトの名無しさん
2010/12/30(木) 01:17:430558デフォルトの名無しさん
2010/12/30(木) 08:03:52lispbox.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))
をコピペして保存すれば終わりです。
0559デフォルトの名無しさん
2010/12/30(木) 08:33:03(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だと括弧をたくさん使うので、コードが読み易くなります。
0560デフォルトの名無しさん
2010/12/30(木) 08:36:55文章が抜けてました。slime-current.tgzも解凍してから、できたフォルダをsite-lispにコピーしてください。
多分、普通にEmacsとか使ったことある人な気がするんで、蛇足だとは思うんですが。
0561デフォルトの名無しさん
2011/01/12(水) 09:19:33でweblocks入れようとした
clsqlが入らないのでweblocksのサイトみたら
clsql-fluidとかいうのを入れろと書いてあった
clbuild2でclsql-fluidを入れようとしたら、そんなアプリないぞと言われる
0562デフォルトの名無しさん
2011/01/12(水) 13:34:04eclipseにもVisualStudioにもemacsキーバインドはあってもvimキーバインドはない
結局慣れて特なのはemacs
0563デフォルトの名無しさん
2011/01/12(水) 14:14:10楽に入力できる環境を整えるよりも、
言語の側で下層 (DSL) を作り込もうということ。
0564デフォルトの名無しさん
2011/01/12(水) 22:10:02よくわからん。もうちっとkwsk
0565デフォルトの名無しさん
2011/01/13(木) 00:32:100566デフォルトの名無しさん
2011/01/13(木) 00:34:26文章書くのに、ワードの補完やTeX、HTMLのタグづけより
真っさらなメモ用紙にアイディア浮かべるのにまず集中しろみたいな感じかな。
0567デフォルトの名無しさん
2011/01/13(木) 00:36:580568デフォルトの名無しさん
2011/01/14(金) 00:40:280569デフォルトの名無しさん
2011/01/14(金) 11:54:06(DSLを含めて)プログラムを作っていくと、
すっきりした構造になり易いってのは分かるけど、
グダグダなAPIを持つGUIウィジェット使わざるを得ない場合、
ラッピング書くだけで大仕事ですよね。
まあそういうのはある程度割りきってやるしかないけれど。
0570デフォルトの名無しさん
2011/01/15(土) 08:45:04Quicklisp使え。
0571デフォルトの名無しさん
2011/01/18(火) 18:07:240572デフォルトの名無しさん
2011/01/18(火) 18:17:09javascript lispでググって
0573デフォルトの名無しさん
2011/01/18(火) 21:59:23ttp://www.crockford.com/javascript/little.html
0574デフォルトの名無しさん
2011/01/18(火) 23:28:210575デフォルトの名無しさん
2011/01/19(水) 00:45:09ありがとうございます、たすかりました。
0576デフォルトの名無しさん
2011/01/25(火) 13:34:56windowsにlispboxを入れようとしたら
lispboxの配布が終わっていたことに気づきました。
実用common lispではclispのエラーメッセージを示しながら説明しているので、
clisp + slimeの環境をどうにかして入れたいです。
slimeはemacs+slimeパッケージ?というものらしいのですが、
emacsの設定ファイルをどこに置けばいいのかわからず、自力では設定できませんでした。
0577デフォルトの名無しさん
2011/01/25(火) 15:58:100578デフォルトの名無しさん
2011/01/25(火) 17:18:171. HOMEって環境変数つくってemacsの設定ファイルを格納するフォルダーを指定する
2. 上記ディレクトリに .emacs って名前のファイルを作ってslimeの設定を書き込む
0579デフォルトの名無しさん
2011/01/26(水) 11:20:21最近だと、%APPDATA%以下に置けば良かったはず。
コマンドプロンプトで「echo %APPDATA%」実行して出たところ。
XPならC:\Documents and Settings\manabu\Application Data。
SLIMEのインストールは、
ttp://common-lisp-users.jp/index.cgi?SLIME
見てね。
0580576
2011/01/26(水) 12:16:56環境変数のHOMEに.emacsへのパスを追加して再起動しても、
何かうまくいきませんでした。
どこかの設定を変に書き換えてしまったのかもしれません。
>>579
やってみます。
0581デフォルトの名無しさん
2011/01/26(水) 12:34:49%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を置いてください。
0582デフォルトの名無しさん
2011/01/26(水) 12:39:51%HOME%を設定する方法でも、%APPDATA%に置く方法でも、
好きな方でどうぞ、という意味です。
あと、どこかの設定を変に書き換える、っていう心配はしないで良いです。
Emacsはレジストリは使いません。初期の設定ファイルもありません。
.emacsなどの設定ファイルでカスタマイズします。.emacsを消せば、最初の状態に戻ります。
付属のファイルを間違って消してしまった、なんて場合を除いて、
おかしなことになったりしません。安心していじってください。
0583デフォルトの名無しさん
2011/02/01(火) 14:19:03Ubuntuも作り直さないといけないし、Slimeの環境ももっと見直さないといけないしなあ。clispだと動かないんだよなあ。
実践ComonLispの付録Aの日本語処理もどうにかして物にしたい。AllegroServeの章もどうにかして英語処理でいいからクリアしたいんだよなあ。なんか途中でうまくいかなくなる。
時間を割くとしても趣味の時間なんであんまり時間を避けないんだけどね。先月末締め切りだった簿記の試験を受けるか、どうか迷って、lispの勉強の方を選んだ。
0584デフォルトの名無しさん
2011/02/01(火) 20:01:590585デフォルトの名無しさん
2011/02/01(火) 22:41:510586デフォルトの名無しさん
2011/02/01(火) 22:47:23どう納得したの?
0587デフォルトの名無しさん
2011/02/02(水) 00:33:14あんまり仕事がばりばりできる人には見えない。
他人が話に絡めるような内容でもないし、助け舟を出そうにも、エスパーすら難しい情報量の無さ。
文章の整形も杜撰で、内容も散漫。国語力も怪しい。
Twitterかブログに書いておけば良いのに、と思った。>>585じゃないけど。
0588デフォルトの名無しさん
2011/02/02(水) 01:03:44それが何か? としか反応できん。
何か求めていることがあるのならそれを表現できてないし、
自分のメモでしかなく対話する気がないなら掲示板に書くことじゃないだろ。
0589デフォルトの名無しさん
2011/02/02(水) 07:57:18これはtwitterじゃなく愚痴ッター(ttp://gtitter.com/)レベルだとおもわれ
0590デフォルトの名無しさん
2011/02/02(水) 13:54:430591デフォルトの名無しさん
2011/02/02(水) 18:53:50需要が限られた中にあえて低品質のものを投入したって無駄になるだけじゃね?
0592デフォルトの名無しさん
2011/02/02(水) 21:54:520593デフォルトの名無しさん
2011/02/02(水) 22:18:380594デフォルトの名無しさん
2011/02/07(月) 01:28:450595デフォルトの名無しさん
2011/02/07(月) 01:56:34この様になっております。2番目。
ttp://www.lispworks.com/documentation/HyperSpec/Body/03_bca.htm
0596デフォルトの名無しさん
2011/02/07(月) 19:09:53ありがとうございます。
ふと、lispのマクロは関数も使えたからどうなってるのかなと思ったもので。
(※1)マクロやシンボルマクロだけを呼ぶマクロならmacro form
(※2)funcallや関数なんかを含んだマクロならcompiler macro form
※1はトップレベルで展開。コンパイル時でも実行時でも展開可
※2はトップレベルで結果が展開されるとは限らなくてコンパイル時/実行時ともに有り??
2番目というのは※1のことですね
0597閃き
2011/02/07(月) 21:59:31<⌒/ヽ-、___
/<_/____/
\ __ /
_ (m) _ ピコーン
|ミ|
/ .`´ \
<⌒/ヽ-、___
/<_/____/
英語キーボード使えばいいんじゃね?
∧∧ ∩
(`・ω・)/
⊂ ノ
(つノ
(ノ
___/(___
/ (___/
0598デフォルトの名無しさん
2011/02/07(月) 22:34:01その理屈はおかしい、むしろスペース脇にある「変換」「無変換」あたりをhyperシフトにしてhyper+アルファベットで任意の文字を打ち込めるようにした方がべんりだぞ
英語キーボードほどスペースが幅食ってもったいないよ(昔のLispマシンのキーボード的につかおうぜ、109とか106キーを)
0599デフォルトの名無しさん
2011/02/07(月) 22:40:04これのこと?
キーボードを変えずにソフトで対処できるなら、やってみたいね
http://www.pfu.fujitsu.com/hhkeyboard/kb_collection/#lisp
0600デフォルトの名無しさん
2011/02/07(月) 22:48:53キーサイズ違うようなうろ覚え感があるけど、親指の器用さをうまく使うと入力が楽になるのは本当
手が小さいせいで数字キーの段がめちゃ遠い自分は「無変換(super)+YUIHJKNM,OL.」がテンキーもどきになるようになってる
変換キーはさすがに日本語入力で使ってる
そのようなわけでemacs以外だと1段目のキーを使う入力がめさ遅い orz
0601デフォルトの名無しさん
2011/02/07(月) 22:49:24(`・ω・)俺は片手キーボードを覚えてみたいぞ
0602デフォルトの名無しさん
2011/02/07(月) 23:41:190603デフォルトの名無しさん
2011/02/07(月) 23:56:360604デフォルトの名無しさん
2011/02/08(火) 03:29:27コンパイラマクロってのは、
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書くとき、発狂したくなる。
0605デフォルトの名無しさん
2011/02/08(火) 03:53:00(defmacro add2 (x) (list '+ 2 x))
っていうマクロを定義した場合、コンパイルするとき、実際にlistが呼ばれるってことです。
listはあんまり使われませんけど、mapcarとかloopとか、labelsでの再帰とかは定番です。
それで、上のマクロを使った式は、
(add2 1) ; → (+ 2 1)
みたいに置き換えられてコンパイルされます。実行時にはコンパイルされたコードが評価されます。
マクロを変更しても、もう一度コンパイルされるまで、変更の影響は受けません。
0606デフォルトの名無しさん
2011/02/08(火) 08:18:01Windows だと ChgKey ってなフリーソフトがある
Unix系だとxmodmapつかえばOK
おいらは, 日本語キーボードのキーマップをむりやりHHK配列にして使ってる
0607デフォルトの名無しさん
2011/02/13(日) 16:40:530608デフォルトの名無しさん
2011/02/13(日) 16:56:15言語に依存しないでしょ。ちゃんとした奴を作りたければ kqueue を使ったり
イベント伝播システムとかを実装したりするけど、それも言語に依存しないよ。
REPL 自体がある種のイベント駆動でもある訳だから Lisp はイベント駆動と
相性が良いと豪語する人も居るかもしれない。
0609デフォルトの名無しさん
2011/02/13(日) 18:44:31ではたとえばC#のdelegateでやるイベントみたいなのは
LISPならどうなんでしょうか?
0610デフォルトの名無しさん
2011/02/13(日) 19:11:020611デフォルトの名無しさん
2011/02/13(日) 19:17:150612デフォルトの名無しさん
2011/02/13(日) 19:23:03>>609 が言ってるのは、御約束のイベント処理が決まってる話じゃねぇの?
だとしたら、Lisper は本質的に、*そんなものは好まない*
0613デフォルトの名無しさん
2011/02/13(日) 19:27:330614デフォルトの名無しさん
2011/02/13(日) 20:26:06中で何をやってるかって分かってれば lisp では別の簡単な方法がいくつでもある
lisp に限らず、コア部分はおそらく
(let ((event (wait-for-something))
(cond
((prop-p a-thing event) ...)
((prop-p another-thing event) ...)
...
てなことを、やってるんじゃね?
event を振り分けるやり方何てのは、いくらでもあるだろ?
そんなわかりきったことならマクロ書けば何でもできるじゃん
0615デフォルトの名無しさん
2011/02/13(日) 20:31:07> event を振り分けるやり方何てのは、いくらでもあるだろ?
だとしたら自分の定義でもかまわないし、
> そんなわかりきったことならマクロ書けば何でもできるじゃん
# ちなみに、Lisp の最悪の部分はこの考え方にあるんだけどね
# でも、自由度求めようと思うと必要悪
0616デフォルトの名無しさん
2011/02/13(日) 20:34:07ああごめん。>>613 は『論点がずれてる』って所に対するレスね。
>>609 はイベントループじゃなくてイベント伝播について聞きたいのかと思ったんだけどな。
その回答は『決まった方法は無い』で良いと思うよ。
0617デフォルトの名無しさん
2011/02/13(日) 20:56:24CL の場合
> イベント伝播
って、普通にコンディションの伝搬でええんちゃうの?
# unwind-protect が言語 coreで 規定されてるので throw しまくるし…
# condition メカニズムなんてこれないと成り立たないし…
# condition に比べても gcc の try ... catch 遅いし…
0618デフォルトの名無しさん
2011/02/13(日) 21:08:16自分は >>609 が求めてるのは condition じゃないと思うけど、
それなら何かと言うのは >>609 にもう少し詳しく聞いてみないと
何とも言えない。
0619デフォルトの名無しさん
2011/02/13(日) 23:06:49たくさんレスありがとうございます。
LISPは数日前にはじめたばっかりなのでよくわからないですが
たぶん>>616『決まった方法は無い』けどどうとでもできる。なんでしょう。
C#で典型的な button1.Click += new EventHandler(button1_Click);
みたいなやつです。
メッセージループな方法じゃなくて言語で(delegate)処理するほう。
0620デフォルトの名無しさん
2011/02/13(日) 23:15:28そういう時は、コールバックとして実行したい処理を、クロージャにして渡すだけじゃないかな
0621デフォルトの名無しさん
2011/02/14(月) 03:45:23http://web4r.org/ja/tutorial3
これも、defpageというマクロを定義して
ソースの中にある example/blog/blog.lisp みたいに使ってる。
0622デフォルトの名無しさん
2011/02/14(月) 10:52:22できるんですね。
ひとつ懸念が晴れました。
ありがとうございました。
0623デフォルトの名無しさん
2011/02/14(月) 16:18:050624デフォルトの名無しさん
2011/02/15(火) 12:52:170625デフォルトの名無しさん
2011/02/19(土) 21:11:57.78おもしろそうだけどweblocksとどう違うの?
そういえばquicklispってclbuildから置き換わる野?
0626デフォルトの名無しさん
2011/02/19(土) 21:48:06.60継続ベースなのはWeblocksと同じ。記述の短さを最優先にしていて、
Arcを強く意識していたはず。リーダーマクロベースのテンプレート機能を持ってる。
永続化はElephant。開発者が日本人。開発は停止してる模様。
Quicklisp登場後は、clbuildはもう過去の遺物って印象。
Quicklispも完全には程遠いし、個人に強く依存してる、っていう弱点もあるんだけど。
それでも、深く考えずに(ql:quickload "foo")で良いのは便利過ぎる。
0627デフォルトの名無しさん
2011/02/21(月) 14:50:17.88どこに質問すればいいんだろ
comp.lang.lispとかってこういう質問するのダメなのかな
0628デフォルトの名無しさん
2011/02/24(木) 15:42:40.740629デフォルトの名無しさん
2011/02/25(金) 16:03:43.43なんでgitに変える必要あるんだ
0630デフォルトの名無しさん
2011/02/26(土) 20:34:55.450631デフォルトの名無しさん
2011/03/06(日) 13:17:30.90他に移動したのか探したのですが見つかりません。
どなたかご存知ではないですか?
0632デフォルトの名無しさん
2011/03/06(日) 19:53:44.810633デフォルトの名無しさん
2011/03/06(日) 19:58:02.300634デフォルトの名無しさん
2011/03/06(日) 21:12:58.12http://replay.waybackmachine.org/20090408053415/http://www.emmett.ca/~sabetts/
ここのgitかsnapshotで。
0635デフォルトの名無しさん
2011/03/08(火) 14:44:34.93おーっ!ありがとうございます。
0636デフォルトの名無しさん
2011/03/09(水) 02:19:50.00Movitzはすぐ出来たんだけど。
0637デフォルトの名無しさん
2011/03/12(土) 20:04:28.250638デフォルトの名無しさん
2011/03/17(木) 17:11:23.39どんな特徴があってそう言われているのか知りたいです。
0639デフォルトの名無しさん
2011/03/17(木) 17:43:58.760640デフォルトの名無しさん
2011/03/17(木) 17:55:55.15人工知能を目的(のひとつ)としてLispが作られたからそう言われてる。
0641デフォルトの名無しさん
2011/03/17(木) 18:11:25.75じゃないの
なにしろ同世代がFORTRANだとかCOBOLだとかなので、Lispはあらゆる意味で高級
すぎて比較にもならないけど、一番決定的なのはたぶんGCだと思う
まあ歴史的な話だよね
0642デフォルトの名無しさん
2011/03/17(木) 18:47:52.85今ならその分野で Lisp が著しく有利というほどではない。
古くからの蓄積がある分は有利と言えなくもないけどさ。
Common Lisp とか Scheme とかはクセはあっても普通の汎用言語なので、
人工知能記述のための言語と思っているならそれは誤解だと言っておこう。
0643デフォルトの名無しさん
2011/03/17(木) 19:20:07.14検索しても人工知能が何とかしか出てこなくて困っていました。
人工知能言語と言われていたのは、
単に、Lispが作られるまで人工知能に向いた言語が無かったからですか。
今は他にも向いている言語が色々あるからそうは言えなくなっていると……
すっきりしました。ありがとうございます。
0644デフォルトの名無しさん
2011/03/17(木) 20:52:18.790645デフォルトの名無しさん
2011/03/17(木) 23:58:19.39>>639は参考にしないほうが良い。
http://en.wikipedia.org/wiki/SHRDLU が
大昔最も有名だった人工知能プロジェクト。
MacLispで書いたMicroplannerで記述されていた。
Microplannerの実装者の一人が、SchemeのG. Sussman。
この後続いたロボット制御用言語開発がSchemeにつながった。
そして今MITではロボット制御の授業にPythonを使ってる。
0646デフォルトの名無しさん
2011/03/18(金) 00:43:35.650647デフォルトの名無しさん
2011/03/18(金) 08:54:34.23既に終わった権威を蒸し返すためではない
0648デフォルトの名無しさん
2011/03/18(金) 10:55:50.91> 歴史は権威主義を相対化するためにある
何も創りだしたことがない人の考え方だね。
過去の誕生の経緯を知ることは、非常に有益。
0649デフォルトの名無しさん
2011/03/18(金) 11:43:54.90人名、プロジェクト名、大学名を並べただけでは
経緯を知ることも何かを創りだすこともできない、と言っている
0650デフォルトの名無しさん
2011/03/18(金) 18:24:09.79それだけ教えてもらえたら、自力で調べるに事足りるでしょ。
それとも何か、自分で調べる気は全然無いからおまえらもっと詳しく喋れ
とでも言いたいのか?
0651デフォルトの名無しさん
2011/03/18(金) 20:50:53.09俺にはさっぱりわからないから
>>650もスルーしてやってくれ
0652デフォルトの名無しさん
2011/03/23(水) 14:16:55.58使ってみるとperlの方がすごいことを再確認するからじゃないかな
0653デフォルトの名無しさん
2011/03/23(水) 14:27:07.98キチガイか神しかつかえねんじゃねえかともっちまうよ。
0654デフォルトの名無しさん
2011/03/24(木) 09:14:29.02活かすも殺すも君次第
0655デフォルトの名無しさん
2011/03/24(木) 13:14:13.74でもLL言語の選択肢が増えた今は新たに使う意味ほとんど無いと思うぞ
Lispの方が継続して使った時の使い心地がいいのはIDE(slime含めて)のおかげと、過去の自分のコードの上に立脚して次が組める事だとおもうのだけどどう?
Perlだとその場の問題を解決する小さいスクリプトの方が多くない?
0656デフォルトの名無しさん
2011/03/24(木) 13:39:42.52インストーラーの代わりとして使ったりいろいろだよな〜。
まあ小物っていえば小物がおおいのかもね。
0657デフォルトの名無しさん
2011/03/24(木) 14:39:08.15> Perlだとその場の問題を解決する小さいスクリプトの方が多くない?
CPANできてモジュールが豊富になった後しばらくは、そうでもなかったでしょ。
今はその分野はpythonに席を譲っているが。
0658デフォルトの名無しさん
2011/03/24(木) 15:31:19.730659デフォルトの名無しさん
2011/03/25(金) 19:44:23.150660デフォルトの名無しさん
2011/03/27(日) 08:17:15.39テキスト処理の容易さと現実的な速さは、まだ他の言語の追随を許さないと思う。
perl はいきなり書く。python は設計してから書く、という感じ。
Lisp は泥団子だから設計しながら書く。
0661デフォルトの名無しさん
2011/03/27(日) 18:35:52.54Perlはいきなり書いて2ヶ月後に修正しようとしてあきらめる
Pythonはその点後から修正効くけどスタートダッシュはPerlに勝てない
RubyもPythonと同じだけど実行速度が……
Lispは泥団子だから泥まみれになって遊んでたらできてたってかんじ
でどうせなら楽しいのが良いのでLispで書くと周りからメンテできねぇの苦情が……
0662デフォルトの名無しさん
2011/03/27(日) 19:03:59.29http://shootout.alioth.debian.org/u32q/which-programming-languages-are-fastest.php
0663デフォルトの名無しさん
2011/03/27(日) 19:50:00.62ttp://common-lisp-users.jp/index.cgi?%a5%d9%a5%f3%a5%c1%a5%de%a1%bc%a5%af
ttp://www.cliki.net/Performance%20Benchmarks
ttp://trac.clozure.com/ccl/wiki/HowFastAreWe
0664デフォルトの名無しさん
2011/03/28(月) 11:18:23.19racketが全然だめだったのであまり期待はしていないのですが
0665デフォルトの名無しさん
2011/03/28(月) 13:58:22.93正直、質問が抽象的過ぎて、回答に困る。Apacheで携帯サイト作れますか、みたいな。
というか、そもそもHunchentootは単なるウェブサーバだよ。フレームワークじゃない。
テキストでもバイナリでも、どんな形式のデータでも好きなだけ送り放題だよ。
CL-WHOはXHTML MPに対応していますか、とか、キャリアや機種ごとに処理が分岐できる、
モバイル向けのフレームワークがありますか、とかなら明快な答えがあるけど。
0666デフォルトの名無しさん
2011/03/28(月) 14:25:09.31さらっとマニュアルを見た感じ、携帯サイトも普通に作れそうに見えるんだけど。
0667デフォルトの名無しさん
2011/03/28(月) 23:17:22.36文字コードのせいじゃないのか?
Webサーバの仕様でダメってのは理屈として合ってないからも少し情報だしてみそ
0668デフォルトの名無しさん
2011/03/28(月) 23:30:38.72http://thinkit.co.jp/article/143/3
http://ke-tai.org/blog/2008/04/16/xhtml_tips/
あるいは、javaのライブラリあるからclojureと組み合わせるとか?
http://mobylet.seasar.org/
0669デフォルトの名無しさん
2011/04/01(金) 22:54:50.980670デフォルトの名無しさん
2011/04/02(土) 18:57:26.01コンパイラ
0671デフォルトの名無しさん
2011/04/05(火) 14:37:32.480672デフォルトの名無しさん
2011/04/05(火) 15:41:06.990673デフォルトの名無しさん
2011/04/05(火) 15:45:53.330674デフォルトの名無しさん
2011/04/05(火) 16:30:24.17たしか construct
どこで見たか覚えてないけど、今調べてみるとWikipediaにこんな風に書いてあるから、多分あってる
> cons constructs (hence the name) memory objects
ttp://en.wikipedia.org/wiki/Cons
0675デフォルトの名無しさん
2011/04/05(火) 16:52:29.11なるほど、ありがとうございます。
0676デフォルトの名無しさん
2011/04/05(火) 16:53:38.14> The function consw (construct word) is ...
とある。アセンブラで記述したconsの下請関数。
ちなみにIBM 704のword。
0677デフォルトの名無しさん
2011/04/05(火) 20:35:27.514/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
0678デフォルトの名無しさん
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 なのか・・・。
いまいちよくわかりません。
よろしけれ解説をお願いいたします。
0679デフォルトの名無しさん
2011/04/06(水) 15:39:41.44http://www.lispworks.com/documentation/HyperSpec/Body/f_1pl_1_.htm#1-
0680デフォルトの名無しさん
2011/04/06(水) 15:44:09.17Functionでしたか、ありがとうございました。
0681デフォルトの名無しさん
2011/04/06(水) 22:01:17.06なんだかな? ちゃんと読んだ?
ある時間にこれだけの量が放出されたとして、
「その日の気象条件でどれだけ拡散するか?」
って、シミュレーションなんだが
0682デフォルトの名無しさん
2011/04/07(木) 01:11:07.980683デフォルトの名無しさん
2011/04/07(木) 13:40:51.05#define IS_INT( n ) (((int)n & 0x00000001) != 0)
#define CELL2INT( e ) ((int)e >> 1)
#define INT2CELL( n ) ((cell)((n << 1) + 1))
上記のようなコードがあるのですが、整数の有効な桁は符号付31bitとかんがえてよいのでしょうか?
また右シフトは処理系によって違うような記述がちえらほらありますが、
符号付整数を右シフトしても符号があるばあいは補完されるとかんがえていのでしょうか?
0684デフォルトの名無しさん
2011/04/07(木) 14:26:37.910685デフォルトの名無しさん
2011/04/08(金) 12:44:21.90HTTP サーバーは lighttpd 1.4.28 で OS は Linux/Ubuntu 8.04 です。
文字セット UTF-8 の自作スクリプトを端末から実行すると問題なく動くのですが、
CGI として実行すると (format t "はろう わーるど") や (set 'x "はろう わーるど") 等
日本語を扱うところで止まって、以降の処理が行われません。
「sbcl cgi 日本語」でググっても解決できる情報を見つけられませんでした。
スレ違いの原因かも知れませんが、CGI で日本語を扱えるようにするには
どうすれば良いか教えていただけませんでしょうか。
0686デフォルトの名無しさん
2011/04/08(金) 13:09:17.62とりあえずその自作スクリプトを晒さなきゃ
0687デフォルトの名無しさん
2011/04/08(金) 14:31:14.37> 日本語を扱うところで止まって、以降の処理が行われません。
kwsk
0688デフォルトの名無しさん
2011/04/08(金) 16:56:46.10SBCLみたいなでっかい処理系でCGIだとprocess起動だけでマシン負荷高いからfastcgi使うかhanchentootとか使う方が良いよ
CGIにこだわるならCLISPとかの方が起動軽いのでそっちにするのでもいい
0689デフォルトの名無しさん
2011/04/08(金) 17:22:21.44http://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>
も出力されます。
レス、ありがとうございます。
0690デフォルトの名無しさん
2011/04/08(金) 18:45:53.83ーは二バイト目が0x5b('[')だが。
0691デフォルトの名無しさん
2011/04/08(金) 20:49:30.12スクリプトをUTF-8で保存しなおせ!
0692デフォルトの名無しさん
2011/04/08(金) 20:59:55.32スクリプトの #! を外してもやはり同じ。
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('[')だが。
この「ー」はどういう意味でしょうか? なんかココにヒントがあるような気がする。
0693デフォルトの名無しさん
2011/04/08(金) 21:21:16.540694デフォルトの名無しさん
2011/04/08(金) 22:01:40.930695デフォルトの名無しさん
2011/04/08(金) 23:27:05.79でもいろいろエラーが出たから、env LANG=ja_JP.UTF-8 したら動いた。
自分は未だに LANG=ja_JP.eucJP なんだが、これがマズかったらしい。
lighttpd のCGI 実行環境の LANG が UTF-8 じゃないんじゃないかな?とエスパー。
もしそうなら、#!/usr/bin/env .... と書くのは、、邪道かな。
0696デフォルトの名無しさん
2011/04/09(土) 00:48:10.94正誤表が見当たらないので、ここで伺います
11.2 特殊ベクタの説明(p. 125)で
>"foo"のような文字列リテラルは、#()シンタックスによるベクタのリテラルと似ている。
>固定サイズであり、変更を加えてはならない。
>ただしMAKE-ARRAYに別のキーワード引数 :element-typeを指定することで、サイズの変更ができる文字列を作れる。
最後の:element-typeは:adjustableの誤記でしょうか?
0697デフォルトの名無しさん
2011/04/09(土) 00:57:43.92HTTPステータスコードによって出力するページを変えることはできるのですが、
例外出力を捕らえることができるのか、まだわかりません。
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 の
内容はさっぱりわからんのですが、よく読んで解決したいと思います。
ご助言くださった皆様、ありがとうございました。
0698デフォルトの名無しさん
2011/04/09(土) 10:41:13.19正誤表あるんだけど、spamerにやられてる。正誤表のHistoryからどうぞ。
そこの部分は載ってないけど。
ttp://pcl.lispuser.net/
誤記で良いと思う。実物持ってないから原著参照したけど、原著も間違ってるみたい。
ttp://www.gigamonkeys.com/book/collections.html
誤記して、さらに誤記したものの解説が続いちゃって、訳わかんなくなってる。
0699695
2011/04/10(日) 01:01:16.51スルーされてしまった…。 orz
そのエラーとほぼ同じエラーが手元で出たから、LANGをUTF-8にしたら解決したよ、って意味だったんだけどな…。
0700697
2011/04/10(日) 02:13:55.62もうしわけありません。
ご指摘の 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 で
使ってます。以下、続きます。
0701697
2011/04/10(日) 02:15:47.43#!/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) を使うかもしれません。
スレ違いな内容になってすいませんでした。以上です。
0702デフォルトの名無しさん
2011/04/10(日) 09:43:45.30ありがとうございます。
その正誤表のページはspamにやられたものだったのですね。
納得しました。
0704デフォルトの名無しさん
2011/04/19(火) 21:27:17.261000までいっただけじゃないの??
↓こんな感じで誰かお願い
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/
0706デフォルトの名無しさん
2011/04/20(水) 02:05:36.580707デフォルトの名無しさん
2011/04/20(水) 12:04:17.11落ちないじゃね
0708デフォルトの名無しさん
2011/04/20(水) 12:14:02.63985だった。
0709デフォルトの名無しさん
2011/04/20(水) 13:25:07.510710デフォルトの名無しさん
2011/04/20(水) 14:16:43.85schemeのわからないことは検索したら大概わかるようになったのか
0711デフォルトの名無しさん
2011/04/20(水) 14:20:13.77http://hatsukari.2ch.net/test/read.cgi/news/1303187068/
lispは圏外
0712デフォルトの名無しさん
2011/04/20(水) 14:26:33.40手塚治虫スレに凸するような真似はやめろ
0713デフォルトの名無しさん
2011/04/20(水) 20:09:28.49福井英一か一峰大二あたりじゃね?
ところでLisp Schemeスレはいまだ立たず
LV制限だけならまだしも理由の不明な制限までかかるとお手上げだ
0715デフォルトの名無しさん
2011/04/20(水) 20:42:10.59立てられたみたい。
誰かテンプレ頼む。
0716デフォルトの名無しさん
2011/04/20(水) 20:46:26.79あれ以上テンプレないよ
0717デフォルトの名無しさん
2011/04/21(木) 12:04:31.94山崎あつし
0718デフォルトの名無しさん
2011/04/23(土) 01:00:30.38システムの実装にもよるかもしれないとは思うのですがなんかconsいっぱいするの良くないみたいな文献みちゃうと悩んでしまうのです。
0719デフォルトの名無しさん
2011/04/23(土) 01:57:46.25いくつかの値を返すって処理なら、返されたリストから値を取り出したらすぐにコンスセルは要らなくなる。
ほんの一瞬の処理のためにゴミを作って、その分だけ余分に GC が働くのはもったいない。
もちろん、多値の実装にもよると思うけど、一般的には多値を使うんじゃないかな。
でも、そんなのを考えるのは実際にネックになっていることがわかってからでいい。
最初は自分にやりやすいスタイルで書けばいいと思うよ。
そういう試行錯誤がやりやすいのが Lisp 系言語の特徴なんだから、書く前に悩むことない。
0720デフォルトの名無しさん
2011/04/23(土) 09:30:18.27ちょっとびっくりした
0721デフォルトの名無しさん
2011/04/23(土) 11:27:19.570722デフォルトの名無しさん
2011/04/23(土) 16:50:49.38ケースバイケース。consを避けるべき、というのは、>>719にもあるけど、性能の事情。
メモリアロケートって、処理が凄い重いんだよ。だから、何百万回とか繰り返す部分で
無駄にconsしてるとボトルネックになる。数十回とかなら全然問題にもならないけど。
迷ったときは、その部分を関数かマクロで抽象化しちゃうと良い。Lispのセオリー。
そうすれば、後でリストと多値を切り替えるときに他の部分を書き換えなくて済むし。
逆に言えば、抽象化してないと、multiple-value-bindに書き換えるのは面倒。
そもそも、multiple-value-bindって名前が、無駄に長くて面d(ry
0723デフォルトの名無しさん
2011/04/23(土) 18:07:04.28なるほど、理解しましたmultiple-value-bindの値もアロケートの一種だけどリストで返すと少なくとも3つのゴミになるってことなのですね
0724デフォルトの名無しさん
2011/04/23(土) 18:21:44.820725デフォルトの名無しさん
2011/04/23(土) 20:35:25.98>>724も指摘しているように、multiple-value-bindでは普通アロケーションは起きない。
timeで調べてみると良いよ。loopとかで繰り返す回数を増やしても、
メモリアロケートする量変わらないだろうから。
ちなみにCCL 1.6の場合だと、multiple-value-callに展開されるようになっていて、
関数呼び出しになる。つまり、引数として処理される。
0726デフォルトの名無しさん
2011/04/24(日) 13:52:06.13lispを呼び出す側のコードだと考えれば…w
0727デフォルトの名無しさん
2011/04/24(日) 23:26:37.26CLTLの範囲内でもっと長いのなかったっけ?
0728デフォルトの名無しさん
2011/04/25(月) 02:08:47.21思い付くのだけでも、define-compiler-macroとかwith-hash-table-iteratorとか、
internal-time-units-per-secondとかな!
0729デフォルトの名無しさん
2011/04/25(月) 03:10:25.81いや無駄に短いとワケワカメってのはわかるんだけどさ
0730デフォルトの名無しさん
2011/04/25(月) 04:33:09.400731デフォルトの名無しさん
2011/04/25(月) 05:12:35.34突っ走れるだけ突っ走ちゃったって感じがする。
自分でも、SLIMEで補完しないとやってられない。
たまに端末で作業するとタイピングで死にたくなる。
Haskellみたいに短過ぎるのとどっちがマシなのか。
0732デフォルトの名無しさん
2011/04/25(月) 12:22:09.61(不)定冠詞はともかく複数形はしっかりして欲しい。
0733デフォルトの名無しさん
2011/04/26(火) 18:10:50.430734デフォルトの名無しさん
2011/04/26(火) 18:31:57.190735デフォルトの名無しさん
2011/04/27(水) 17:44:10.390736デフォルトの名無しさん
2011/04/29(金) 22:16:02.88clrhash => clear-hash とか
0737デフォルトの名無しさん
2011/04/30(土) 01:00:57.270738デフォルトの名無しさん
2011/04/30(土) 01:13:09.05(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しかねえ
0739デフォルトの名無しさん
2011/04/30(土) 07:59:16.95GJ!
0740デフォルトの名無しさん
2011/05/06(金) 23:59:10.60ループ中にformatを仕込んだのですが、
逐次出力されず、バッチが終了したタイミングで一括表示されてしまいます。
これってSLIMEの仕様でしょうか?
0741デフォルトの名無しさん
2011/05/07(土) 17:50:51.63syslogに出すようにしちゃだめ?
あるいはSLIMEもInferior-lispじゃなくSLIME-CONNET経由でなら別のプロセスのLispになるからそっちのコンソールに出せるのでそれにしちゃえば?
0742デフォルトの名無しさん
2011/05/07(土) 20:17:49.74force-output挟めばどの処理系でもうまくいくと思う。
(dotimes (i 10) (print i) (force-output) (sleep 1))
0743デフォルトの名無しさん
2011/05/07(土) 23:04:56.070744デフォルトの名無しさん
2011/05/08(日) 03:52:31.530745デフォルトの名無しさん
2011/05/08(日) 12:59:05.79ありがとうございます!
force-outputでできました。
今までこの関数が何のためにあるのかわからなかったんですが、こういう時に使うのですね。
0746デフォルトの名無しさん
2011/05/08(日) 17:54:04.70値だけならletで十分なんですが、ローカルな関数を定義したい場合に便利な方法はあるのでしょうか。
Schemeだと(define (foo) (define (foo-aux) ...) <BODY>)って感じで関数内で閉じた関数を定義できますが、
同じようなことをCLでしようとしたら(defun foo () (let (foo-aux (lambda () ...)) <BODY>))とし、
<BODY>内では(funcall foo-aux)などとしなければならないのでしょうか?
0747746
2011/05/08(日) 17:58:40.100748デフォルトの名無しさん
2011/05/08(日) 20:45:44.71(defun hoge (&aux (local 0))
(incf local))
ローカルな関数はlabelsでもいいけど、fletでもできるよ
でもfletだと再帰できないので注意してね
0749746
2011/05/08(日) 21:25:28.13Schemeだと関数内では呼び出し元の環境に新しく変数/関数が定義ないようになってるので、
てっきりCLでもローカル変数/関数がデフォルトだと思ってました。
Schemeじゃグローバル変数の初期化とかをinit-xxxみたいな手続き内にまとめることができなかったと思うのですが、
CLならできるんですね。
0750デフォルトの名無しさん
2011/05/09(月) 00:23:46.22* internal defineに染まっているのでlabelsを多用する
* loopやiterateではなく、labelsでの再帰を選ぶ
* keywordでなく普通のsymbolを返してはまる
* lambdaに#'を付けても付けなくてもいいことに混乱する
* 自分の知らない機能満載の無駄に複雑なformatにビビる
0751デフォルトの名無しさん
2011/05/09(月) 10:08:33.71abclも実質javaだから問題ない?
0752デフォルトの名無しさん
2011/05/09(月) 11:18:45.130753デフォルトの名無しさん
2011/05/09(月) 11:36:06.470754デフォルトの名無しさん
2011/05/09(月) 16:08:09.77日本語のサイトですとうれしいです。
0755デフォルトの名無しさん
2011/05/09(月) 19:33:05.470756デフォルトの名無しさん
2011/05/09(月) 21:26:43.64そういう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式の関数だから面白いと感じる。
0757デフォルトの名無しさん
2011/05/09(月) 21:48:08.15750じゃないけど。
キーワードは KEYWORD パッケージのシンボルだね。
CL-USER> (symbol-package '+)
#<PACKAGE "COMMON-LISP">
CL-USER> (symbol-package :+)
#<PACKAGE "KEYWORD">
「パッケージ:シンボル」のパッケージ部分が省略されてる形
でも Schemer のためにはパッケージの説明が要るんだよな
0758デフォルトの名無しさん
2011/05/09(月) 22:52:42.44CLは巨大すぎる
で、あいかわらずLisp1.xが好きなのでemacs lispで遊んでる自分
0759756
2011/05/09(月) 23:08:10.48パッケージ!そういうのもあるのか!
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'でパッケージを宣言しないといけないのね。
なんかごちゃごちゃしてきたぞ…
0760デフォルトの名無しさん
2011/05/09(月) 23:20:15.64その理解で合ってると思う
scheme でも Gauche は CLer が開発してるから keyword は特別にあつかってるっぽい
0761デフォルトの名無しさん
2011/05/09(月) 23:22:00.89だから作れるとは書いてない。 defpackageで作っておかなきゃだめだよ
0762デフォルトの名無しさん
2011/05/09(月) 23:23:59.120763デフォルトの名無しさん
2011/05/09(月) 23:27:13.57定数変数になるとか他にも特徴がある。
0764デフォルトの名無しさん
2011/05/09(月) 23:48:51.89訳文の方には
>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'の説明が出てくるから余計に混乱してしまいました。
0765761
2011/05/10(火) 00:16:25.07ごめん右の方まで目が行かなかったw でも原文の方でも、無ければ作られるって感じだね。
CLTL2見ると
ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node118.html#SECTION001570000000000000000
[Function] in-package ってとこがpgの説明と合ってて
[Macro] in-package ってとこがふつうの処理系の実装と同じに見える。
どういうことなの…教えて偉い人
0766デフォルトの名無しさん
2011/05/10(火) 00:22:35.25CLtL1のときは作るんだけど、CLtL2で作らないように変更されたってことかと。
0767デフォルトの名無しさん
2011/05/10(火) 08:58:56.20もちろんCLtL2の方です。
0768デフォルトの名無しさん
2011/05/10(火) 16:26:09.72sbclというよりもmaximaの問題なのかな
0769デフォルトの名無しさん
2011/05/11(水) 11:25:06.86ttp://xyzzy.s53.xrea.com/wiki/?%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9
xyzzyのだけど、ある程度役に立つとは思う。HyperSpecかCLtL2読んだ方が良いけど。
0770デフォルトの名無しさん
2011/05/11(水) 11:43:37.41Unicodeの範囲なら、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呼べば済む話だと思う。
0771デフォルトの名無しさん
2011/05/11(水) 12:01:01.90需要や意欲はともかく
0772デフォルトの名無しさん
2011/05/11(水) 12:15:58.15> maxima(sbcl)で数値計算
をするもんじゃないだろ。数式処理をするのならまだしも
0773デフォルトの名無しさん
2011/05/11(水) 14:37:50.31結構速い
0774デフォルトの名無しさん
2011/05/11(水) 14:51:27.480775デフォルトの名無しさん
2011/05/11(水) 14:53:35.050776デフォルトの名無しさん
2011/05/12(木) 12:46:11.23Heap使いきったというエラーでとまる
clispでは問題なく動くけど遅い
0777デフォルトの名無しさん
2011/05/12(木) 22:58:34.00何て無謀な
0778デフォルトの名無しさん
2011/05/13(金) 11:27:21.31SBCLってそういうものなの?
0779デフォルトの名無しさん
2011/05/13(金) 11:45:38.00Windowsのスレッドサポートにやたら手間取っていたり、
Mac OSとかでも利用に問題があったりするのを見てると、
開発者はその辺興味ないんだな、とは思う。
0780デフォルトの名無しさん
2011/05/13(金) 11:48:43.59ECL?
CMUCL?
0781デフォルトの名無しさん
2011/05/13(金) 12:41:51.32ttp://cl.cddddr.org/index.cgi?%a5%d9%a5%f3%a5%c1%a5%de%a1%bc%a5%af
0782デフォルトの名無しさん
2011/05/13(金) 16:43:00.19SBCLならOSXで充分に速度出せる。
どんなことするかにもよるが。
0783デフォルトの名無しさん
2011/05/13(金) 17:03:01.45下手にアップデートできない危険な存在
0784デフォルトの名無しさん
2011/05/13(金) 17:45:49.24もしあるんなら、その機能の名前教えて。
0785デフォルトの名無しさん
2011/05/13(金) 18:42:19.64OOPの多態をやりたいってことかな?
0786デフォルトの名無しさん
2011/05/13(金) 19:35:12.120787デフォルトの名無しさん
2011/05/13(金) 19:38:32.07typecase?
0788デフォルトの名無しさん
2011/05/13(金) 20:26:39.25できれば、制御文系のやりかたより、オーバーロード見たいに関数追加するだけでいいようなやりかたが
いいんだけど、typecaseを発展させるしかないのかなぁ。
0789デフォルトの名無しさん
2011/05/13(金) 20:56:38.490790デフォルトの名無しさん
2011/05/13(金) 21:03:53.31んー。というか単に独立した機能があるかどうか知りたいだけなんだ。
generic functionと一枚岩で切り離せないというならそれで納得するつもり。
0791デフォルトの名無しさん
2011/05/13(金) 21:05:59.61cdrしてnilになったら再帰を止めるとか。
0792デフォルトの名無しさん
2011/05/13(金) 23:32:25.65(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) が返るのですが、具体的にはどのようなことをしているのでしょうか?
0793デフォルトの名無しさん
2011/05/13(金) 23:47:03.61次の要素にアクセスするために使う関数をbyで指定する。
cdr => (1 2 3 4) (2 3 4) (3 4) (4) nil
cddr => (1 2 3 4) (3 4) nil
0794デフォルトの名無しさん
2011/05/13(金) 23:49:12.57ttp://smpl.seesaa.net/article/29800843.html
0795デフォルトの名無しさん
2011/05/14(土) 10:58:51.46MAC は知らないけど AMD64 な FreeBSD だと SBCL 結構安定してるよ
ports からいれる場合 lutex きっとかないとまずいけど
0796デフォルトの名無しさん
2011/05/14(土) 21:21:25.27ありがとうございます。よく分かりました。
0797デフォルトの名無しさん
2011/05/15(日) 04:12:25.26戻り値が多い時に、黒背景に赤文字が表示されると目がちかちかしてしますので可能ならば変更したいなと。
0798デフォルトの名無しさん
2011/05/15(日) 08:19:34.49で調べて。分からないことあれば、emacsスレ@UNIX板で。
0799デフォルトの名無しさん
2011/05/15(日) 08:52:48.27SLIMEを起動した状態で、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")
みたいにすると、緑になる。
0800デフォルトの名無しさん
2011/05/15(日) 08:58:42.80追加でインストールしなくても大丈夫。lisp/faces.elに収録されてる。
うろ覚えだけど、Emacs 20.3くらいの時代には既にあったような気がする。
0801デフォルトの名無しさん
2011/05/15(日) 11:32:59.33ありがとうございます!
おかげさまで目に優しい色に変更できました!!
0802デフォルトの名無しさん
2011/05/16(月) 16:52:18.86仮想マシンで入れるかな
0803デフォルトの名無しさん
2011/05/16(月) 17:41:44.85Clozure CLとかCorman LispとかUfasoft Common Lispみたいな例外はあるけど、少数派。
上で挙げたClozure CLなんかも、割と真面目にWindowsサポートしてるけど、
プロファイリングはMac OSとLinuxしか考慮してなかったりするし。
0804デフォルトの名無しさん
2011/05/16(月) 18:06:24.120805デフォルトの名無しさん
2011/05/16(月) 18:08:50.59使ってないけど、成熟した、良い感じな雰囲気があるよね。
0806デフォルトの名無しさん
2011/05/16(月) 18:21:59.91そういうことはブログに(ry
0807デフォルトの名無しさん
2011/05/16(月) 19:01:57.91Clozure CL使ってる人が少ないっていうんじゃなくって、
Mac OSが優先される処理系が少数派って意味。誤解させたなら悪かった。
実際にはSBCL>>Clozure CL>CLISP>以下略って感じみたいだよ。
ttp://xach.livejournal.com/271794.html
CMUCLと同じくらいの歴史もあるし、使ってて良い処理系だと思う。
最適化こそSBCLに及ばないけど、機能面では充実してるし。
0808デフォルトの名無しさん
2011/05/16(月) 19:39:13.71ネイティブバイナリを扱う処理系のポーティング/維持は結構面倒。
コンパイラとかメモリダンプとか。
0809デフォルトの名無しさん
2011/05/16(月) 20:57:30.610810デフォルトの名無しさん
2011/05/16(月) 21:23:14.08linuxでの開発者がおおいせいか、windowsが軽視されている気がするよ
0811デフォルトの名無しさん
2011/05/16(月) 21:32:01.240812デフォルトの名無しさん
2011/05/16(月) 21:35:25.29ttp://common-lisp.net/project/lispbox/
WindowsならCCL 1.6使えば良いじゃない。
付属のASDF-Install使うなら*features*に細工してリコンパイルしなきゃいけなかったけど、
今ならQuicklisp使うから、問題もなくなったし。1.5までのクリティカルなバグも修正されたし。
0813デフォルトの名無しさん
2011/05/16(月) 21:44:23.06そりゃあねえ……
>>812
そんなものがあったのか
知らなかったわ
早速手を出してみる
0814デフォルトの名無しさん
2011/05/16(月) 22:24:27.60OSXで言語環境とかになると、ややこしいことやるより
ぶっちゃけUNIX用のソースからコンパイルしたほうが楽だったりするね
バイナリパッケージあるやつならそれで良いんだけど
0815デフォルトの名無しさん
2011/05/17(火) 09:11:44.22thread 周りが pthread 実装のみに依存してればな
0816デフォルトの名無しさん
2011/05/17(火) 10:52:52.17>>808の言っている意味を理解してないと思われ
例えば比較的ポータビリティの高いGCL(旧KCL)でも、
ldの仕様が違うからコンパイルしたネイティブコードを扱う方法が変わる。
http://www.softwarepreservation.org/projects/LISP/kcl/paper/kcl-paper.pdf
の7, 8節。
0817デフォルトの名無しさん
2011/05/17(火) 11:59:19.02FreeBSDはやっぱり今後も放置されたままな予感
0818デフォルトの名無しさん
2011/05/17(火) 12:16:24.030819デフォルトの名無しさん
2011/05/17(火) 12:37:45.890820デフォルトの名無しさん
2011/05/17(火) 16:13:26.390821デフォルトの名無しさん
2011/05/17(火) 20:59:26.11sbcl-devel みてると結構やってるっぽい
つか、lutex 使わなきゃ、thread 実装も安定してるって
あれだけ言ってるのに
0822デフォルトの名無しさん
2011/05/18(水) 00:07:36.97CCLをSolaris(OpenIndiana)でしばらく使ってみようと思ってる。
0823デフォルトの名無しさん
2011/05/18(水) 00:42:40.86Linux以外スレッド動かないのがいたいのー
0824デフォルトの名無しさん
2011/05/18(水) 10:38:40.36だからFreeBSDでもthreadは動くと何度言えば...
lutex使わなくてもthreadは動作してくれる
0825デフォルトの名無しさん
2011/05/18(水) 15:47:11.11Mac でもスレッド動くよ
0826デフォルトの名無しさん
2011/05/18(水) 15:56:14.63昨年の暮から話が出てる。
0827デフォルトの名無しさん
2011/05/19(木) 22:38:55.09\n
じゃだめ?上手くマッチしないお。
0828デフォルトの名無しさん
2011/05/20(金) 00:22:09.76(ql:quickload :cl-ppcre)
(defparameter *string* "a
b
c")
(ppcre:regex-replace-all "\\n" *string* " ")
;; => "a b c", T
0829デフォルトの名無しさん
2011/05/20(金) 00:56:36.54ただ、CCLを使っている場合は、SLIMEでCL-INTERPOLが使えなかった気がするので注意。
スレッド作成時のリードテーブルの継承の仕組みの関係だったと思うけど、うろ覚え。
また、別解で、cl-irregsexpを使って
(cl-irregsexp:match-replace-all *string*
(#\newline " "))
みたいに読み易くもできるけど、こっちはドキュメント無しな、いつものJohn Fremlinクオリティ。
0830デフォルトの名無しさん
2011/05/20(金) 01:00:58.21ありがとうございます。
自分もそれでとりあえずは逃げましたが、かっこ悪くなっちゃいますよね。
>>829
ありがとうございます。
CLの弱点はやっぱりドキュメントですよねぇ。特に私みたいな初心者には。
ソース見ろって言われればそれまでなんですが・・・
0831デフォルトの名無しさん
2011/05/20(金) 01:17:48.18正規表現を文字列で渡すから仕方ない。この辺Emacsを連想するよね。
この辺を良きに計らえるのがリーダーマクロなので、気になるならCL-INTERPOLをどうぞ。
一応、cl-irregsexpはユニットテストのコードが付いてるので、推測しながら使うことは可能。
t/以下にある。というか、彼のコードは非常にトリッキーなことが多いので、正直読みたくない。
0832デフォルトの名無しさん
2011/05/22(日) 08:13:43.36cl-xxxみたいな既存のライブラリのバインディング系と、
CLIMとかCELLOとかの、よりLISP的にGUIを扱えるものがあるみたいだって分かったのだけど、
後者で今アクティブなのはこれ、ってのはあるのかな?
できればCFFIでほとんどむき出しの他言語ライブラリより、もうちょっと綺麗にラッピングしてある方がいいなあと思ってるんだけど、
「今自分はこれでGUIプログラム書いてるよ!」ってのがあったら教えてくれると嬉しいです。
0833デフォルトの名無しさん
2011/05/22(日) 22:56:35.96WEBじゃだめかい?aserve, hunchetoot, weblocksとよりどりみどり。
Clacksを使ってみたいけど、Tutorialがずっとメンテ中・・・
0834デフォルトの名無しさん
2011/05/22(日) 23:11:35.380835uy
2011/05/23(月) 15:05:50.810836uy
2011/05/23(月) 17:25:58.090837デフォルトの名無しさん
2011/05/23(月) 20:05:00.86http://clacklisp.org/tutorial/
これのことなら、単に空っぽなだけな気がする。
0838デフォルトの名無しさん
2011/05/24(火) 06:07:05.21(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で書いています。
0839デフォルトの名無しさん
2011/05/24(火) 08:18:52.37なんでバッククオートを嫌うのかイミフ
(list 'quote name) かな?
0840デフォルトの名無しさん
2011/05/24(火) 13:43:48.85PHPで書いたプログラムをLISPに移植してるんけど、
正規表現がことごとく動かない。
0841デフォルトの名無しさん
2011/05/24(火) 13:56:15.580842デフォルトの名無しさん
2011/05/24(火) 14:01:53.88ああ!(list 'quote name)でうまくいきました。
あれこれ試したのですが、なんで分からなかったのだろう。
`をlistと'で置き換えられるのかどうか試していた所でした。
レスありがとうございました。
0843デフォルトの名無しさん
2011/05/24(火) 14:07:52.36Perl互換の正規表現といってるが、まったく互換性ないから。
0844デフォルトの名無しさん
2011/05/24(火) 14:23:16.98他の言語で当たり前にできることがまともにできないのがLispのウリですし。
LISPはそういうマゾ環境下でのバッドノウハウと、
過去の歴史を懐古して楽しむ貴族の言語だ。
だからLISPは美しいとかよく紹介されてるだろ?
これは芸術であり実のあるものじゃないんだよ。
0845デフォルトの名無しさん
2011/05/24(火) 15:13:14.020846デフォルトの名無しさん
2011/05/24(火) 15:24:02.110847デフォルトの名無しさん
2011/05/24(火) 15:28:22.300848デフォルトの名無しさん
2011/05/24(火) 15:38:24.220849デフォルトの名無しさん
2011/05/24(火) 15:45:24.570850デフォルトの名無しさん
2011/05/24(火) 15:51:24.50ql見たらlambda-gtkなんてのが出てるね。
0851デフォルトの名無しさん
2011/05/24(火) 15:53:46.31cl-interpolは使ってる?
後、
http://www.cliki.net/regular%20expression
ここでもcl-irregsexpを最初にあげてあるっしょ。
0852デフォルトの名無しさん
2011/05/24(火) 16:56:32.70探してみると、sshでポートフォワーディングして接続してるケースは見かけるけど、
swankをlocalhost以外で待ち受けさせる方法はないように見えるけど。
0853デフォルトの名無しさん
2011/05/24(火) 17:10:04.83この辺変えてみれば?
(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))
;;;略
0854デフォルトの名無しさん
2011/05/24(火) 17:16:27.79Windows+clozureで使ってるので、cl-interpolはコンパイル失敗して使えなかったので使ってませんでした。
VMのLinux+SBCLだと動いたので、こっちで動かすことにしてみます。
ありがとうございます。
0855デフォルトの名無しさん
2011/05/24(火) 17:30:02.20素晴らしい!できました!
ただリモートにすると、M-.のソース展開ができなくなっちゃうんですね。
動作確認用にとどめておきます。
0856デフォルトの名無しさん
2011/05/24(火) 18:56:35.20# Test: return pathname
ok 15
ok 16
ok 17
みたいなメッセージが出るようになっちゃったんですが、
これって何ですか?
0857デフォルトの名無しさん
2011/05/24(火) 23:59:33.15お前らどんだけサディストなんだよw
0858デフォルトの名無しさん
2011/05/25(水) 00:10:02.97何かの拍子に、どこかのライブラリのユニットテストでも実行してるんじゃないの?
grepで~/quicklisp以下を検索してみたらどうだろう。実害無いなら放置しといて良い気がする。
0859デフォルトの名無しさん
2011/05/25(水) 00:18:19.72ttp://ironscheme.codeplex.com/license
ttp://www.microsoft.com/japan/opensource/licenses.mspx
OSI認定のMicrosoft Public License。無料。
0860デフォルトの名無しさん
2011/05/25(水) 00:24:44.37(ql:quickload "cl-ppcre")
(ppcre:scan "^abc$" "abc")
;; => 0, 3, #(), #()
(ppcre:scan "z$" "abcdefghijklmnopqrstuvwxyz")
;; => 25, 26, #(), #()
0861デフォルトの名無しさん
2011/05/25(水) 01:13:53.41ttp://tips.lisp-users.org/common-lisp/index.cgi?CL-PPCRE
0862デフォルトの名無しさん
2011/05/25(水) 03:13:16.85http://tips.lisp-users.org/common-lisp/index.cgi?cl-irregsexp
0863デフォルトの名無しさん
2011/05/25(水) 03:17:08.93これも入れておいて。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"
0864デフォルトの名無しさん
2011/05/25(水) 03:21:48.840865デフォルトの名無しさん
2011/05/25(水) 03:43:41.74追加した。サンクス。
0866デフォルトの名無しさん
2011/05/25(水) 10:57:50.94ナイスすぎる。
これ世界初のまともな解説文章じゃないかw
0867デフォルトの名無しさん
2011/05/25(水) 17:40:53.74分かりやすい!
0868デフォルトの名無しさん
2011/05/25(水) 19:05:23.98例が足りんかったら自分で付け足すか、これを追加して、ってのを書いてくれ。
0869デフォルトの名無しさん
2011/05/25(水) 20:02:57.84ttp://evalwhen.com/pregexp/index.html
0870デフォルトの名無しさん
2011/05/25(水) 20:21:19.950871デフォルトの名無しさん
2011/05/25(水) 22:29:46.99lambdaって関数返すってのは解るんだけど。実態は何返してんの?
多分何らかのS式か、関数の実体を指す識別値(オブジェクト)なんだろうけどどんな形よ?
0872デフォルトの名無しさん
2011/05/25(水) 23:05:57.28#<Anonymous Function #x210372233F>
CL-USER> #'format
#<Compiled-function FORMAT #x10009114F>
0873デフォルトの名無しさん
2011/05/25(水) 23:10:25.350874デフォルトの名無しさん
2011/05/26(木) 16:05:57.35いまいち公式読んでてもよくわかんないんだよね。。。
やりたいのはサーバサイドで生成したリストをページをまたがって保持していきたいんですが。
0875デフォルトの名無しさん
2011/05/26(木) 17:12:17.21(start-sesisoin)してから
(setf (session-value :symbol ) assignvalue)
あとは (sesion-value :symbol)でアクセスできるから普通のWebプログラミングと変わらない
寿命とかは適宜ggってくれ
0876デフォルトの名無しさん
2011/05/27(金) 00:42:44.23さんく
create-sessionして、その戻り値を使うのかと勘違いしてた。
0877デフォルトの名無しさん
2011/05/27(金) 01:38:59.18翻訳本の 3.8ツリー(p.36)の「car部は右側下位ツリーを、cdr部は左側下位ツリーを示す。たとえばつぎのようなリストは……」
という説明に出てくる「左右」は、p.37の図とは逆では無いでしょうか?
0878デフォルトの名無しさん
2011/05/30(月) 20:17:47.99書籍に依存する質問だと、持っている人しか分からないから、
引用ということで、図だけ画像化してアップロードしたり、とかしないと、
回答付きにくいと思う。
んで、本題。amazonで本文検索してきたけど、そちらの考え通り誤植みたい。
原書のerrataには載ってなかったから、訳書だけの誤植の模様。
0879デフォルトの名無しさん
2011/05/31(火) 12:49:45.91CLからブログに投稿したかったんだけど、Drakmaでごり押しするのか。。。
0880デフォルトの名無しさん
2011/06/01(水) 00:21:49.71Bloggerなら、
ttp://code.google.com/p/cl-blogger/
とかあるけど。
0881デフォルトの名無しさん
2011/06/01(水) 02:19:10.95defsystem で定義して、asdfで読み込むのが普通?
0882デフォルトの名無しさん
2011/06/01(水) 06:51:09.49普通。require/provideはANSIではdeprecatedだし、ASDFが事実上の標準。
Cでみんなmakeを使うみたいに、CLではみんなASDFを使う。そういうノリ。
ただ、ASDFを使わずに自分で管理することもでもできない訳じゃない。
各ファイルを全部自分でコンパイルした上で、読み込む順番に注意しながら、
loadで読み込んだって良い。
0883デフォルトの名無しさん
2011/06/01(水) 15:01:30.390884デフォルトの名無しさん
2011/06/01(水) 16:33:45.91「なんどもなんどもなんどもなんども deplecated だと言ってるのに誰も従わない」
ってな事がどっかに書いてあった記憶がある
# んだが, どこで読んだっけ >自分
0885デフォルトの名無しさん
2011/06/01(水) 20:37:59.15ClojureのLeiningenみたくもちっと簡単なのないのだろうか
0886デフォルトの名無しさん
2011/06/01(水) 21:32:54.15quicklisp
0887デフォルトの名無しさん
2011/06/02(木) 01:58:53.70サンクス
0888デフォルトの名無しさん
2011/06/02(木) 10:09:27.08require /provide が deprecated って事は、
現状って、同様の機能の規格標準が無いってこと?
>>886
知らなかった quicklisp
asdf-install より、楽かな。
elpa といい、lisp 界隈の人も cpan 的なものに
目覚めたのかな?
0889デフォルトの名無しさん
2011/06/02(木) 11:40:25.63コレいいね
ASDFは何でもかんでもできるかわりに最初の手当がめんどいので苦手だったんよ
0890デフォルトの名無しさん
2011/06/02(木) 11:51:09.49というか、まだまだ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が事実上の標準として使われてる。
0891デフォルトの名無しさん
2011/06/02(木) 13:04:05.77まだベータだし。
ところで XML を扱うライブラリの標準ってある?
0892デフォルトの名無しさん
2011/06/02(木) 13:22:29.94Closure XML Parser - 高機能。対応内部表現多い。内部表現によっては遅い
ttp://common-lisp.net/project/cxml/
XMLS - 速い。検証しない。エラー処理貧弱
ttp://www.common-lisp.net/project/xmls/
自分で使うならcxmlのSTPかXMLS。
0893デフォルトの名無しさん
2011/06/03(金) 02:24:39.77error in process filter: end of buffer
とか出てロードできない時があるけど、いまいち原因がわからないんだよね。
C-c C-c でS式ごとにコンパイルすれば問題なっしんぐ。
0894デフォルトの名無しさん
2011/06/03(金) 22:36:14.06遅くなりましたが、ありがとうございます。
納得しました。
0895デフォルトの名無しさん
2011/06/03(金) 23:15:50.47http://news.ycombinator.com/item?id=2616082
0896デフォルトの名無しさん
2011/06/04(土) 00:18:11.440897デフォルトの名無しさん
2011/06/04(土) 03:57:04.390898デフォルトの名無しさん
2011/06/04(土) 05:14:41.780899デフォルトの名無しさん
2011/06/04(土) 08:33:32.40mainlineにマージする作業してるみたいだからもう少し待ってあげて。
この週末で出る1.0.49には間に合わないだろうけど、入るのもそう遠くないはず。
すぐに使いたいなら、バイナリが
ttps://github.com/akovalenko/sbcl-win32-threads/wiki
に置いてある。
0900デフォルトの名無しさん
2011/06/04(土) 08:40:20.30SBCLのWindowsでのスレッドサポートに興味がある人は、sbcl-devel読むと良いかも。
ttp://sourceforge.net/mailarchive/forum.php?forum_name=sbcl-devel
ttp://groups.google.com/group/sbcl-devel
0901デフォルトの名無しさん
2011/06/04(土) 09:01:03.87処理系から意図した応答が返ってきてないとか?
*slime-events*とか見れば手がかり掴めるかもよ。
0902デフォルトの名無しさん
2011/06/05(日) 04:48:21.75おー、これいいな。
ちと試してみるか。
0903デフォルトの名無しさん
2011/06/05(日) 15:42:06.510904デフォルトの名無しさん
2011/06/07(火) 01:54:29.91パッケージのソースを追っていると、たまに見かけるんだけど、
検索しても明確な情報が出てこなかったので。。。
(defun hoge ()
@doc "
comment
"
なんて形で使われてるんだけど、あっても無くても違いがよくわかりませんでした。
0905デフォルトの名無しさん
2011/06/07(火) 03:47:53.17パッケージ化されてないのでしょうか
0906デフォルトの名無しさん
2011/06/07(火) 06:48:09.40cl-annotだと思ったんだけど、使いかた違うっぽいなー。
ttps://github.com/arielnetworks/cl-annot
リーダーマクロでそれっぽいの定義してない?
具体的なパッケージ名は?
0907デフォルトの名無しさん
2011/06/07(火) 06:53:01.56Bordeaux Threadsを使ってる人なら割と見掛ける。
ttp://common-lisp.net/project/bordeaux-threads/
0908デフォルトの名無しさん
2011/06/07(火) 07:26:30.20On Lispにそんなのあったっけ?
最後ら辺っていうと、CLOSとパッケージがおざなりに紹介されてた覚えしか無い。
0909デフォルトの名無しさん
2011/06/07(火) 07:40:08.32本文とASDFで読める形にパッケージし直したコードが手に入る
.debをダウンロードすればDebian系でなくとも手に入る
0910デフォルトの名無しさん
2011/06/07(火) 09:29:00.97http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/parsingWithATNs.html
0911デフォルトの名無しさん
2011/06/07(火) 10:40:20.16そんな意味のないレス書きこむなよw
debian系じゃない人はここから取ってこれる。
http://packages.ubuntu.com/search?lang=ja&searchon=names&keywords=onlisp
*.debはar形式で、その中のdata.tar.gzにonlisp.lispとonlisp.asdがある。
0912デフォルトの名無しさん
2011/06/07(火) 11:03:44.53そういや、ATNとかあったね。今ググったら、萩谷教授のUIについてのエッセイとかが引っ掛かって、
DFAとかATNのUIへの応用とかが書かれてて、勉強になったわ。今だとあんまり聞かない気がするけど、
どこかで応用されてたりするのかね?
0913デフォルトの名無しさん
2011/06/07(火) 12:03:23.10その応用としてATNパージング、さらにPrologと来て、凄く面白いところ。
こういう流れのいい本読むとやっぱりLisp(というかS式?)はいいなあって思うね。
最後のOOの章はまあ書かんとまずいかねって感じだね。
0914デフォルトの名無しさん
2011/06/07(火) 15:59:29.04あるよ。
以上。
はい、次。
0915デフォルトの名無しさん
2011/06/07(火) 17:35:05.31最近のCLで動かないぞ
0916デフォルトの名無しさん
2011/06/07(火) 17:43:43.40onlisp.lispの最初のところにあれこれ書いてある。
Debianによる配布については、copyrightファイルに、
Paul Grahamの許可のメールが載ってる。
問い合わせとパッケージ化してくれたのはKevin M. Rosenbergさん。
0917デフォルトの名無しさん
2011/06/07(火) 18:23:42.96それ以降の 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
で落としてきた。
0918デフォルトの名無しさん
2011/06/07(火) 19:19:25.21そこで練習問題として
Write predicates free? (respectively, bound?) that detemines if an expression contains a free (respectively, bound) instance of a particular variable.
という問題がありました.
特定の変数の独立したインスタンスを含むかどうか判別する述語free?を作れという文章だと思うのですが,どうでしょうか?
また,その場合free?をどう作れば良いのかわかりません.
どなたか方針だけでも
お願いします.
0919デフォルトの名無しさん
2011/06/07(火) 19:50:15.65Lisp Scheme Part32
http://hibari.2ch.net/test/read.cgi/tech/1303299696/
0921デフォルトの名無しさん
2011/06/09(木) 02:02:55.28みたいなリストを、
(:data "1")
みたいに整形する事ってできますか?マクロを使わずに。
0922デフォルトの名無しさん
2011/06/09(木) 05:07:54.49ttps://gist.github.com/1015265
0923デフォルトの名無しさん
2011/06/09(木) 07:17:48.76(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"))
0924デフォルトの名無しさん
2011/06/09(木) 08:28:32.56マクロはコンパイル時のコード変換だから、こういうのとはあんま関係ない。
定数じゃないと無理だし。
(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))
0925デフォルトの名無しさん
2011/06/09(木) 14:39:00.54ありがとうございます。
internという関数があるのですね。
文字列 キーワード 変換 とかでググってもわからなかったので助かりました。
0926デフォルトの名無しさん
2011/06/09(木) 14:50:44.460927デフォルトの名無しさん
2011/06/09(木) 23:01:35.62S式形式でパースするとアクセスがひどく冗長的になるので、
DOMでやろうと思うのだけれどドキュメントが無くて手詰まり。
どっかにサンプル無いですかね・・・
0928デフォルトの名無しさん
2011/06/10(金) 07:27:03.77ほんとに調べた? 「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」で触れられているし。
0929デフォルトの名無しさん
2011/06/10(金) 07:49:18.80S式にしてしまえば単なる木構造になるわけで、リスト操作の関数が使える。
mapcarとかreduceとか使いたい放題だし、child-nodesとか使わずに済む。
XMLS形式なら確かcddr。
S式じゃないにしても、STPならmap-childrenとかdo-childrenとかあるし、便利。
DOMは小回り効かないからあんまお勧めしない。
0930デフォルトの名無しさん
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の基本的な問題らしいのですが、
プログラミング初心者のため、わからず困っています。
どの問題でもいいので、ご存じの方いらっしゃいましたらよろしくお願い致します。
0931デフォルトの名無しさん
2011/06/13(月) 10:57:19.28【CL】Lispの宿題片付けます 2【Scheme】
http://kamome.2ch.net/test/read.cgi/river/1307889022/
0932デフォルトの名無しさん
2011/06/13(月) 11:47:35.17とっても簡単な問題だから、もうちょっと自分で考えてみようぜ。
コンスセルというものを理解できれば、単なるパズルだ。
ttp://blog.livedoor.jp/lisp_learner_group/archives/201288.html
で、これを踏まえた上で、例えば、(a b)というリストは、
[ a | -]→[ b | / ]
なわけだ。((a) (b))なら、
[ | -]→[ | / ]
↓ ↓
[ a | / ] [ b | / ]
になる。じゃあ、>>930の問題の答えはどうなる?
0933デフォルトの名無しさん
2011/06/13(月) 12:00:14.96「線形リスト」というものの一種で、「片方向リスト」と呼ばれる。
プログラミング言語の授業取った(=プログラミングに興味がある)なら、
覚えといて絶対に損はないぜー。
0934デフォルトの名無しさん
2011/06/13(月) 12:28:06.58どうでもいいけど後半の1と2は回答しようがないな
問題を写し間違っているんだろうけど
0935デフォルトの名無しさん
2011/06/13(月) 12:42:14.841は謎。関係ないけど、「-]→」って表現にはちょっと感心した。
0936デフォルトの名無しさん
2011/06/13(月) 12:52:44.47なるほど
carから矢印が伸びていたわけね
0937デフォルトの名無しさん
2011/06/15(水) 13:51:51.22racketのS式と互換性あるといいんだけどなあ
racketは不正なhtmlでも変換する
0938デフォルトの名無しさん
2011/06/15(水) 14:19:17.00好きなデータ構造を作れるようになってたと思う。
0939デフォルトの名無しさん
2011/06/17(金) 10:54:24.21http://journal.mycom.co.jp/news/2011/06/17/001/index.html
0941デフォルトの名無しさん
2011/06/19(日) 08:00:09.18パロディ処理系すら作れやしない
0942デフォルトの名無しさん
2011/06/19(日) 08:17:10.200943デフォルトの名無しさん
2011/06/19(日) 08:54:11.21もうGCに回収されるのか
0944デフォルトの名無しさん
2011/06/19(日) 16:44:44.510945デフォルトの名無しさん
2011/06/21(火) 15:13:43.49そんなに使われているモノでもないの?
0946デフォルトの名無しさん
2011/06/22(水) 00:54:56.690947デフォルトの名無しさん
2011/06/22(水) 03:05:57.970948デフォルトの名無しさん
2011/06/22(水) 03:26:01.48起動が速くなるし、aproposでもかなり重宝してたんだけど。
0949デフォルトの名無しさん
2011/06/22(水) 09:35:50.27ccl:save-applicationで普通に作れるよ。
Common Lispの処理系なら大抵できると思う。
ttp://ccl.clozure.com/ccl-documentation.html#Saving-Applications
何でも好きなライブラリ読み込んでから
(ccl:save-application "foo.image")
でオーケー。読み込みはコマンドラインのオプションの-Iか--image-nameで。
0950デフォルトの名無しさん
2011/06/22(水) 12:43:27.03ありがとう!!
0951デフォルトの名無しさん
2011/06/28(火) 01:36:41.87; リストのカッコを外した物を引数にしたい
(setq are 'grape args '('apple 'orange are))
(top3 ,@args) ;こういう要領で
(top3 'apple 'orange are) ; こう変換したい
; => args is APPLE, ORANGE, GRAPE
(eval `(top3 ,@args)) ; 実装するとこうなりました
evalを使うのはどうかと思ったのですが、もっと良い方法はあるのでしょうか?
0952デフォルトの名無しさん
2011/06/28(火) 02:45:26.54(apply #'top3 args)
0953デフォルトの名無しさん
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)
0955デフォルトの名無しさん
2011/06/28(火) 02:55:32.33(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)
0956951
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"
0957デフォルトの名無しさん
2011/06/29(水) 16:44:12.600958デフォルトの名無しさん
2011/06/29(水) 22:06:03.96もっと別の、おぞましい何かにしか…
Lisper的にはPythonのブロックインデントは有り?無し?
0959デフォルトの名無しさん
2011/06/29(水) 22:42:17.220960デフォルトの名無しさん
2011/06/29(水) 23:00:37.77pass って書くのめんどいから ) がいい。
0961デフォルトの名無しさん
2011/06/29(水) 23:19:32.99オフサイドルールについては、Haskellに対してだけど、とても面白い洞察があるよ。
ttp://d.hatena.ne.jp/camlspotter/20101212/1292165692
それ以外の部分も面白いからお勧め。名前空間の部分とか、CLでも参考になる。
0962デフォルトの名無しさん
2011/06/29(水) 23:28:09.74こっちのが適切だったかも。
0963デフォルトの名無しさん
2011/06/30(木) 05:55:58.430964デフォルトの名無しさん
2011/06/30(木) 06:15:48.610965デフォルトの名無しさん
2011/06/30(木) 06:20:43.510966デフォルトの名無しさん
2011/06/30(木) 06:46:48.67ダウンロードした Lispbox はどれで
使っている Linux は何?
つーか、Linuxならパッケージマネージャで環境整わない?
0967デフォルトの名無しさん
2011/06/30(木) 06:54:49.360968デフォルトの名無しさん
2011/06/30(木) 06:57:21.24誰も答えようがない。
ダウンロードした場所、インストールのときに行った操作、どうやって起動したか、
そしてその結果、どのようにうまく起動できなかったのか。例えば、エラーメッセージが出るとか、
エラーメッセージすら出ないとか、コアダンプするとか、そういった情報を書いてくれ。
0969デフォルトの名無しさん
2011/06/30(木) 07:01:01.18Vine Linux4.1
0970デフォルトの名無しさん
2011/06/30(木) 07:01:34.230971デフォルトの名無しさん
2011/06/30(木) 07:18:43.970972デフォルトの名無しさん
2011/06/30(木) 08:14:05.970973デフォルトの名無しさん
2011/07/02(土) 12:43:52.170974デフォルトの名無しさん
2011/07/03(日) 14:07:11.81http://gajon.org/common-lisp-development-vim/
slimv ってvimのslime版プラグインはそこそこの出来だよ。ただし、pythonが
必要だが。
0975デフォルトの名無しさん
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
となっています…。
よろしくお願い致します。
0976デフォルトの名無しさん
2011/07/04(月) 10:09:41.86(let ((x (car list)))
(if (remove x list)
nil
x)))
0977デフォルトの名無しさん
2011/07/04(月) 10:59:22.27(reduce (lambda (a b) (if (eql a b) a nil))
x))
0978デフォルトの名無しさん
2011/07/04(月) 11:06:54.51Common Lispには、「同じ」という意味がいくつかあるから注意した方が良いよー。
ttp://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp03.html
見てね。
>>976とか>>977で解答が出てるけど、要は、最初の要素とそれ以降の要素を比較して、
リストの最後まで一致すれば、最初の要素を返す、一致しないものがあれば、nilを返す、
っていう処理を書けば良い。
0979デフォルトの名無しさん
2011/07/04(月) 14:43:23.29(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
0980デフォルトの名無しさん
2011/07/04(月) 14:48:45.01a bはともかく、x y zはmapを使うんだと思うけど。
0981デフォルトの名無しさん
2011/07/04(月) 14:53:08.96古い参考書に載ってた練習問題です…orz
解説を見ようとしたら中古品だったので解説部分が切り取られてましたT-T
0982デフォルトの名無しさん
2011/07/04(月) 14:56:58.90xの仕様を日本語で書き下してみたら?
0983デフォルトの名無しさん
2011/07/04(月) 15:03:09.97どのようにして(11 21 31)を取り出すのかさえ分かれば
解けると思うのですが…orz
初心者なので???状態です…。
0984デフォルトの名無しさん
2011/07/04(月) 15:13:22.89まず、日本語で仕様を書き下す。
次に、それを実現するために必要な関数を調べる。
そして、仕様を言語で書き直す。
さあ、xの仕様を日本語で書き下してみよう。
初心者かどうか関係ない。問題を理解できたかどうかの問題。
0985デフォルトの名無しさん
2011/07/04(月) 16:37:58.69ただその結合が上手くいきません…。
0986デフォルトの名無しさん
2011/07/04(月) 17:10:18.200987デフォルトの名無しさん
2011/07/04(月) 17:16:49.96(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はこの関数のごく単純なバリエーションにすぎません。
0988デフォルトの名無しさん
2011/07/04(月) 18:58:25.57>関数xの仕様としては、carしてcarしたものとcdrしてcar したものとcdrしてcdrしてcarしたものをつなげばいいです。
処理系あるなら一回試してみ
あるいはboardをconsだけで書いてみるといいよ
0989デフォルトの名無しさん
2011/07/05(火) 01:15:13.780990デフォルトの名無しさん
2011/07/05(火) 18:09:12.44Hunchentoot
そんなに使われてる?
0991デフォルトの名無しさん
2011/07/05(火) 18:14:36.520992デフォルトの名無しさん
2011/07/05(火) 19:22:49.48とりあえず、私的に実験的なページだとHunchentootつかうかな
parenscriptあたりもlispのりで書けるし...
元のレスは「Hunchentootで普通にスレッド使いまくり」って意味だけど、
Hunchentoot自体も普通に使われてると思うよ。
だって、まともにメンテされてんのがHunchentootくらいだし。
0994デフォルトの名無しさん
2011/07/06(水) 16:35:27.80http://hibari.2ch.net/test/read.cgi/tech/1309940115/l50
テンプレとか、よろしく。
>>994
ttp://d.hatena.ne.jp/einblicker/20101114/1289691118
0997デフォルトの名無しさん
2011/07/06(水) 20:41:11.83うめ
0998デフォルトの名無しさん
2011/07/06(水) 21:16:11.87ともあれ乙
0999デフォルトの名無しさん
2011/07/07(木) 00:08:40.08以前はプロトタイプのweb作るのに使ってた(あと管理系のwebツール)
いまはclojure+compojureの方が書きやすいと思うようになっちゃった
1000デフォルトの名無しさん
2011/07/07(木) 00:15:57.4810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。