トップページtech
987コメント300KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/01/27(日) 11:52:46
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

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

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

(list
(url 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))
0002デフォルトの名無しさん2008/01/27(日) 11:53:20
((お勧めの Common Lisp 処理系)
(SBCL: http://sbcl.sourceforge.net/
:プラットフォーム UNIX, Linux, Mac, Windows(移植中)
:開発 活発
:日本語 使える(UCS4, UTF8, EUC)
:特徴 一番お勧めのコンパイラ。)

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

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

(OpenMCL: http://openmcl.clozure.com/index.html
:プラットフォーム PPC-Linux, Mac, x86-Linux と FreeBSD に移植中
:開発 そこそこ活発
:日本語 使えない (pre ver 1.1なら多少扱える。)
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))


0003デフォルトの名無しさん2008/01/27(日) 11:54:07
((商用CL) ;;誰か補間よろ
(Allegro: http://jp.franz.com/index.html
:プラットフォーム Windows ,Mac OS X , Freeを含む各種UNIX
:開発 ほとんど本陣
:日本語 使える(内部UTF16,外部 プラットフォーム毎)
:特徴 お高いがもっとも頼れる。申し込みが必要だがFree Express Editionあり )
(LispWorkss: http://www.lispworks.com/downloads/index.html
:プラットフォーム Windows ,Mac OS X
:開発 半年にいっぺんくらいアップデート
:日本語 使えるみたい(完全に対応しているかはちとわかりかねまする)
:特徴 IDEベースです、フリー版はconsセルの上限が来るとダイアログがでてしまいます、SDLとかで遊ぶとすぐに引っかかります ))

