【入門】Common Lisp その4【質問よろず】
at TECH
1:デフォルトの名無しさん
08/01/27 11:52:46
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)
ま、ゆっくりたりましょう。
「いいものの本質は、いかなる時代においても変わらない」byパワーズ
(list
(url スレリンク(tech板)l50 :part 1)
(url URLリンク(pc11.2ch.net) :part 2)
(url URLリンク(pc11.2ch.net) :part 3))
2:デフォルトの名無しさん
08/01/27 11:53:20
((お勧めの Common Lisp 処理系)
(SBCL: URLリンク(sbcl.sourceforge.net)
:プラットフォーム UNIX, Linux, Mac, Windows(移植中)
:開発 活発
:日本語 使える(UCS4, UTF8, EUC)
:特徴 一番お勧めのコンパイラ。)
(CLISP: URLリンク(clisp.cons.org)
:プラットフォーム UNIX, Linux, Mac, Windows
:開発 そこそこ活発
:日本語 使える
:特徴 バーチャルマシン。遅いがフットプリントが小さい。)
(CMUCL: URLリンク(www.cons.org)
:プラットフォーム UNIX, Linux, Mac
:開発 そこそこ活発
:日本語 使えない(回避法有り)
:特徴 高速コンパイラ。SBCL の元になった。)
(OpenMCL: URLリンク(openmcl.clozure.com)
:プラットフォーム PPC-Linux, Mac, x86-Linux と FreeBSD に移植中
:開発 そこそこ活発
:日本語 使えない (pre ver 1.1なら多少扱える。)
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))
3:デフォルトの名無しさん
08/01/27 11:54:07
((商用CL) ;;誰か補間よろ
(Allegro: URLリンク(jp.franz.com)
:プラットフォーム Windows ,Mac OS X , Freeを含む各種UNIX
:開発 ほとんど本陣
:日本語 使える(内部UTF16,外部 プラットフォーム毎)
:特徴 お高いがもっとも頼れる。申し込みが必要だがFree Express Editionあり )
(LispWorkss: URLリンク(www.lispworks.com)
:プラットフォーム Windows ,Mac OS X
:開発 半年にいっぺんくらいアップデート
:日本語 使えるみたい(完全に対応しているかはちとわかりかねまする)
:特徴 IDEベースです、フリー版はconsセルの上限が来るとダイアログがでてしまいます、SDLとかで遊ぶとすぐに引っかかります ))
((その他)
(ABCL: URLリンク(armedbear-j.sourceforge.net)
:特徴 JavaVM 上で動く。JavaVM のバイトコードを生成。)
(GCL: URLリンク(www.gnu.org)
:特徴 日本発 Kyoto Common Lisp の直系。)
(ECL: URLリンク(ecls.sourceforge.net)
:特徴 Lisp->C コンパイラ。組み込み可能らしい。こちらもKCLの系譜))
4:デフォルトの名無しさん
08/01/27 11:55:05
ANSI Commn Lisp 仕様関係
URLリンク(www.lisp.org)
URLリンク(www.cs.cmu.edu)
URLリンク(lispdoc.com)
日本語のチュートリアル
URLリンク(web.sfc.keio.ac.jp)
URLリンク(www.h7.dion.ne.jp)
URLリンク(www.geocities.jp)
URLリンク(home.soka.ac.jp)
URLリンク(www.haun.org)
URLリンク(wisdom.sakura.ne.jp)
URLリンク(www-kasm.nii.ac.jp)
5:デフォルトの名無しさん
08/01/27 11:55:48
進んだ話題が欲しい人に...
(和文)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(lispuser.net)<)
URLリンク(www.cl-user.net)<)
URLリンク(planet.lisp.org)
URLリンク(groups.google.co.jp)
URLリンク(www.cliki.net)
URLリンク(cl-cookbook.sourceforge.net)
URLリンク(www.gigamonkeys.com)
( URLリンク(www.apress.com) よりpdf版が入手可能)
URLリンク(www.psg.com)
URLリンク(www.cs.cmu.edu)
その他の情報
Wikipedia項目リンク
6:デフォルトの名無しさん
08/01/27 11:56:09
((おまけの処理系
(POPLOG: URLリンク(www.cs.bham.ac.uk)
Lisp, Prolog, ML のコンパイラ)
(WCL: URLリンク(wcl.kontiki.com)
Shared Library として使える Lisp)
(Movitz: URLリンク(common-lisp.net)
フルスクラッチの Lisp OS)
(CADR LispM: URLリンク(www.heeltoe.com)
MIT で使われていた LispM のソースを公開したもの))
((その他のリンク
(Meme channels: URLリンク(meme.b9.com)
Lisp の IRC Log)
(Paul Graham の ANSI Common Lisp:
URLリンク(www.pearsoned.co.jp)
Common Lisp の 参考書を探しているならこれ一択))
7:デフォルトの名無しさん
08/01/27 12:22:06
>>1乙
8:デフォルトの名無しさん
08/01/27 14:00:58
read-lineするとさ
"文字列" ってかえってくるやん?
これって形式的には何になるんですか?
変数にうまくはいってこないんだよね
9:デフォルトの名無しさん
08/01/27 17:11:58
進んだ情報に追加
On Lisp邦訳 web版
URLリンク(user.ecc.u-tokyo.ac.jp)
10:デフォルトの名無しさん
08/01/27 17:13:02
ちょっと質問から「うまくはいってこない」がイメージできんので、コードを見せてくれませんか。
11:デフォルトの名無しさん
08/01/27 18:47:57
テンプレ全部書いたら連続投稿規制にひっかかって前スレで案内できませんでしたorz
12:デフォルトの名無しさん
08/01/27 18:59:33
商用CL
URLリンク(jp.franz.com)
free downloadから登録して使えるらしい
URLリンク(www.lispworks.com)
IDEがついているらしい
13:デフォルトの名無しさん
08/01/27 19:04:25
>>12
しくしく、それ一応テンプレにいれてあるのでございます、ショボーン
14:デフォルトの名無しさん
08/01/27 21:14:16
tspl入ってないな。
15:デフォルトの名無しさん
08/01/27 23:01:10
>>1乙
なんか重いな
16:デフォルトの名無しさん
08/01/30 05:45:39
Aという親を頂点に、左下にBいう子、右下にCという子がいるだけの
簡単な木の関係がある時、これを(A B C)と書くのか、(A(B C))と
書くのか、どちらでしょうか。
17:デフォルトの名無しさん
08/01/30 06:11:51
>>16
そのリストをどう利用するのかにもよるけど
(A B C)はお勧めできない
どっかにヒープソートとかのソースが落ちてたら
そういうソースを参考にするといい
18:デフォルトの名無しさん
08/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)を実行すると、このように出るのですが、
どの部分を見れば、メモリの使用状況が分かるのでしょうか?
19:デフォルトの名無しさん
08/01/30 17:36:31
>>18
さてあなたのPCのメモリはいくつでしょう
20:デフォルトの名無しさん
08/01/30 19:57:05
>>19
roomで出てくる数値は、PCのメモリとは関係ないみたいなんです。
2GのPCでやっても、1GのPCでやっても同じ結果が出てきます。
GCLを起動した直後のroomの数値と、
メモリを大量に食う関数を実行した後のroomの数値を比べて、
どこを見れば、メモリの使用量がわかるのでしょうか?
pageという単位が、2,048バイトなのはわかったんです。
pages for cellsのとこを比べればいいのかな?
21:デフォルトの名無しさん
08/01/31 18:31:15
URLリンク(journal.mycom.co.jp)
22:デフォルトの名無しさん
08/02/04 19:54:37
>>1
乙
疑問なんだが、パワーズって誰だ???
23:デフォルトの名無しさん
08/02/05 00:01:31
>>22
前スレのコピペなんで俺に聞かないでくれ。
>>前スレの1の中の人解説よろ
24:デフォルトの名無しさん
08/02/06 22:53:08
今日会見してたよ
25:デフォルトの名無しさん
08/02/07 19:24:21
すいません。lispのマクロは最強でほかの言語では真似できないそうですが、
具体的にlispマクロ最強を実感できる例を教えていただけないでしょうか。
26:デフォルトの名無しさん
08/02/07 20:16:58
最強とか実感とか、痛い言葉が並ぶなあ。
だと君に吹き込んだ奴にきくのが一番じゃないの。
27:デフォルトの名無しさん
08/02/07 20:18:03
失敬。
だと → 最強だと
28:デフォルトの名無しさん
08/02/07 20:20:18
「Lisp マクロ」で検索して出てくるコードの大半が、
じゅうぶん「ほかの言語では真似できない」ことをやってるから、それを眺めるといいよ。
29:デフォルトの名無しさん
08/02/07 20:26:53
私に吹き込んだ奴も本でそう書いてあるのを読んだっていうだけで
よくわかってないみたいです。
30:デフォルトの名無しさん
08/02/07 20:29:18
>>28
おっとすいません。リロードしてませんでした。
検索してみます。
31:デフォルトの名無しさん
08/02/08 15:42:22
結局パワーズってだれさ
32:デフォルトの名無しさん
08/02/08 15:59:42
オースティン
33:デフォルトの名無しさん
08/02/08 22:44:34
2000万
34:デフォルトの名無しさん
08/02/09 00:23:56
グレートチキン
35:デフォルトの名無しさん
08/02/09 15:06:23
おむつ
36:デフォルトの名無しさん
08/02/15 10:45:49
やべぇええSchemeに浮気しそう...
継続を明示的に扱えるCommonLisp実装系ってないのですか?
(ひょっとして明示的に扱ったらANSI仕様違反?)
マクロの実装はOn Lispに書いてあったけど,色々不便だからなぁ
37:デフォルトの名無しさん
08/02/16 09:54:17
CommonLispで面倒ならScheme使えばいいんでないの?
cl-contとか色々あるけど、多分36は「色々不便だからなぁ」っていうと思うよ。
38:デフォルトの名無しさん
08/02/16 10:22:25
新スレに成ってから壊れ方があまいなぁ
離脱者多数?
39:デフォルトの名無しさん
08/02/16 17:28:10
最近だと Scheme から入る人が多いのに、珍しいね。>>36
一旦乗り替えてみればいいじゃない。Scheme もやっといたほうがいいと思うよ。
別にどれか一個を選ばなきゃいけないってわけでもないし。
40:デフォルトの名無しさん
08/02/16 19:32:37
継続なんて飾りだよ。
男は黙って compile & disassemble、速さこそ正義。
41:デフォルトの名無しさん
08/02/16 20:59:29
速さがそれほど重要じゃない局面ってのもあるからねぇ
42:デフォルトの名無しさん
08/02/16 22:48:29
そして、継続がそれほど重要な局面ってのは少ないからなぁ
43:デフォルトの名無しさん
08/02/16 23:12:43
ファーストクラスじゃなくてもフロー制御くらいにゃ使えるしな。
Javaの世界でも継続〜ってなフレームワークがあるくらいだし。
まぁ、一度はSchemeをやっとくべきだと思う。
44:デフォルトの名無しさん
08/02/16 23:18:50
CL をやっていて Scheme を知らない人は殆ど居ないんじゃないかな
その逆はかなり多そうだけど…
45:デフォルトの名無しさん
08/02/16 23:38:22
>>44
そうだね、漏れもそう思う。
全部が全部、Gaucheの影響とは思わないけど、
そういう点では、Gaucheって偉大だなと思う。コミュニティも活発だし。
まあ偉大な大黒柱があってのこととも思うけど。
CL界隈ってコミュニティっていったらxyzzy方面くらい?
46:デフォルトの名無しさん
08/02/16 23:47:50
とりあえず日本のCommon Lispコミュニティ
活性化のためにもIRCチャンネルでも作らないか?
47:デフォルトの名無しさん
08/02/16 23:57:34
チャットとなると
貴様らはすぐにプログラミングとは別の話題ばかりで盛り上がる
そんなことよりcommonlispで何が出来るんだ?
48:デフォルトの名無しさん
08/02/17 00:22:40
>>46
私はもうジジイなのでメーリングリストとか時間差をカバーできるのがいいなぁ。リアルタイムはキツイ。
>>47
とりあえず私の必要とするプログラミングのタスク一般、数値計算、データ分類は普通にできてるね。
でも煽るならもっと最近流行の言語で煽ったほうが喰いつきがいいと思うよ。
49:デフォルトの名無しさん
08/02/17 01:00:02
>>42
そしてschemeが遅いわけでもない
Cより速い実装ってかなったっけ?
50:デフォルトの名無しさん
08/02/17 01:07:25
>>49
stalin
51:デフォルトの名無しさん
08/02/17 01:12:41
stalinとか?俺ぁ別にSchemeが遅いとか言う気もないけど。
52:デフォルトの名無しさん
08/02/17 02:03:35
これからLisp始めようとしてる自分にとってチャットはwktk
53:デフォルトの名無しさん
08/02/17 10:13:36
#scheme-jpは過疎ってるぞ
54:デフォルトの名無しさん
08/02/17 11:38:36
Lingrとかどうなんだろうね。
一応過去ログも追えるみたいだけど。
55:デフォルトの名無しさん
08/02/17 16:22:13
>>48
流行ってないのか?
流行って?
オッパイソンの事?
56:デフォルトの名無しさん
08/02/19 16:02:52
入力されたS式をXMLに変換するときって
どんな風に書けばいいのですか?
57:デフォルトの名無しさん
08/02/19 19:57:33
(S式をXMLに変換 入力されたS式)
58:デフォルトの名無しさん
08/02/20 12:06:00
Javaで遅延評価ってどういうふうに書けますか?
59:デフォルトの名無しさん
08/02/20 12:41:50
delayとforceを作ればおk
クロージャから外の環境へのアクセスにfinal縛りがあるから、
ちょっと不自由だけど。
60:デフォルトの名無しさん
08/02/23 08:24:43
lispってWin32API使えるのですか?
61:デフォルトの名無しさん
08/02/23 09:32:27
>>60
FFIでDLL経由ならいけると思うよ
62:デフォルトの名無しさん
08/02/23 21:02:21
LISPでGUI使ったWindowsアプリケーションなんて作れるのか??
63:デフォルトの名無しさん
08/02/23 21:06:33
>>62
もちろんできるよ
64:62
08/02/23 21:14:10
え〜〜〜
うーそーだー
どこにもやり方書いてなかったぞ〜〜〜
65:デフォルトの名無しさん
08/02/23 21:36:02
Tk使えるだろ
66:デフォルトの名無しさん
08/02/24 00:55:41
>>62
もっと簡単にやりたければLWかACL買えばいい。
それ以外ならLTKかSDLでやる。
67:デフォルトの名無しさん
08/02/25 11:49:12
Lispってハードウェアよりの処理はできるの?
68:デフォルトの名無しさん
08/02/25 17:00:13
>>67
FFIでラッパーライブラリつくれば何でもできる
69:デフォルトの名無しさん
08/02/26 00:34:49
>68
そりは実質、ハードウェアよりの処理はほとんどの場合に
C(/C++)でやってるのではw?
まあ、そういう低レベルの処理は高級アセンブラであるところの
Cで行うのが正解だけど。
70:デフォルトの名無しさん
08/02/26 00:47:36
Lispでコードジェネレータ書いて生成したコードを直接コール出来るようにしれ
71:デフォルトの名無しさん
08/02/26 07:31:03
Movitz か MonaOSか、ならできるんじゃね?
おれはヘタレだから試したことないけど…
72:デフォルトの名無しさん
08/02/26 22:08:46
>>71
MovitzはしらんがMonaOSは無理じゃね?
だってシステムコールとしてScheme使ってるわけじゃないだろ
ただシェルがSchemeというだけでしょ.
やっぱりLispのVM上でOSを書かないとだめじゃないか?
73:デフォルトの名無しさん
08/02/26 23:15:37
言語と実装を混同してるんじゃないか?
システムコールをサポートしたScheme処理系があれば同じ事だろ。
Cだってシステムコールのサポートは言語じゃなくて実装の領分じゃん。
74:デフォルトの名無しさん
08/02/26 23:38:42
システムコール(レベル)が「ハードウェアよりの処理」か。
人によって感じ方が違うもんだな。
俺の感覚では「ハードウェアよりの処理」とはDLLやデバイス
ドライバでハードウェアを直叩きする事だとつい考えてしまう。
で、Lispでそんな物を書いた例と言うのはあるのだろうか?
75:デフォルトの名無しさん
08/02/26 23:43:12
>>74
ガーベージコレクタで処理が中断されることがある言語で、
タイミングにシビアなハードを直接制御するのは一般には
難しいだろ。
76:デフォルトの名無しさん
08/02/26 23:50:16
ある。Movits とか組み込み用途か、Scheme なら URLリンク(home.earthlink.net) とか。
「〜なの?」「〜だめじゃん」とかではじまって解答されたらそこでおわりって質問多いよね。
まぁ荒しの一種なんだろうけどさ…。
77:デフォルトの名無しさん
08/02/27 00:12:07
今時のOS上でハードウェアをたたきたいとか言うのはデバイスドライバも書けない能無しでしかないと思う。
それ以外の状況でLispと言う選択肢が有ることはもっと異例だしな。
78:デフォルトの名無しさん
08/02/27 01:17:12
「ハードウェアよりの処理」をしたいあるいはハードウェアを直叩きする
処理(DLL、デバドラ等)をある言語で記述したいと言う話とある言語で
記述したアプリケーションのレベルからハードウェアを直叩きしたい
と言う話は全然別問題だと思うが。
実際Cではアプリやらデバイスドライバやらもろもろ書かれているわけだし。
Lispがそういう(低レベル)処理に向いているとはあまり思わないけど。
79:デフォルトの名無しさん
08/02/27 01:57:33
ハードウェアを直接意識しないで済むように、
俺たちは高級言語を使ってるんじゃなかったのか?
下の方を触りたいなら、用途に適した言語使えばええがな(´・ω・`)
80:デフォルトの名無しさん
08/02/27 08:41:18
「Lispではデバドラが書けないからLispはクソ」って
言いたいだけちゃうんか? な人が湧いたと聞いてry
81:デフォルトの名無しさん
08/02/27 10:50:57
Lispでデバドラは無いわw
82:デフォルトの名無しさん
08/02/27 11:01:21
SYMBOLICS とか LMI とかのマシンのデバドラって何で書いてあったんだろう?
83:デフォルトの名無しさん
08/02/27 13:54:20
Lispでデバドラはかけるね
84:デフォルトの名無しさん
08/02/27 13:55:21
>>83
マクロ使えばなw
85:デフォルトの名無しさん
08/02/27 15:14:17
マルチスレッド処理を可能なLisp処理系ってありますか?
86:デフォルトの名無しさん
08/02/27 15:30:30
>>85
あります
たとえばLispでJavaを実装すればマルチスレッデできます
87:デフォルトの名無しさん
08/02/27 16:17:08
>>86
かなり無理があると思うけど・・・。
何か自分の質問が間違っている気がしてきた。
88:デフォルトの名無しさん
08/02/27 17:09:31
>85
商用のLisp処理系なら大抵できると思う。
AllegroとかCormanとか。
Freeの処理系は良く知らないけど。
89:デフォルトの名無しさん
08/02/27 17:10:32
Lispはマクロを使って少ないコードでプログラムが作れます
On Lisp読んだ?
あそこに少ないコードで言語実装する例が示されている
JavaでLispを実装するのは有名な話だね
LispでもJava実装簡単モーマンタイです鯛
90:デフォルトの名無しさん
08/02/27 17:16:16
>89
でも>85は「マルチスレッド処理可能なLisp処理系」が欲しいんだろ?
例え中身はLispで実装されてるとしても
「マルチスレッド処理可能なJava処理系」が欲しいんじゃなくて。
自分で「マルチスレッドに対応してないLisp処理系」を使って
「マルチスレッドに対応しているLisp処理系」を実装しろってか?
それはそれで偉い大変な話のような。
91:デフォルトの名無しさん
08/02/27 18:23:25
>>85
最近調べたけど、大抵の処理系には付いてた。
対応してない処理系でも、user-levelなスレッドの実装もあるみたいだから、
Common Lispな処理系ならそういうのを使えると思う。
92:85
08/02/27 18:26:42
>>91
あくまでもユーザーレベルなんですね。
xyzzyを使っているのでそれで調べてみます。
ありがとうございます。
93:デフォルトの名無しさん
08/02/27 18:33:54
>>92
何でそういう話になるんだ。ちゃんと読んでくれ。
例えば、SBCL辺りはネイティブスレッドだよ。
ただ、pthreadをベースにしているようなので、
Windowsではまだ対応してないようだ。
xyzzyってことは、Windowsユーザでしょ?
94:デフォルトの名無しさん
08/02/27 20:00:13
OpenMCL(Clozure CL) もネイティブスレッドを使えるよ
ネイティブスレッドを使いたいなら SBCL か OpenMCL しかない
95:デフォルトの名無しさん
08/02/27 20:47:08
ECL とか SCL も忘れないでやってください… > ネイティブスレッドサポート
96:デフォルトの名無しさん
08/02/27 20:54:46
Scieneer って誰か使った事ある人いるのかな?
97:デフォルトの名無しさん
08/02/27 23:03:08
>>79
> 下の方を触りたいなら、
(*´Д`)ハァハァ
98:デフォルトの名無しさん
08/02/28 15:26:18
>>92
ちょっと待て
xyzzyよりXYZドラゴンキャノンのほうがいいと思うが
99:デフォルトの名無しさん
08/02/28 15:27:21
>>97
ハハハ、こやつめ。
100:デフォルトの名無しさん
08/02/28 20:55:32
>>98
マジレスするとzyってのはドラゴンキャノンの略です。
101:デフォルトの名無しさん
08/02/28 21:12:36
どんな略し方をするのだ
102:デフォルトの名無しさん
08/02/28 23:45:08
ANSI COMMON LISPを読みはじめたのですが、
初めの、ランレングス符号化?で nextが使えるのはなぜですか?
call-next-method だとおもい、書き換えたら動いたのでこっちが正しいと思うのですが…。
お願いします。
103:デフォルトの名無しさん
08/02/29 00:09:12
>>102
それだと持ってる人しか答えられないから
コードコピペしたほうがいいと思うよ
で、あれは let で局所変数 next に car lst を設定してる
104:デフォルトの名無しさん
08/02/29 00:14:37
, - ,----、
(U( )
| |∨T∨
(__)_)
ありがとうございました。letを見てませんでした。
105:デフォルトの名無しさん
08/02/29 12:45:22
WindowsXP でLispプログラミングの勉強したいんだけど
まずどうすればいいかさっぱり。
助けてLisper!!
106:105
08/02/29 13:28:07
URLリンク(sourceforge.net)
これつかってみるね!
107:デフォルトの名無しさん
08/02/29 13:29:29
いくつか無料で使える処理系があるのでそれを導入してください。
108:デフォルトの名無しさん
08/02/29 22:32:04
これ使えよ
URLリンク(www.gigamonkeys.com)
109:デフォルトの名無しさん
08/03/01 02:57:05
>>105
Ubuntuを入れて
sudo apt-get install clisp
するだけ
110:デフォルトの名無しさん
08/03/01 11:03:46
>>105
ntemacs+slime+clispにするか、
xyzzyにするか
好きな方を選んでください。
111:105
08/03/01 18:05:03
>>110
XYZはちょっと・・・
今の一軍エレメンタルヒーローで完成してるんで
112:デフォルトの名無しさん
08/03/01 19:31:22
>111
「エレメンタルヒーロー」って何?
"xyzzy"の名前の由来知ってる?
Wikiを読むとすぐ分かるけど、ちょっと面白いよ。
113:デフォルトの名無しさん
08/03/01 20:36:09
>>105
GCL or SBCL + ChezEdit-NT
114:105
08/03/01 23:17:03
>>111
俺のふりをするな俺のふりをw
xyzzyの本がジュンク堂池袋支店にあったから
読んでみたけど、
ショートカットキーで動かすのがデフォっぽいから
勉強にはclispがやっぱ一番ベストかなぁ
ていうかLispすごいね。
Lispの本読んだり、家でいじってたときは、
「戻り値を引数にしてさらに、その戻り値を〜」とか
そんなんでプログラミングするとかアホちゃうかっ!!
って思ってたけど、今日帰ってきてJavaっぽい言語である
ActionScript3,0でプログラミングしてたら
「戻り値を引数にしてさらに〜」ってやりたいのに
わざわざ一時的な変数つくって代入してとか
クソめんどく感じた!!
まだマクロとかλとかよくわかんないけど
すげームダが無い言語っていう感じは伝わった!
てか、Lispの書物少なすぎ
115:デフォルトの名無しさん
08/03/01 23:30:36
> 「戻り値を引数にしてさらに、その戻り値を〜」
これって、できない言語の方が珍しくない?
116:デフォルトの名無しさん
08/03/01 23:32:42
>>113
SBCLってWINでまともに動くようになったん?
117:105
08/03/01 23:53:52
>>115
う、そうかもしれない。
やっぱJavaとかでnewが絡んだりしたら
一時的に変数に入れるのは普通かぁ…
118:デフォルトの名無しさん
08/03/02 00:56:54
>>114
>今日帰ってきてJavaっぽい言語である
>ActionScript3,0でプログラミングしてたら
ECMAScript は C の文法をまとった Scheme と言われている様に、
Scheme の次に Scheme っぽい言語の一つだよ。
見た目に惑わされてはいけない。
119:デフォルトの名無しさん
08/03/02 01:07:19
>>117
こんなのが望みか?
System.out.println(String.valueOf(new String(new StringBuilder().append('h').append("oge"))).intern());
120:デフォルトの名無しさん
08/03/02 01:07:28
JavaScriptにはクロージャがあるのあまり知られてないよな。
121:105
08/03/02 01:11:02
>>114
そ、そうなのか!
なるほど、「ハッカーと画家」って本に
Lispは良いプログラマーを育てるって言ってたことが
なんとなくわかった気がする!
って、Schemeなんて言語もあるのか…
色々あるんだなぁ。
ってSchemeはLispの方言の一つってどゆことだ??
んー…
Lispの書物少ないから今度はSchemeあさってみるね!
122:105
08/03/02 01:12:48
うお、書き込んだら一気にレスが!w
>>119
んーそういわれると、どっちが良いんだかわかんなくなってきた…
123:デフォルトの名無しさん
08/03/02 02:24:42
>>120
俺もつい最近JavaScripの凄さを知って勉強中。
ほんとSchemeっぽいわ。
function makecounter() {
var number = 0;
var counter = function(cmd) {
if (cmd == "set") {number=arguments[1];return number;}
else if (cmd == "inc") {number++;return number;}
else if (cmd == "dec") {number--;return number;}
else if (cmd == "get") {return number;}
};
return counter;
}
var c0=new makecounter();
var c1=new makecounter();
WScript.Echo(c0("set",0));
WScript.Echo(c0("inc"));
WScript.Echo(c0("inc"));
WScript.Echo(c1("set",10));
WScript.Echo(c1("dec"));;
WScript.Echo(c1("dec"));
WScript.Echo(c0("get"));
>>122
SchemeとLispの大きな違いは名前空間が同一か値と関数で別個になっているってとこかな。
あと念のためJavaScriptとJavaは違うからね。
124:デフォルトの名無しさん
08/03/02 09:10:22
>>121
schemeだったら、gaucheが良いよ。
確か近々、gaucheの入門書がでるはず。
125:デフォルトの名無しさん
08/03/02 10:04:28
>>116
SBCLはWindowsではまだまだみたい。
学習用、ちょっといじってみるならOK。
なにしろ高速。Lispが遅いなんてこたぁないよ。
126:105
08/03/02 12:10:55
>>124
うっ!Unixで動くのか…
UnixってOSだよね?Windowsじゃ動かないかぁ
なんかEclipceで動くプラグイン的なものをみつけたので
それでやってみるね!
127:デフォルトの名無しさん
08/03/02 13:02:09
登場した頃、JavaScriptの見た目がC++に似てたからなのか、クロージャとかApplyとか使いこなしてる人って見なかったな。
ほとんどのプラグラムはCとかC++の延長で考えられてると思う。というか関数型っぽい考え方はされていないと言った方がいいか。
JavaScriptはフラナガンの本が出版されてから再評価され始めたんジャマイカ?Schemerにはアルゴリズムを流用できるから使いやすい言語だと思う。
128:デフォルトの名無しさん
08/03/02 13:46:40
向こう側のいいところは、どうやって実装するか理解していることだ
クロージャはクラスをネストすれば作れることを多くの人が知っている
129:デフォルトの名無しさん
08/03/02 13:53:57
>>126
GaucheはWindowsでも使えるよ。
ただしcygwinというパッケージを入れないとダメだけど。
cygwinなしでも動くようにしている人たちがいたと思うけど
どんな状態なのかは知らない。
130:デフォルトの名無しさん
08/03/02 13:53:59
ここ数年の JavaScript ≒ Scheme の元はこれかなぁ。
URLリンク(javascript.crockford.com)
こんなのもあるしね
URLリンク(javascript.crockford.com)
Schemeっぽいのは作った人がこれなんだから、当然なんだけども(泣ける...)
People invoke Scheme when talking about JavaScript. I was originally
drawn to Scheme when Netscape recruited me in early 1995, but there
was less than zero time to use it
URLリンク(mail.mozilla.org)
131:デフォルトの名無しさん
08/03/02 14:30:41
たしかに泣ける
日の目を見ていたのはJavaScriptだけじゃなかったんだな
132:デフォルトの名無しさん
08/03/02 17:05:11
「ハッカーと画家」の著者が Lisp の派生言語 Arc を先日発表しました。
Windows、Mac、LinuxでMzSchemeと言う処理系を利用しているそうです。
Windowsなら、DrScheme(MzSchemeのGUI環境)を使って
Arcの処理系を導入できるようですよ。
133:デフォルトの名無しさん
08/03/02 17:27:38
GaucheはMingwで作られたやつもあるよ
134:デフォルトの名無しさん
08/03/02 17:34:20
JavaScriptのユーザってAjaxやDOMを使うのがやっとの人が多いのに、クロージャの作り方を多くの人が知ってると思うか?ありえないw
135:デフォルトの名無しさん
08/03/02 18:06:36
そいつらは「CとかC++の延長」にも「関数型」にも属さない「その他」だろう。
136:デフォルトの名無しさん
08/03/02 18:18:43
かなり検索ヒットするよ。
URLリンク(www.google.co.jp)
137:デフォルトの名無しさん
08/03/02 18:29:48
>>132
おまはや
つ スレリンク(tech板)l50
138:デフォルトの名無しさん
08/03/02 18:59:42
>>135
世の中「その他」が圧倒的大多数な件w
139:デフォルトの名無しさん
08/03/03 00:19:38
いいかげんスレ違いだけども。
著名なライブラリ(prototype.js, jquery, YUI Ext ...)
ならばそれなりに使ってる、関数返したり、apply 使いまくったりを
クロージャというなら、だけど。
ただ、IE6 で DOM イベントにクロージャ使うとメモリリークするため
(最新パッチなら直ってるのかな) 使う場合気を使ってたりする。
140:デフォルトの名無しさん
08/03/03 04:28:53
ECMAScriptスレ同様クロージャを勘違いしてそうな連中が大量に顔出してきたな……
141:デフォルトの名無しさん
08/03/03 06:06:03
「してそうな」じゃわからんよ。
自分以外は馬鹿ばっか、っていう思春期みたいな思考でモノ言ってるようにしか見えん。
142:デフォルトの名無しさん
08/03/03 07:49:57
>>140
>関数返したり、apply 使いまくったり
するのはレキシカルスコープありきの話なんだし、別段間違った理解でも
ないのでは?
高階関数の使用のことを「クロージャつかう」、っていうのが駄目ってこと?
まあ、CLじゃないからどうでもいいんだけどwwww
143:デフォルトの名無しさん
08/03/03 08:10:52
高階関数とクロージャは別の概念だから、混同せず、
きちんと用語を使い分けるべき。
144:デフォルトの名無しさん
08/03/03 11:57:33
JavaScriptの関数は全てクロージャじゃん。
あれグローバルコンテクストすらオブジェクトで引き回し可能だから
参照の最適化困難だし。
145:デフォルトの名無しさん
08/03/03 13:19:15
>>144
javascriptって名前のせいでclass特化な言語に見られがちだけど実際はプロトタイプ指向の言語なんでどっちかっつーとLispにもっとも近い言語の一つじゃないだろうか?
java,lispと比較したらオプティマイズやJITを行う場合Lispとあんまりアプローチ変えられないよね?
146:デフォルトの名無しさん
08/03/03 17:41:52
Visual Basic.NET VS Lisp
全面戦争勃発ニツキ応援求ム
147:デフォルトの名無しさん
08/03/03 17:46:29
URLも貼らずに釣りとな
148:デフォルトの名無しさん
08/03/03 17:48:05
チョンのあやかり創価学会
偽善者が政治活動、公明党
ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
カルトキチガイ・創価騙されバカ信者
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
149:デフォルトの名無しさん
08/03/03 18:00:40
急速にスレの質が下がってまいりました
ここらで燃料投下しとく?
おk?おk?
150:デフォルトの名無しさん
08/03/03 18:22:25
>>149
俺が許可する
権限はないが
151:デフォルトの名無しさん
08/03/03 19:15:26
よし俺にまかせろ
caddrの発音のしかたを教えてください
152:デフォルトの名無しさん
08/03/03 19:17:39
カッダー
153:デフォルトの名無しさん
08/03/03 19:21:16
じゃあcadddrは…?
154:デフォルトの名無しさん
08/03/03 19:22:59
カダッダー
155:デフォルトの名無しさん
08/03/03 20:07:34
カッダダダー
156:デフォルトの名無しさん
08/03/03 20:09:07
キャドディディアール
157:デフォルトの名無しさん
08/03/03 20:43:36
JavaScriptでクラス作ってみたよ。
なんかCLOSっぽいな。
>>153
キャドゥドゥドゥル
158:デフォルトの名無しさん
08/03/03 22:19:25
>>157
ソース
159:デフォルトの名無しさん
08/03/03 22:26:10
ずっとスクリプトは VBScript で書いてたんだが、Visual Studio 2008 で
JavaScript をサポートする (インテルセンスとかが効くようになる) と書
いてあったので、なんかの展博の時にマイクロソフトの説明員に「もう、
VBScript は、やめるんか?」って聞いてたら、すごく困ってたがしつこく
聞いたら「まあ、そう言うことです。」と言う答えだった。
と言うことで、これからは JavaScript に転向しよう...。
って、ここ JavaScript のスレじゃなかったな、すまん。
160:デフォルトの名無しさん
08/03/03 22:53:32
関数がATOMかどうか知りたいのですが、
(atom 'cdr)
t
(atom #'cdr)
t
上はシンボルがATOMで、下は関数がATOMって事で良いんですよね?
161:デフォルトの名無しさん
08/03/04 00:43:19
(functionp 'cdr)
nil
(functionp #'cdr)
t
ところで、CLの半分の実装を含むCのライブラリがあるという噂を聞いたのですが
どこで手に入りますかね?
162:デフォルトの名無しさん
08/03/04 00:51:04
functionpだったのか。
知らなかった。
#'が関数渡しだって事が思い出せて良かった。
161さんありがとう。
lispってたまに思い出したようにやるんで、いっつも忘れてる。
163:デフォルトの名無しさん
08/03/04 01:03:48
Guy Steeleって、Common LispとJavaの仕様を作ってるけど、思想的に全く別物だし、どちらが優れていると考えているんだろうね?
javaの方が新しいから、SteeleはJavaの方が優れていると考えているのかもと私は思う。
Guy Steeleの頭カチ割って中見てみたい。
164:デフォルトの名無しさん
08/03/04 08:44:54
答えはFortressで!
165:デフォルトの名無しさん
08/03/04 16:38:11
>>48
数値計算とかcommon lispでできるんですか?
どんなコードなのかかなり興味あります
lapackを呼ぶとか?
166:デフォルトの名無しさん
08/03/04 17:12:46
>>163
JavaはC++と競合させるためにつくったもので、Lispと競合するものではないって
どっかでいってたよ、GLSが。
どこでいってたんだっけねえ。
167:デフォルトの名無しさん
08/03/04 17:48:28
物事を脳内で比喩する時に
lispで考えてしまう人は居ても
Javaで行う様な人は居ないと思う。
168:デフォルトの名無しさん
08/03/04 21:01:29
>>167
オブジェクト指向はいると思う。
自分はそれです。
Lispは人生で4回は挫折しているから、Lispで考えるってことは無いな。
Lispはある程度覚えても、使わないからすぐ忘れる。再帰とかのアルゴリズムは覚えてるんだけどね。
169:デフォルトの名無しさん
08/03/04 22:20:48
>>161
ECLかな?
URLリンク(ecls.sourceforge.net)
素人なんでどれだけ実装できてるのかわからんのだけど
ちっちゃいしWindowsでも簡単にビルドできたんで
最近これで勉強してます。
LispのコードをCに変換できるのが面白い。
あと.NETシェルで作れるHyperSpecのCHMが便利。
170:デフォルトの名無しさん
08/03/05 06:09:03
>>166
これ?
URLリンク(people.csail.mit.edu)
171:デフォルトの名無しさん
08/03/06 13:07:56
>>170
それだったかもしれない。
でも案外いろんなところで言ってる気もする。
Frotressのインタビュッーでは、Fortressで科学計算コミュニティに
JavaがCコミュニティーに果たしたような効果をもたらしたいっていってた。
172:デフォルトの名無しさん
08/03/11 23:19:27
すみません.質問です.
packageのlockってどのような場合に使用するのでしょうか.
また,
(without-package-lock()
(load "path-to-file")
...
)
とするとロックが無視される?のでしょうか.
173:デフォルトの名無しさん
08/03/11 23:42:36
>>172
ご明察。その通りです。
でも、余程の事がない限りパッケージロックを破るよりは、
別にパッケージをつくったりシャドウしたりする方が良いと思われ。
174:デフォルトの名無しさん
08/03/12 18:07:43
172です.
>>173
コメントありがとうございます.
Lispの場合プログラムを配布する際にはロックをかけるものなのでしょうか.
175:デフォルトの名無しさん
08/03/12 20:19:19
処理系のCLパッケージのようにc再定義されると困るようなもの
(carやcdrが再定義されるとこまるetc)には掛かっていますが、
普通のものには殆ど掛かっていないと思われます。
また、パッケージのロック機能自体オプションだったと思うので、
処理系依存です。
176:デフォルトの名無しさん
08/03/12 21:52:26
172です.
>>175
> 処理系のCLパッケージのようにc再定義されると困るようなもの
なるほど,そう言うことですか.
toplevelとpackageで混乱してます.
もうちょっと勉強してきます.
ありがとうございました.
177:デフォルトの名無しさん
08/03/21 10:03:34
Common Lispは、Javaで言うBigDecimalのような十進数演算ができる
ライブラリや関数はありますか?
178:デフォルトの名無しさん
08/03/21 10:18:08
BCD より Bignum で小数位置を適当に自分で持ってあげたほうがいいんじゃないかな。
179:177
08/03/21 10:50:37
>>178
どうもありがとうございます。
やはりそうですか。
Googleで調べてみたのですが、見つかりませんでした。
180:デフォルトの名無しさん
08/03/21 11:12:05
表示は変かもだけどratioで計算するのでは不満?
181:177
08/03/21 11:31:12
>>180
お金が絡むようなWebアプリに適用できるのか(簡単に書けるのか)、
調べているのですが、ratioでも適用できると思いますが、
十進数演算を素直に記述できるような標準的な
ライブラリがあるのかなと思いまして。
182:デフォルトの名無しさん
08/03/21 12:06:32
maximaが大きい行列を実質扱うことできないと前に検索したblogに書いてあったのですが本当なのでしょうか?
183:デフォルトの名無しさん
08/03/21 19:03:50
大きいの定義は。
184:デフォルトの名無しさん
08/03/21 20:28:33
うんこ/おしっこ
185:デフォルトの名無しさん
08/03/22 10:55:35
Common Lispの引数の順番は統一性がないのでしょうか?
例えば
(etl オブジェクト インデックス)
(gethash キー オブジェクト)
となっていますが、
他の関数もこのように、てんでんばらばらなのでしょうか?
使っているうちに慣れると思うけど、なんだか美しくないなぁ。
186:185
08/03/22 11:25:52
Practical Common Lispを読み進めていったら
By an accident of history, the order of arguments to gethash
is the opposite of elt--elt takes the collection first and then
the index while gethash takes the key first and then the collection.
と書いてありますね。
他の関数は大丈夫なのかな?
187:デフォルトの名無しさん
08/03/22 11:58:26
みんな一度は考える事だな。でもまぁ、ハッシュと配列アクセスの引数が揃うと何かすごい進歩がある、
というならともかく、気分で非互換にするわけにもいかなかったんだろう。
まぁ次世代のLispの時には揃うかもね。
あるいは↓のように自分でなんとかするとか。コンパイラががんばれば効率はかわらんはず。
;; c.l.l のスレより転載 URLリンク(groups.google.com)
(proclaim '(inline hashget))
(defun hashget (table key &optional default)
(gethash key table default))
(defun (setf hashget) (value table key &optional default)
(setf (gethash key table default) value))
どうしても許せん、ならSchemeとか…
188:デフォルトの名無しさん
08/03/22 12:21:45
Common Lispは惰性と妥協の塊だからしょうがない
189:185
08/03/22 15:49:42
>>187
どうもありがとうございます。
リンク参考になりました。
>>188
やはりそうですか。
JavaやRuby等の、比較的最近の言語から見ると
関数名や引数の順番の一貫性の無さが気になってしまいます。
190:デフォルトの名無しさん
08/03/22 16:20:14
上の例のように関数名や引数の順番の一貫性の無さが気になったら
自分好みに変えられるのがLisp風。
むしろそこを気にかけてほすい。
気になった箇所を徹底的に自分好みに変更するのも勉強になります。
191:デフォルトの名無しさん
08/03/22 16:48:46
一貫性が無い、のは事実だけど、
覚えることがそもそも少いから、あまり気にしたことないなぁ。
192:デフォルトの名無しさん
08/03/22 21:40:12
「lisp」という単語でネットサーフィンしていたら「仕様記述からソース生成」などという言葉が出てきたのですが、ありえないですよね?
ただの電波ですよね?
193:デフォルトの名無しさん
08/03/22 21:52:16
その「仕様記述」とやらによるけど、厳密さが十分にあれば可能ですよ。別にLispに限らないけどね……
S式があるおかげでフォーマットに悩まないとかマクロのおかげでコード生成が身近というあたりが利点かもね。
でも、あいまいな仕様でもLispをつかうだけで魔法のようにまともなソースができあがる、なんて話ならありえない。
194:デフォルトの名無しさん
08/03/22 22:12:38
あいまいでない仕様などそう簡単に書けないし、激しく無理がありそうな気がします。
195:デフォルトの名無しさん
08/03/22 22:16:07
>>192
Leeを思い出したww
196:デフォルトの名無しさん
08/03/22 22:19:50
無理なものは無理だろうね。
元ネタがどこだなのかわからんから推測しか言えないが、厳密にかける世界の話だったんじゃないかな?
ファイルフォーマット解析とか状態遷移とかコンパイラとか、仕様を厳密に記述するほうが自力でゴリゴリコーディング
するより楽、という話ではないかな。
197:デフォルトの名無しさん
08/03/22 22:19:53
て言うか、「仕様記述からソース生成」なんて言うのは、文字列処理や
リスト処理がたくさん出てくるので、Lisp 向き。
と言う時代もあったけど、最近の言語はどれもそれなりに文字列処理や
リスト処理に不自由しなくなってきたので Lisp だからどうと言うこと
は少なくなくって来た。
198:デフォルトの名無しさん
08/03/22 22:30:05
>>197
実行時にevalがあるような言語だけじゃないかな?
lispだとマクロが化け物だから可能な領域ってのもあるからそこを前提にされると太刀打ちできない気がする。
199:デフォルトの名無しさん
08/03/22 22:30:16
>>192
仕様記述からプログラムが書けるとすれば、その仕様記述は(自然言語とかけはなれた)
曖昧性の無いもののハズで、それは完全にプログラムそのものだろ。
可能ちゃ可能だろうけど、それに何の意味があるんだ?
といつも思う。
200:デフォルトの名無しさん
08/03/22 22:40:42
発想が逆なんじゃないかな?
仕様を定義するほうが、プログラム書くより量的に少ない場合とか、
そうでなくても厳密な仕様をミスなく書き下す手間が自動化できてラッキーとか、
モデルチェッカとかでチェックした仕様をソースにできるとか、
図でプログラム読めない人(←でも業務とかその道のプロ)に漏れや抜けがないかを
チェックしてもらって、そっからミスなくソースができてうれしーとか。
201:デフォルトの名無しさん
08/03/22 22:54:24
そもそも実用になっていないって事が良くわかった。
202:デフォルトの名無しさん
08/03/22 22:58:56
いや、部分的であれば仕様記述からのプログラム生成は十分使い物になってるし、
実務でも使ってるよ。単なるちょっとした規模のマクロ、って意味だけど。
203:201
08/03/23 00:25:47
>>202
想像できないけど、実務で使われているなら納得せざるおえないのか。
204:デフォルトの名無しさん
08/03/23 00:57:26
DSL の一種と思えるのかな?
205:デフォルトの名無しさん
08/03/23 05:57:22
CでYaccとか使ってみれば想像できるようになるかも
206:デフォルトの名無しさん
08/03/23 07:01:23
>>205
それで想像できるなら正規表現使えば想像できる筈
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5369日前に更新/210 KB
担当:undef