((その他)
(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デフォルトの名無しさん2008/01/27(日) 11:55:05
ANSI Commn Lisp 仕様関係
http://www.lisp.org/HyperSpec/FrontMatter/index.html
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html
http://lispdoc.com/

日本語のチュートリアル
ttp://web.sfc.keio.ac.jp/~t02064si/lisp2005/
ttp://www.h7.dion.ne.jp/~matsu/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
ttp://www-kasm.nii.ac.jp/~takeda/lectures03/titech/ai1/Text/CL.txt
0005デフォルトの名無しさん2008/01/27(日) 11:55:48
進んだ話題が欲しい人に...
(和文)
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/index.html
ttp://www.geocities.co.jp/SiliconValley-Cupertino/2478/root-sect-2.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デフォルトの名無しさん2008/01/27(日) 11:56:09
((おまけの処理系
(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 のソースを公開したもの))

((その他のリンク
(Meme channels: http://meme.b9.com/start.html
Lisp の IRC Log)
(Paul Graham の ANSI Common Lisp:
http://www.pearsoned.co.jp/hed/search/onlinecatalog.html?id=276
Common Lisp の 参考書を探しているならこれ一択))
0007デフォルトの名無しさん2008/01/27(日) 12:22:06
>>1
0008デフォルトの名無しさん2008/01/27(日) 14:00:58
read-lineするとさ
"文字列" ってかえってくるやん?
これって形式的には何になるんですか?

変数にうまくはいってこないんだよね
0009デフォルトの名無しさん2008/01/27(日) 17:11:58
進んだ情報に追加
On Lisp邦訳 web版
ttp://user.ecc.u-tokyo.ac.jp/~tt076524/#lisp_onlisp
0010デフォルトの名無しさん2008/01/27(日) 17:13:02
ちょっと質問から「うまくはいってこない」がイメージできんので、コードを見せてくれませんか。
0011デフォルトの名無しさん2008/01/27(日) 18:47:57
テンプレ全部書いたら連続投稿規制にひっかかって前スレで案内できませんでしたorz
0012デフォルトの名無しさん2008/01/27(日) 18:59:33
商用CL
http://jp.franz.com/index.html
free downloadから登録して使えるらしい
http://www.lispworks.com/downloads/index.html
IDEがついているらしい
0013デフォルトの名無しさん2008/01/27(日) 19:04:25
>>12
しくしく、それ一応テンプレにいれてあるのでございます、ショボーン
0014デフォルトの名無しさん2008/01/27(日) 21:14:16
tspl入ってないな。
0015デフォルトの名無しさん2008/01/27(日) 23:01:10
>>1
なんか重いな
0016デフォルトの名無しさん2008/01/30(水) 05:45:39
Aという親を頂点に、左下にBいう子、右下にCという子がいるだけの
簡単な木の関係がある時、これを(A B C)と書くのか、(A(B C))と
書くのか、どちらでしょうか。
0017デフォルトの名無しさん2008/01/30(水) 06:11:51
>>16
そのリストをどう利用するのかにもよるけど
(A B C)はお勧めできない

どっかにヒープソートとかのソースが落ちてたら
そういうソースを参考にするといい
0018デフォルトの名無しさん2008/01/30(水) 16:39:33
GCLを使っていて、
メモリの使用状況(どのくらいメモリを食っているか)を確認したいのですが、
room関数の見方がいまいちよくわかりません。

1134/1259 30.3% CONS RATIO COMPLEX STRUCTURE
25/28 8.4% FIXNUM SHORT-FLOAT CHARACTER RANDOM-STATE READTABLE SPICE
93/404 82.9% SYMBOL STREAM
1/2 20.5% PACKAGE
96/373 46.7% ARRAY HASH-TABLE VECTOR BIT-VECTOR PATHNAME CCLOSURE CLOSURE
27/32 66.6% STRING
294/325 1.8% CFUN BIGNUM LONG-FLOAT
11/115 84.1% SFUN GFUN VFUN AFUN CFDATA

104/512 contiguous (459 blocks)
13107 hole
5242 0.0% relocatable

1681 pages for cells
20134 total pages
101431 pages available
9507 pages in heap but not gc'd + pages needed for gc marking
131072 maximum pages

(room)を実行すると、このように出るのですが、
どの部分を見れば、メモリの使用状況が分かるのでしょうか?
0019デフォルトの名無しさん2008/01/30(水) 17:36:31
>>18
さてあなたのPCのメモリはいくつでしょう
0020デフォルトの名無しさん2008/01/30(水) 19:57:05
>>19
roomで出てくる数値は、PCのメモリとは関係ないみたいなんです。
2GのPCでやっても、1GのPCでやっても同じ結果が出てきます。

GCLを起動した直後のroomの数値と、
メモリを大量に食う関数を実行した後のroomの数値を比べて、
どこを見れば、メモリの使用量がわかるのでしょうか?


pageという単位が、2,048バイトなのはわかったんです。
pages for cellsのとこを比べればいいのかな?
0021デフォルトの名無しさん2008/01/31(木) 18:31:15
http://journal.mycom.co.jp/news/2008/01/30/022/index.html
0022デフォルトの名無しさん2008/02/04(月) 19:54:37
>>1


疑問なんだが、パワーズって誰だ???
0023デフォルトの名無しさん2008/02/05(火) 00:01:31
>>22
前スレのコピペなんで俺に聞かないでくれ。

>>前スレの1の中の人解説よろ
0024デフォルトの名無しさん2008/02/06(水) 22:53:08
今日会見してたよ
0025デフォルトの名無しさん2008/02/07(木) 19:24:21
すいません。lispのマクロは最強でほかの言語では真似できないそうですが、
具体的にlispマクロ最強を実感できる例を教えていただけないでしょうか。
0026デフォルトの名無しさん2008/02/07(木) 20:16:58
最強とか実感とか、痛い言葉が並ぶなあ。
だと君に吹き込んだ奴にきくのが一番じゃないの。
0027デフォルトの名無しさん2008/02/07(木) 20:18:03
失敬。
だと → 最強だと
0028デフォルトの名無しさん2008/02/07(木) 20:20:18
「Lisp マクロ」で検索して出てくるコードの大半が、
じゅうぶん「ほかの言語では真似できない」ことをやってるから、それを眺めるといいよ。
0029デフォルトの名無しさん2008/02/07(木) 20:26:53
私に吹き込んだ奴も本でそう書いてあるのを読んだっていうだけで
よくわかってないみたいです。

0030デフォルトの名無しさん2008/02/07(木) 20:29:18
>>28
おっとすいません。リロードしてませんでした。
検索してみます。
0031デフォルトの名無しさん2008/02/08(金) 15:42:22
結局パワーズってだれさ
0032デフォルトの名無しさん2008/02/08(金) 15:59:42
オースティン
0033デフォルトの名無しさん2008/02/08(金) 22:44:34
2000万
0034デフォルトの名無しさん2008/02/09(土) 00:23:56
グレートチキン
0035デフォルトの名無しさん2008/02/09(土) 15:06:23
おむつ
0036デフォルトの名無しさん2008/02/15(金) 10:45:49
やべぇええSchemeに浮気しそう...
継続を明示的に扱えるCommonLisp実装系ってないのですか?
(ひょっとして明示的に扱ったらANSI仕様違反?)
マクロの実装はOn Lispに書いてあったけど,色々不便だからなぁ
0037デフォルトの名無しさん2008/02/16(土) 09:54:17
CommonLispで面倒ならScheme使えばいいんでないの?
cl-contとか色々あるけど、多分36は「色々不便だからなぁ」っていうと思うよ。
0038デフォルトの名無しさん2008/02/16(土) 10:22:25
新スレに成ってから壊れ方があまいなぁ
離脱者多数?
0039デフォルトの名無しさん2008/02/16(土) 17:28:10
最近だと Scheme から入る人が多いのに、珍しいね。>>36
一旦乗り替えてみればいいじゃない。Scheme もやっといたほうがいいと思うよ。
別にどれか一個を選ばなきゃいけないってわけでもないし。
0040デフォルトの名無しさん2008/02/16(土) 19:32:37
継続なんて飾りだよ。
男は黙って compile & disassemble、速さこそ正義。
0041デフォルトの名無しさん2008/02/16(土) 20:59:29
速さがそれほど重要じゃない局面ってのもあるからねぇ
0042デフォルトの名無しさん2008/02/16(土) 22:48:29
そして、継続がそれほど重要な局面ってのは少ないからなぁ
0043デフォルトの名無しさん2008/02/16(土) 23:12:43
ファーストクラスじゃなくてもフロー制御くらいにゃ使えるしな。
Javaの世界でも継続〜ってなフレームワークがあるくらいだし。
まぁ、一度はSchemeをやっとくべきだと思う。
0044デフォルトの名無しさん2008/02/16(土) 23:18:50
CL をやっていて Scheme を知らない人は殆ど居ないんじゃないかな
その逆はかなり多そうだけど…
0045デフォルトの名無しさん2008/02/16(土) 23:38:22
>>44
そうだね、漏れもそう思う。
全部が全部、Gaucheの影響とは思わないけど、
そういう点では、Gaucheって偉大だなと思う。コミュニティも活発だし。
まあ偉大な大黒柱があってのこととも思うけど。
CL界隈ってコミュニティっていったらxyzzy方面くらい?
0046デフォルトの名無しさん2008/02/16(土) 23:47:50
とりあえず日本のCommon Lispコミュニティ
活性化のためにもIRCチャンネルでも作らないか?
0047デフォルトの名無しさん2008/02/16(土) 23:57:34
チャットとなると
貴様らはすぐにプログラミングとは別の話題ばかりで盛り上がる
そんなことよりcommonlispで何が出来るんだ?
0048デフォルトの名無しさん2008/02/17(日) 00:22:40
>>46
私はもうジジイなのでメーリングリストとか時間差をカバーできるのがいいなぁ。リアルタイムはキツイ。
>>47
とりあえず私の必要とするプログラミングのタスク一般、数値計算、データ分類は普通にできてるね。
でも煽るならもっと最近流行の言語で煽ったほうが喰いつきがいいと思うよ。
0049デフォルトの名無しさん2008/02/17(日) 01:00:02
>>42
そしてschemeが遅いわけでもない
Cより速い実装ってかなったっけ?
0050デフォルトの名無しさん2008/02/17(日) 01:07:25
>>49
stalin
0051デフォルトの名無しさん2008/02/17(日) 01:12:41
stalinとか?俺ぁ別にSchemeが遅いとか言う気もないけど。
0052デフォルトの名無しさん2008/02/17(日) 02:03:35
これからLisp始めようとしてる自分にとってチャットはwktk
0053デフォルトの名無しさん2008/02/17(日) 10:13:36
#scheme-jpは過疎ってるぞ
0054デフォルトの名無しさん2008/02/17(日) 11:38:36
Lingrとかどうなんだろうね。
一応過去ログも追えるみたいだけど。
0055デフォルトの名無しさん2008/02/17(日) 16:22:13
>>48
流行ってないのか?
流行って?
オッパイソンの事?
0056デフォルトの名無しさん2008/02/19(火) 16:02:52
入力されたS式をXMLに変換するときって
どんな風に書けばいいのですか?
0057デフォルトの名無しさん2008/02/19(火) 19:57:33
(S式をXMLに変換 入力されたS式)
0058デフォルトの名無しさん2008/02/20(水) 12:06:00
Javaで遅延評価ってどういうふうに書けますか?
0059デフォルトの名無しさん2008/02/20(水) 12:41:50
delayとforceを作ればおk

クロージャから外の環境へのアクセスにfinal縛りがあるから、
ちょっと不自由だけど。
0060デフォルトの名無しさん2008/02/23(土) 08:24:43
lispってWin32API使えるのですか?
0061デフォルトの名無しさん2008/02/23(土) 09:32:27
>>60
FFIでDLL経由ならいけると思うよ
0062デフォルトの名無しさん2008/02/23(土) 21:02:21
LISPでGUI使ったWindowsアプリケーションなんて作れるのか??
0063デフォルトの名無しさん2008/02/23(土) 21:06:33
>>62
もちろんできるよ
0064622008/02/23(土) 21:14:10
え〜〜〜
うーそーだー

どこにもやり方書いてなかったぞ〜〜〜
0065デフォルトの名無しさん2008/02/23(土) 21:36:02
Tk使えるだろ
0066デフォルトの名無しさん2008/02/24(日) 00:55:41
>>62
もっと簡単にやりたければLWかACL買えばいい。
それ以外ならLTKかSDLでやる。
0067デフォルトの名無しさん2008/02/25(月) 11:49:12
Lispってハードウェアよりの処理はできるの?
0068デフォルトの名無しさん2008/02/25(月) 17:00:13
>>67
FFIでラッパーライブラリつくれば何でもできる
0069デフォルトの名無しさん2008/02/26(火) 00:34:49
>68
そりは実質、ハードウェアよりの処理はほとんどの場合に
C(/C++)でやってるのではw?

まあ、そういう低レベルの処理は高級アセンブラであるところの
Cで行うのが正解だけど。
0070デフォルトの名無しさん2008/02/26(火) 00:47:36
Lispでコードジェネレータ書いて生成したコードを直接コール出来るようにしれ
0071デフォルトの名無しさん2008/02/26(火) 07:31:03
Movitz か MonaOSか、ならできるんじゃね?
おれはヘタレだから試したことないけど…
0072デフォルトの名無しさん2008/02/26(火) 22:08:46
>>71
MovitzはしらんがMonaOSは無理じゃね?
だってシステムコールとしてScheme使ってるわけじゃないだろ
ただシェルがSchemeというだけでしょ.

やっぱりLispのVM上でOSを書かないとだめじゃないか?
0073デフォルトの名無しさん2008/02/26(火) 23:15:37
言語と実装を混同してるんじゃないか?
システムコールをサポートしたScheme処理系があれば同じ事だろ。
Cだってシステムコールのサポートは言語じゃなくて実装の領分じゃん。
0074デフォルトの名無しさん2008/02/26(火) 23:38:42
システムコール(レベル)が「ハードウェアよりの処理」か。
人によって感じ方が違うもんだな。

俺の感覚では「ハードウェアよりの処理」とはDLLやデバイス
ドライバでハードウェアを直叩きする事だとつい考えてしまう。
で、Lispでそんな物を書いた例と言うのはあるのだろうか?
0075デフォルトの名無しさん2008/02/26(火) 23:43:12
>>74
ガーベージコレクタで処理が中断されることがある言語で、
タイミングにシビアなハードを直接制御するのは一般には
難しいだろ。
0076デフォルトの名無しさん2008/02/26(火) 23:50:16
ある。Movits とか組み込み用途か、Scheme なら http://home.earthlink.net/~krautj/sassy/sassy.html とか。

「〜なの?」「〜だめじゃん」とかではじまって解答されたらそこでおわりって質問多いよね。
まぁ荒しの一種なんだろうけどさ…。
0077デフォルトの名無しさん2008/02/27(水) 00:12:07
今時のOS上でハードウェアをたたきたいとか言うのはデバイスドライバも書けない能無しでしかないと思う。
それ以外の状況でLispと言う選択肢が有ることはもっと異例だしな。
0078デフォルトの名無しさん2008/02/27(水) 01:17:12
「ハードウェアよりの処理」をしたいあるいはハードウェアを直叩きする
処理(DLL、デバドラ等)をある言語で記述したいと言う話とある言語で
記述したアプリケーションのレベルからハードウェアを直叩きしたい
と言う話は全然別問題だと思うが。

実際Cではアプリやらデバイスドライバやらもろもろ書かれているわけだし。
Lispがそういう(低レベル)処理に向いているとはあまり思わないけど。
0079デフォルトの名無しさん2008/02/27(水) 01:57:33
ハードウェアを直接意識しないで済むように、
俺たちは高級言語を使ってるんじゃなかったのか?

下の方を触りたいなら、用途に適した言語使えばええがな(´・ω・`)
0080デフォルトの名無しさん2008/02/27(水) 08:41:18
「Lispではデバドラが書けないからLispはクソ」って
言いたいだけちゃうんか? な人が湧いたと聞いてry
0081デフォルトの名無しさん2008/02/27(水) 10:50:57
Lispでデバドラは無いわw
0082デフォルトの名無しさん2008/02/27(水) 11:01:21
SYMBOLICS とか LMI とかのマシンのデバドラって何で書いてあったんだろう?
0083デフォルトの名無しさん2008/02/27(水) 13:54:20
Lispでデバドラはかけるね
0084デフォルトの名無しさん2008/02/27(水) 13:55:21
>>83
マクロ使えばなw
0085デフォルトの名無しさん2008/02/27(水) 15:14:17
マルチスレッド処理を可能なLisp処理系ってありますか?
0086デフォルトの名無しさん2008/02/27(水) 15:30:30
>>85
あります
たとえばLispでJavaを実装すればマルチスレッデできます
0087デフォルトの名無しさん2008/02/27(水) 16:17:08
>>86
かなり無理があると思うけど・・・。
何か自分の質問が間違っている気がしてきた。
0088デフォルトの名無しさん2008/02/27(水) 17:09:31
>85
商用のLisp処理系なら大抵できると思う。
AllegroとかCormanとか。

Freeの処理系は良く知らないけど。
0089デフォルトの名無しさん2008/02/27(水) 17:10:32
Lispはマクロを使って少ないコードでプログラムが作れます
On Lisp読んだ?
あそこに少ないコードで言語実装する例が示されている

JavaでLispを実装するのは有名な話だね
LispでもJava実装簡単モーマンタイです鯛
0090デフォルトの名無しさん2008/02/27(水) 17:16:16
>89
でも>85は「マルチスレッド処理可能なLisp処理系」が欲しいんだろ?
例え中身はLispで実装されてるとしても
「マルチスレッド処理可能なJava処理系」が欲しいんじゃなくて。

自分で「マルチスレッドに対応してないLisp処理系」を使って
「マルチスレッドに対応しているLisp処理系」を実装しろってか?
それはそれで偉い大変な話のような。
0091デフォルトの名無しさん2008/02/27(水) 18:23:25
>>85
最近調べたけど、大抵の処理系には付いてた。
対応してない処理系でも、user-levelなスレッドの実装もあるみたいだから、
Common Lispな処理系ならそういうのを使えると思う。
0092852008/02/27(水) 18:26:42
>>91
あくまでもユーザーレベルなんですね。
xyzzyを使っているのでそれで調べてみます。
ありがとうございます。
0093デフォルトの名無しさん2008/02/27(水) 18:33:54
>>92
何でそういう話になるんだ。ちゃんと読んでくれ。

例えば、SBCL辺りはネイティブスレッドだよ。
ただ、pthreadをベースにしているようなので、
Windowsではまだ対応してないようだ。
xyzzyってことは、Windowsユーザでしょ?
0094デフォルトの名無しさん2008/02/27(水) 20:00:13
OpenMCL(Clozure CL) もネイティブスレッドを使えるよ
ネイティブスレッドを使いたいなら SBCL か OpenMCL しかない
0095デフォルトの名無しさん2008/02/27(水) 20:47:08
ECL とか SCL も忘れないでやってください… > ネイティブスレッドサポート
0096デフォルトの名無しさん2008/02/27(水) 20:54:46
Scieneer って誰か使った事ある人いるのかな?
0097デフォルトの名無しさん2008/02/27(水) 23:03:08
>>79
> 下の方を触りたいなら、
(*´Д`)ハァハァ
0098デフォルトの名無しさん2008/02/28(木) 15:26:18
>>92
ちょっと待て
xyzzyよりXYZドラゴンキャノンのほうがいいと思うが
0099デフォルトの名無しさん2008/02/28(木) 15:27:21
>>97
ハハハ、こやつめ。
0100デフォルトの名無しさん2008/02/28(木) 20:55:32
>>98
マジレスするとzyってのはドラゴンキャノンの略です。
0101デフォルトの名無しさん2008/02/28(木) 21:12:36
どんな略し方をするのだ
■ このスレッドは過去ログ倉庫に格納されています