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
それで想像できるなら正規表現使えば想像できる筈
207:デフォルトの名無しさん
08/03/23 08:47:24
そーいわれれば lex, yacc はそれに近いなあ
208:デフォルトの名無しさん
08/03/23 09:12:26
>>200,202
それをプログラムではなく仕様と呼ぶのは何故なんだぜ?
売り込みに来たヤツがそういってるから?
209:デフォルトの名無しさん
08/03/23 10:31:37
ずいぶん頭固いね。
仕様書って文章で書いた奴しか見たことないのかな。
210:デフォルトの名無しさん
08/03/23 10:37:24
と、まるで何かを見てきたふうなことを言ってるけど、別に何も見てきてないんでしょ?w
だから具体的に書けない。
211:デフォルトの名無しさん
08/03/23 14:02:39
>>209
とりあえず、199の時点で皆に膝を叩いて納得して欲しかったんじゃない?
212:デフォルトの名無しさん
08/03/23 14:34:59
だろうね。
>>199
厳密に書かないといけないのは確かだけど、意味がないわけじゃない。
例えば、今時特殊な状況を除けば普通高級言語でプログラム書くけど、これだって
当然曖昧性のないものでなのでアセンブラと同様に厳密に書かないといけない。
だからと言って意味がないわけじゃないだろ?
ループのためだけにラベル名を考えたり、ローカル変数のサイズ計算してスタック
ポインタから引くためのコード書いたりしなくて良くなるだけでも、ずいぶん楽だ
しコードの品質も上がる。
それと同じで、例えば通信やってる人なんかだと仕様書として状態遷移図とか、ス
テータスマトリックスを渡されたり、自分で書いたりする。
今はこれを見て「人手で」コーディングしてるでしょ?
で、仕様変更があったら再度コードを「人手で」修正してるよね。
この部分を自動化するだけでもかなり楽になると思わない?
213:デフォルトの名無しさん
08/03/23 15:36:06
& % #' などの略記一覧はどこかにないでしょうか?
emacsでcommon lisp開発環境作るとしたらslimeだけでいいのでしょうか?
214:デフォルトの名無しさん
08/03/23 18:14:29
>>213
> emacsでcommon lisp開発環境作るとしたらslimeだけでいいのでしょうか?
後はマニュアルを引きやすくしとけばいんでね
215:デフォルトの名無しさん
08/03/23 18:46:24
>>213
「Common Lispリーダーの標準的なマクロ文字が知りたい」の?だとしたら % って何だろ…
とりあえずHyperSpec見れ
URLリンク(www.lisp.org)
URLリンク(www.lisp.org)
216:デフォルトの名無しさん
08/03/23 19:20:00
>>215
ということは変数名の先頭に%がついてたのは特別な意味はないのですね
217:デフォルトの名無しさん
08/03/23 19:30:55
>>216
ないといえばないけど、慣習の一部
URLリンク(www.cliki.net)
218:デフォルトの名無しさん
08/03/23 20:26:08
CLispがGNU Common Lispかと思っていたけど、
GNU Common LispってGCLだったのね。
違いは何だろうと思って探したら
URLリンク(okwave.jp)
がありました。
219:デフォルトの名無しさん
08/03/24 02:30:50
さいきんLispに興味があります
普段何に使ってますか?
1. シェルスクリプト並にナチュラルに普段使いをしている
2. ある程度以上注意深く作るアプリケーションやモジュール作成の時のみに使用
3. 実用性を考えたら負けなものをニヤニヤしながら作ってて楽しい
220:デフォルトの名無しさん
08/03/24 05:58:56
シェルスクリプトとは違う意味でナチュラルに普段使い。
思いついたことをさらっと試すのに使ってる。
Emacs使いでないとわからん感覚かも
221:デフォルトの名無しさん
08/03/24 08:38:11
大体何にでも使うけど、シェルスクリプトなんて普段くまねーからわかりません。
222:デフォルトの名無しさん
08/03/24 10:20:20
lispの入門のホームページはよく見つかるのですが、それ以上の話題はどこを探せばいいのでしょうか?
cffiを使ってc++のプログラムをlispから呼びたいのですがサンプルのコードの意味が今一つわかりません
URLリンク(www.swig.org)
ここあたりがそうみたいなのですが、これが理解できるようになるための
中級向けテキストはどこかにないのでしょうか?
223:デフォルトの名無しさん
08/03/24 10:39:41
>>222
>それ以上の話題
は残念ながら殆ど英語圏にあります。
ffi等は実装依存なので、まず使っている処理系がなにかを書くと適切な返事があるかも。
224:デフォルトの名無しさん
08/03/24 10:42:44
>>222
swigを使うのがわからないのか、ffiの使い方自体がわからないのか、どっちなんだよ?
225:デフォルトの名無しさん
08/03/24 10:59:49
swigは他の言語で使ったことがあるので大体見当がつきますが、
lispのサンプルコードで
cl:letと単純にletと書くのにどう違いがあるのか
などの記法が分からずつまづきます
ffiの使い方がわからないですpython.ctypesと似たようなものなのでしょうか?
226:デフォルトの名無しさん
08/03/24 11:08:01
>cl:letと単純にletと書くのにどう違いがあるのか
>などの記法が分からずつまづきます
これはCLのパッケージについて入門用のサイトで勉強すれば分かると思うので、
一歩戻ってパッケージについて学ぶことをおすすめしたいところ。
227:デフォルトの名無しさん
08/03/24 11:16:55
>>225
ffiは処理系依存だから、まずおまいさんが使ってる処理系のマニュアル嫁。
処理系にできるだけ依存したくないならcffiとかuffi使え。
でもswig使ったことあるならインタフェース書けるだろうし、
理解しなくても使えると思うんだが。
228:デフォルトの名無しさん
08/03/24 13:35:31
>>219
愛があればRubyあたりとそう大差ない普段使いができると思ってもらっておk
PerlはCPANが強力過ぎるしPythonはGUIがあるから常用を比べるのはちょっと酷
ニコニコ動画ダウンローダー(ちょっと色々混じってるが)
URLリンク(read-eval-print.blogspot.com)
ただ、この利用レベルに至るのには時間がかかるのが難点
「別にLispでなくてもいいじゃんね?」という内からの声を無視できる程度には超越しないとイカン
229:デフォルトの名無しさん
08/03/24 13:37:29
maximaを使いたくてpythonからclispに乗り換え挑戦中だ
230:デフォルトの名無しさん
08/03/24 13:48:57
maximaをアプリとして使うだけならCL知らんでも
(自分でCL使って関数書きたいとか言わなきゃ)問題なかろ。
231:デフォルトの名無しさん
08/03/24 15:00:49
>>228
Lispに愛が芽生えてきますた。
言語への慣れと理解によって大きく違うと思いますが、
Rubyと比べて、生産性は良さはどんなものでしょうか?
232:デフォルトの名無しさん
08/03/24 20:27:54
Lispは神が世界を記述するのに使った言葉。
最初に「光あれ!」とかやってたのは全部Lisp。
一方、Rubyはただのスクリプト言語。
233:デフォルトの名無しさん
08/03/24 20:32:44
URLリンク(www.aoky.net)
234:デフォルトの名無しさん
08/03/25 10:56:09
Lispはconsセルの操作しかできないと思っていた俺は
CLOSを知った今、猛烈に感動している。
凄いなCommon Lisp♥
235:デフォルトの名無しさん
08/03/25 11:01:31
確かめてないが、見えない根っこのほうではconsセルの操作しかしてねーと思うぞ
236:234
08/03/25 11:19:24
CLOSどころか、defstructでも感動してしたYO。
>>235
そうですよね。
でも、なんだかとっても凄いぞCommon Lisp。
237:デフォルトの名無しさん
08/03/25 22:26:50
>>235
まあ、足し算とか引き算なんかもできないとスゲー困るわけで...
238:デフォルトの名無しさん
08/03/25 22:41:42
cons だけで数を表現して足し算と引き算とかは実装できるよ。
ラムダ計算の初歩ですよ。遅いけど。
239:デフォルトの名無しさん
08/03/26 01:44:37
Rと組み合わせられるなんて
240:デフォルトの名無しさん
08/03/26 01:58:43
最近は何見てCLOSを勉強してるんだろ?
241:デフォルトの名無しさん
08/03/26 02:20:26
URLリンク(www.geocities.jp)
242:デフォルトの名無しさん
08/03/26 03:31:13
Rを呼べる
URLリンク(common-lisp.net)
243:デフォルトの名無しさん
08/03/26 15:19:34
accountはcustomer-name slotを持つクラスで、
(defun (setf customer-name) (name account)
(setf (slot-value account 'customer-name) name))
と定義すると、
(setf (customer-name my-account) "hoge")
と書けるのはどうしてですか?
defunを使った関数定義で
(defun (setf ~) ....)
とdefunの直後に括弧が付く場合、何を意味することになるのでしょうか?
初心者丸出しの頓珍漢な質問だと思いますが、お願いします。
244:デフォルトの名無しさん
08/03/26 16:54:04
何でって言われてもそれがアクセサの定義の仕方だから。
245:デフォルトの名無しさん
08/03/26 17:15:34
もうちょっと具体的に説明すると CLtL2 のインヴァージョンをよく読むとよい。
OnLisp の汎変数の説明のところでもいいけど。
246:デフォルトの名無しさん
08/03/26 18:54:02
cmuclをemacs22+slime2.0で使っています。
キャラクタエンコードをutf-8を通す設定にしてslimeコンソールから日本語(に限らずutfで256以上の値を持つ文字)を食わせると
cmucl側からソケットが切断されてしまうのですがこの辺りを解決する情報をお持ちの方はいますでしょうか?
247:デフォルトの名無しさん
08/03/26 19:41:14
>>246
そもそもcmuclってutf-8通せたっけ?
248:243
08/03/26 20:49:02
>>244,245
Googleで調べていたのですが、このような機能をなんと呼ぶのかも
分からず、困っていました。
CLtL2 inversionで調べたら、出てきました。
助かりました。どうもありがとうございます。
249:デフォルトの名無しさん
08/03/27 00:50:24
>>247
単体で起動すると通りますがslime経由だと通らないのです。
sbclも試したのですが、こちらは主用途のaserveでつかっているhtmlgenの中に日本語テキストがあると出力がそこで打ち切りになってしまいますです。
ex.
aserveへ↓を食わせたときに
(:html (:body "test" :br "test2" :br "多バイトコード" ))
ブラウザでaserveをアクセスしたときに test2<br>までが出力されます(sbclのバグトラックにはレポートあがってました)
この例をcmuclでやるとコンソールから直に打ち込むとOKなのですがslime経由だと"多"が送り込まれた時にsocketがreset by peerになってしまうのです。
lispの学習で自分の手習いを実用コードで行おうというのがおこがましいのかなぁorz
250:デフォルトの名無しさん
08/03/27 07:42:04
>>249
windowとunixで
CLISP+emacs+slimeでutf-8でコードを書いていますが、
CLISPだと駄目ですか?
251:デフォルトの名無しさん
08/03/27 07:59:35
>>250
うちの .emacs にはこんなことが書いてあるが...
(setq slime-lisp-implementations
'((sbcl ("sbcl") :coding-system euc-jp-unix)
(clisp ("clisp" :coding-system euc-jp-unix))))
(setq slime-net-coding-system 'euc-jp-unix)
252:デフォルトの名無しさん
08/03/27 09:30:19
>>246
これ自分も知りたいと思ってた。
自分が確かめた範囲では、下記の通り
*UTF-8で日本語が使えるかどうか*
--そのままでOKなもの
sbcl
clisp
allegro cl
clozure cl
--処理系で日本語は使えるけれど素のSLIMEだと切断されるもの
cmucl
ecl
lispworks
abcl
ちなみに「日本語が使える」ってのは処理系で表示できてる、位の意味で、
厳密には処理系ごとに事情が違ってます。
多分、処理系に応じたswank-~.lispを修正すれば良いんだと思うけど、
漏れは、挫折して、素でOKなものを使ってます。
253:247
08/03/27 11:07:58
>>249
> この例をcmuclでやるとコンソールから直に打ち込むとOKなのですがslime経由だと"多"が送り込まれた時にsocketがreset by peerになってしまうのです。
utf-8 で接続はできて、日本語を送ろうとしたときに接続が切れるの?
254:デフォルトの名無しさん
08/03/27 11:40:24
3日でclispを実用的に使えるレベルになろうと思って挫折した
憶えないといけないこと多いね
classの考え方が他の言語と違ったりするし
255:デフォルトの名無しさん
08/03/27 11:43:32
>>254
次に3日でマスタしようとして挫折する予定の言語はなんですか?
256:デフォルトの名無しさん
08/03/27 11:45:05
swank以前の問題でコンソールではたまたまアスキー越えた部分が
日本語になって出てきているだけじゃないか?
char-code-limitはいくつ?
257:デフォルトの名無しさん
08/03/27 11:46:18
Brainf*ck
258:デフォルトの名無しさん
08/03/27 12:51:21
>>254
あなたは何をやっても駄目そうですね。
259:デフォルトの名無しさん
08/03/27 14:26:57
>>246
cmucl 19e
- Preliminary support for external formats. Currently only
iso8859-1 and utf-8 are supported. Utf-8 support is limited
since CMUCL only has 8-bit characters.
260:デフォルトの名無しさん
08/03/27 14:32:59
swank の方でも cmucl への接続時は iso-latin-1-unix 以外の coding だと
接続できないように書かれているから、そもそも utf-8 で接続できているのが
おかしいというか勘違いだろう。
261:デフォルトの名無しさん
08/03/28 03:04:37
>>259
ガーン、有難うございました orz
そうか、external-formatだけダメってのもあるのか,Release-noteはちゃんと読まないとだめですねぇ
262:デフォルトの名無しさん
08/03/30 19:57:31
(setq y '(1 2 3 4 5 6 7 8 9 10 11))
(defun visitor (x)
(+ (car x) (visitor (cdr x))))
(visitor y)
スタックオーバーフローで死ぬんですけど・・・。
xyzzyにて。
263:デフォルトの名無しさん
08/03/30 20:03:43
すまん。自己解決した。
(setq y '(1 2 3 4 5 6 7 8 9 10 11))
(defun visitor (x)
(if (equal x nil) 0
(+ (car x) (visitor (cdr x)))))
(visitor y)
264:デフォルトの名無しさん
08/03/30 21:14:41
ねらい通りのものができたので、記念書きこ。
(setq x '(1 2 3 (4 5 6 (7 8 9 ) 10 11 )))
(defun visitor (x)
(if (equal x nil) 0
(if (listp (car x)) (+ (visitor (car x)) (visitor (cdr x)))
(+ (car x) (visitor (cdr x))))))
(visitor x)
265:デフォルトの名無しさん
08/03/30 21:21:22
一つの関数書くのに一時間以上かかってる。
鬱だ。情けない。
266:デフォルトの名無しさん
08/03/30 21:43:40
ま、最初はそんなもんじゃないかな
なんとなく別解を書いてみた
(defun visitor (x) (if (atom x) x (apply #'+ (mapcar #'visitor x))))
267:デフォルトの名無しさん
08/03/30 22:35:30
>>266
まさか同じ処理をするとは思えませんでした。
高階関数を使うとそんなにすっきり書けるんですね。
勉強になりました。ありがとうございました。
268:デフォルトの名無しさん
08/03/31 00:08:43
短く書くだけならこれで十分じゃね?↓
(defun visitor (x) (apply #'+ x))
269:デフォルトの名無しさん
08/03/31 00:10:09
…ってごめんよく読んでなかった、今のなしで orz
270:177
08/03/31 10:19:14
>>266
なるほどな~。
私もLispを始めたばかりなので、勉強になります。
271:デフォルトの名無しさん
08/03/31 14:37:40
数式処理(maxima)で
[x1,x2,x,3...]という記号(変数?)の列を生成したいのですが
defmacroを使うのが正しいやりかたなのでしょうか?
272:デフォルトの名無しさん
08/04/01 02:24:09
URLリンク(d.hatena.ne.jp)
rcl(Rとのインターフェイス)が動かなかったので補正してみました.
ひょっとしてバグなのでしょうか?
273:デフォルトの名無しさん
08/04/01 16:15:05
swigでc++ をwrapしてclispから呼びたい
swigのcffiオプションはcはできてもc++はできないみたいなので
Allegro Common Lisp用のものを生成して
swig -allegrocl -c++ example.i
ちょっと書き換えればclispやsbclで動くものになるんだろうか
274:デフォルトの名無しさん
08/04/02 00:40:55
ACLの個人向けライセンスの安いのだしてくれんものかのぉ。orz
275:デフォルトの名無しさん
08/04/02 08:17:07
>>274
学生になったらいいんじゃね?
276:デフォルトの名無しさん
08/04/02 08:43:39
こっちはACLのチュートリアルやってみてるところだけど、
ヴァージョンが違うからなのか、そのままのとおりにならないorz
親しんでもらって売ろうという気は無いのかなと思った。
277:デフォルトの名無しさん
08/04/02 20:43:29
どのチュートリアルの話ですか?
ANSI CL 規格の範囲内ならともかく、ACL処理系依存の部分なら
全バージョンで完全な互換性を保つ事を要求するのは酷なのでは…。
278:デフォルトの名無しさん
08/04/03 00:07:32
URLリンク(www.common-lisp.ru)
すごい便利そうなんだけどドキュメントはどこ?
279:デフォルトの名無しさん
08/04/05 09:07:12
GNU clispつかってデータ処理してるんだけど
少ないデータをかませたらきちんと結果が出てくるんだけど
大量のデータをかませたら
APPLY: too many arguments given to +
[Condition of type SYSTEM::SIMPLE-PROGRAM-ERROR]
と出てくる.
スタックサイズか何かだと思うんだけど...どうやったらうまくapplyしてくれるようになりますかね?
280:デフォルトの名無しさん
08/04/05 09:37:40
エラーメッセージに何が問題か書いてあるんだけど、読んでから質問してる?
281:デフォルトの名無しさん
08/04/05 11:02:52
(reduce #'+ args)
282:デフォルトの名無しさん
08/04/05 11:55:26
>>279
Clispは引数の数に制限があるの?
283:デフォルトの名無しさん
08/04/05 20:18:01
>>282
CALL-ARGUMENTS-LIMIT
URLリンク(www.lispworks.com)
284:デフォルトの名無しさん
08/04/05 20:41:10
>>283
282じゃないけど、こんな変数あるんだ、勉強になったよ
ちなみに手元で調べた結果(全部 mac os x 上)
clisp: 4096
acl: 16384
sbcl: 536870911
285:282
08/04/05 21:40:57
>>283
ほー。こんなのがあるのですか。
ありがとうございます。
こういうのはどのように知ったのですか?
286:デフォルトの名無しさん
08/04/05 22:42:57
283じゃないけど、漏れは282同様に派手にAPPLY→エラー→調べる→知る、という流れだったね。
ANSI 規格では最低 50 ときまってるので、50 個の引数までなら CALL-ARGUMENTS-LIMIT を意識せずに安心して使える。
287:デフォルトの名無しさん
08/04/05 23:42:37
283だけど、漏れは282同様に派手にAPPLY→エラー→281のようにreduceで書く→忘却→
ある日PCL読んで制限について書いてるのたまたま発見、という流れだったね。
URLリンク(www.gigamonkeys.com)
ANSI 規格では最低 50 ときまってるけど、 CALL-ARGUMENTS-LIMIT のことは忘れて reduce 使うね。
288:デフォルトの名無しさん
08/04/06 20:13:57
おれ様用メモ。constant variable とその最小値。
multiple-values-limit >20
call-arguments-limit >50
lambda-parameters-limit >50
下は多分誰も気にしない値。
array-dimension-limit >1024
array-rank-limit >8
char-code-limit >96
array-total-size-limit >1024
289:デフォルトの名無しさん
08/04/06 22:05:03
> 下は多分誰も気にしない値。
char-code-limitはUnicodeサポートの目安に使ったりするみたいよURLリンク(lispuser.net)
array-total-size-limitも結構使う。おさまらないやつは分割したりしなきゃいけないから。
290:デフォルトの名無しさん
08/04/06 22:28:38
>>288
細かいことを言うようだが、正確にはすべて等号を含む、かな。
291:デフォルトの名無しさん
08/04/06 22:53:01
>>289
HyperSpecのぶ厚い仕様はダテじゃないのね、、、失礼しました。
>>290
(´・ω・`)
292:デフォルトの名無しさん
08/04/08 10:52:12
CL-USER> (+ 1 2)
3
CL-USER> (+ 2 3)
5
CL-USER> (+ 3 4)
7
CL-USER> (+ * ** ***)
15
こんな事ができるのね。
293:デフォルトの名無しさん
08/04/08 12:26:03
>>292
それ、便利だよね。
slimeとかじゃ使えんが。
294:292
08/04/08 12:47:38
>>293
slime+clispで試しました。
295:デフォルトの名無しさん
08/04/08 18:42:54
>>294
sbcl だとダメだった
296:デフォルトの名無しさん
08/04/08 18:52:51
>>295 うちは大丈夫だが...
; SLIME 2008-03-24
CL-USER> (+ 1 2)
3
CL-USER> (+ 3 4)
7
CL-USER> (+ 5 6)
11
CL-USER> (+ * ** ***)
21
CL-USER> (lisp-implementation-type)
"SBCL"
CL-USER> (lisp-implementation-version)
"1.0.15.41"
CL-USER>
297:デフォルトの名無しさん
08/04/08 19:01:40
つかこれCommon Lisp標準の機能でしょ?
298:デフォルトの名無しさん
08/04/08 22:38:30
この辺ですな。
URLリンク(www.lispworks.com)
"*" 辺りしか使ったことないけど。
299:デフォルトの名無しさん
08/04/08 23:32:33
一番使うのは + 系だけどな
300:デフォルトの名無しさん
08/04/09 00:47:29
*も+もいいよね。CLで好きな機能の一つだ。
301:デフォルトの名無しさん
08/04/10 12:13:27
xyzzyでは使えないの?
302:デフォルトの名無しさん
08/04/10 12:42:04
自分で試せばいいじゃないか。
303:デフォルトの名無しさん
08/04/10 16:14:13
>>301
使えないみたいですね。
304:デフォルトの名無しさん
08/04/10 16:19:08
xyzzyはCommon Lispじゃないからしょうがない
305:デフォルトの名無しさん
08/04/10 23:34:06
>>301 とかは xyzzy に REPL があるという認識なのね。
オレにはその認識はなかったので、かなり新鮮。
欲しければ実装してやればいいんじゃね。
306:デフォルトの名無しさん
08/04/11 00:06:12
REPL よりも lisp-interaction-mode 改造の方が使いやすいかも
307:デフォルトの名無しさん
08/04/11 06:35:02
*scratch*に入力した文字は消え去ることもないし、他に履歴呼び出しもあるしで
別に苦労して* + /を実装する必然性も感じられないんだけどw
308:デフォルトの名無しさん
08/04/11 08:37:14
(let ((* nil) (** nil) (*** nil))
(loop
(setq *** ** ** * * (eval (read)))
(print *)))
*付きREPLってこんな感じ?ほとんど意味無いけどw
309:デフォルトの名無しさん
08/04/11 09:39:28
>>308
実際の実装も割とそんな感じですね。
310:デフォルトの名無しさん
08/04/11 13:26:01
>>307
さほど苦労ではないから多くの処理系で実装されているのでは?w
311:デフォルトの名無しさん
08/04/11 15:53:08
多くの処理系には *scratch* がない
312:デフォルトの名無しさん
08/04/11 16:31:45
会話が成立してないな。ここは人工無脳たちも来てるから仕方ないけど。
313:デフォルトの名無しさん
08/04/12 00:32:41
>>310
いや、規格できまってるからですw
314:デフォルトの名無しさん
08/04/12 10:15:47
(funcall
(car
'(#'test . ("arg1" . "arg2"))))
これが,
FUNCALL: #1=#'TEST is not a function name; try using a symbol instead
としてエラーが出るのですが,おそらくクオーティングされてるんだと思います.
これをfuncallでできるようにやるにはどうしたらよいのでしょう?
315:デフォルトの名無しさん
08/04/12 10:40:55
ドッドペアとはな。コンスセルの節約かい?
A: cons で対応
(funcall (car (cons #'test '("arg1" . "arg2"))))
B: バッククォートで対応
(funcall (car `(,#'test . ("arg1" . "arg2"))))
316:デフォルトの名無しさん
08/04/12 11:50:56
testが決め打ちなら、
(setf (symbol-function 'test) #'car)
(funcall (car '(test . ("arg1" . "arg2")))
'(foo bar))
;-> foo
で良いだろうし
testが動的に変化するなら、
(let ((test #'car))
(funcall (car `(,test . ("arg1" . "arg2")))
'(foo bar)))
-> foo
じゃない?
function(#')付けるとややこしくなると思うよ。
もしくは最初のalistの作り方ががそもそも問題で、
(let ((test #'car)
(alist (cons #'car '("arg1" . "arg2"))))
(funcall (car alist)
'(foo bar)))
とか。
なんにしろ、何が実現したいのかで変ってくる例だと思う。
関係ないけど、SchemeとCommon Lispの名前空間の扱いの違いを理解するには良い例かも。
317:デフォルトの名無しさん
08/04/12 12:08:31
質問者は名前空間というよりクォートについて聞いているのではないか?
(define (test) 100)
((car '(test . 100)))
はSchemeだってエラーでしょう。
元質問は、俺にもかけだしだった頃に似たような経験があるなぁ。
1. #' + シンボルで関数を表現する、という説明を聞く => やってみる '(#'test) うごかNeeeなんで?
2. #'test を「評価」すると関数になるんだよー ' でクォートされたものは評価されない
3. Aha!
318:デフォルトの名無しさん
08/04/12 13:26:35
>質問者は名前空間というよりクォートについて聞いているのではないか?
>>316 >関係ないけど、Sche...
と書いてますし、質問と関係ないことについては、ご指摘の通りですw
quoteを回避するってなら、
(funcall (cadar '(#'car)) '(foo bar baz))
って方法もあるね。
さらに横道に逸れるけどw
319:デフォルトの名無しさん
08/04/12 13:41:41
On Lispで関数内でクオートしたリストを返しては駄目だとあるので、
この関数を定義して、
(defun exclaim (exp)
(append exp (list 'oh 'my)))
CL-USER> (exclaim '(hoge fuga))
(HOGE FUGA OH MY)
CL-USER> (nconc * '(goodness))
(HOGE FUGA OH MY GOODNESS)
CL-USER> (exclaim '(foo bar))
(FOO BAR OH MY GOODNESS) ←どうしてこうなるの???
上記の(list 'oh 'my)は関数が呼ばれるたびに
生成されると思ったのですが、どうして関数内で定義されている
リストが影響されてしまうのでしょうか。
320:デフォルトの名無しさん
08/04/12 14:40:32
漏れの環境では、再現しないんだけど…。
CLISP、SBCL
HyperSpec博士の出番だね。
(defun exclaim (exp)
(let ((lst (copy-list '(oh my))))
(append exp lst)))
でも同じ結果になるのかな?
321:319
08/04/12 15:06:49
>>320
> (defun exclaim (exp)
> (let ((lst (copy-list '(oh my))))
> (append exp lst)))
この関数で試してみたら、うまく動きました。
ありがとうございます。
もう一度、
(defun exclaim (exp)
(append exp (list 'oh 'my)))
を定義して試してみたら、うまく動きました。
CLisp,Slimeで試していたのですが、
上記の関数は別ファイルに書き、
c-c c-l
でloadfileしていたのですが、保存前の
ファイルをloadfileしていたのだと思います。
すみません。
322:デフォルトの名無しさん
08/04/15 13:12:56
common lispについて情報交換 質問などができるMLはどこかにないでしょうか?
323:デフォルトの名無しさん
08/04/15 15:25:05
>>322
MLでは無いですが、mixiにはコミュニティがありました。
この前見たときは8名ほどだったような。
日本語で情報交換できるMLがあったら私も知りたいですが、
このスレが一番活発だったりして。
324:デフォルトの名無しさん
08/04/15 20:58:44
>このスレが一番活発だったりして。
ありうるw
いまどきブログで書く人が多いからMLも活発にならないかもしれない。
そういってもcommon lispのブログもあまり見かけない気はするけどw
325:デフォルトの名無しさん
08/04/15 22:20:11
Common Lisp Night やろうぜ!
326:デフォルトの名無しさん
08/04/15 22:47:26
>>325
一晩かけてみんなでカッコを黒板に清書だな
327:デフォルトの名無しさん
08/04/15 23:21:03
LispDaysの中の人の更新がないしなぁ。
僕はとっても楽しみにしてるんで、日常だけでもいいから日記かいてくれないかなぁ。
328:デフォルトの名無しさん
08/04/16 02:27:49
去年ちょこっとcommon lispのブログが増えたけど、去年中に
大体がcommon lispnについて書くのやめちゃったね。
対してSchemeはあんまりそういう傾向はないみたいなんだけど。
なんでだろ。Schemeは教材が充実してるから学習日記が書きやすいとか、かな?
329:デフォルトの名無しさん
08/04/16 02:31:53
Common Lisperは仕事が忙しいんですよ
330:デフォルトの名無しさん
08/04/16 02:52:53
つまり暇な学生には人気がないってこと?w
331:デフォルトの名無しさん
08/04/16 03:34:41
ハテナ ダイアリィのcomon lisp groupでも作ればいいのかな
332:デフォルトの名無しさん
08/04/16 05:55:21
はてなにLisp系のグループは2つあるみたいだけど、うち一つは休眠中。
もう一つも登録者8人中、アクティヴなのは4人ぐらいしかいないみたい。
この現状でさらにもう一つCLersのグループを作ったとしても…
333:332
08/04/16 06:00:35
ごめん、訂正。他にSICPのグループがあって、こちらはけっこう人数がいるみたいだ。
「はてなにLisp系のグループは2つ」というのは間違いでした。
334:デフォルトの名無しさん
08/04/16 08:26:52
Common Lisp ブログ、何でもいいから沢山あるといいね。
新仕様 Common Lisp The 3rd とかあると盛りあがるんだけど。
335:デフォルトの名無しさん
08/04/16 08:39:09
>>334
> 新仕様 Common Lisp The 3rd とかあると盛りあがるんだけど。
その仕様にフジコちゃんは入ってますか?
336:デフォルトの名無しさん
08/04/16 10:08:27
不覚にもワラタ
337:デフォルトの名無しさん
08/04/16 10:37:37
Common Lisp は大事なものを盗んでいったんですねわかります!
338:デフォルトの名無しさん
08/04/16 10:41:46
>>337
俺様から怠惰を盗みやがったぜ
339:デフォルトの名無しさん
08/04/16 12:40:05
>>332
別に沢山あっても良いと思うけど、纏まってないといけない理由もないだろうし。
CL専門だったら漏れも登録したいと思うよ。
もしくは逆にテーマを限定してCLOS専門とかねw
340:デフォルトの名無しさん
08/04/16 13:50:47
hatena diaryのweb リングのサービス終了ですか
common lispのグループは便利だった
341:デフォルトの名無しさん
08/04/16 22:26:26
>>339 MOP専門ほしい
342:デフォルトの名無しさん
08/04/16 22:33:29
>>339
同意。グーグルが勝手に拾ってくれるから、必要なのは
Webに書くときには単に Lisp ではなく、ちゃんと Common Lisp と綴ることだと思う。
だれか「CLOSプログラマーのためのJava入門」とか書いてくれたら嬉しいんだけど。
343:デフォルトの名無しさん
08/04/16 22:41:03
俺のサイトはグーグル拾ってくれない…
まあ CLOS の事は書いてないけど
344:デフォルトの名無しさん
08/04/16 22:50:36
>>343
宣伝しなきゃですよ。ここへURLを晒すとか。w
345:デフォルトの名無しさん
08/04/16 23:47:30
>>342
CLOSとJavaて水と油ですやん。書く奴がいるとは思えない。
「CLOSプログラマーのためのC++入門」ならまだ分かる。
両方generic function萌えなので。
346:デフォルトの名無しさん
08/04/16 23:57:33
>>345
generic functionという用語だけ同じでも中身別物じゃんかw
347:デフォルトの名無しさん
08/04/17 00:16:24
いや、まず、CLOSプログラマがCLOSについて書くべきだろw
348:デフォルトの名無しさん
08/04/17 01:52:09
まず↓の絶版状態を解消するのが先決だな。
URLリンク(www.amazon.co.jp)
どっかの出版社タノムぜ
349:デフォルトの名無しさん
08/04/17 01:57:19
>>348
URLリンク(www.fukkan.com)
350:デフォルトの名無しさん
08/04/17 07:42:11
CLOSって何で流行らないのかな
マクロとCLOSってめちゃめちゃ強力な気がするんだけど(まだ勉強中)
351:デフォルトの名無しさん
08/04/17 07:47:50
そう思えるのはS式に抵抗がなくなりつつあるからでしょう。
Lispやる前を思い出してみると、マクロと聞くとCの#defineを想像したり、
大量の括弧をみただけでダメ出ししていたりしませんでしたか?
352:デフォルトの名無しさん
08/04/17 08:28:55
>>350
その前にCL自体を流行らせないと。
353:デフォルトの名無しさん
08/04/17 08:32:15
>>346
二大「特殊化」言語だよ。
コンパイル時か、実行時か
before/after daemon
大きく違うのはこのくらい。
>>350
Common Lispが流行ってませんので…
けどC++にかなり大きな影響与えてる。
C++の方は特殊化に関する部分だけでも、
まだいろいろと拡張を続けてる。
Generic programmingやaspect oriented programmingの
源流の一つだね。
354:デフォルトの名無しさん
08/04/17 08:40:09
>>353
> 大きく違うのはこのくらい。
それに起因して違いがありすぎるだろ。別物じゃねーか。
355:デフォルトの名無しさん
08/04/17 08:47:26
>>345
Java:だいたい全てがオブジェクト,Guy Steel Jr が参加
CL:全てがオブジェクト,Guy Steel Jr が参加
同じだ!JavaとCLはほとんど同じだよ!
356:デフォルトの名無しさん
08/04/17 09:26:25
Javaはガチガチのクラス指向だからなあ。
357:デフォルトの名無しさん
08/04/17 09:52:39
jvmの上で動くCommonLispがあればいいんじゃないか?
コンパイルもバイトコードに落ちるようなの。
358:デフォルトの名無しさん
08/04/17 10:34:44
>>357
Armed Bear Common Lisp (ABCL) が既にあるけど何か?
359:デフォルトの名無しさん
08/04/17 10:46:27
>>358
アンテナ壊れてたよ、ありがと.
週末に試してみる。
360:デフォルトの名無しさん
08/04/17 13:47:15
>>341
そうだね、MOP全般ってのも良いかも。
とりあえず、CLOSの情報が増えさえすれば良いんだし。
CL、Gauche、他にどういうのが対象言語かな。
361:デフォルトの名無しさん
08/04/17 14:09:26
サイトの宣伝していいの?
common lisp packageで検索してくる人が5人/day
ぐらいのサイトだけど
362:デフォルトの名無しさん
08/04/17 14:22:22
日に5人もCLパッケージで迷える子羊がいるんだなw
ANSI Common Lispでもパッケージの解説は親切でないかもね。
363:デフォルトの名無しさん
08/04/17 15:24:33
パッケージはCLtL2(≒ANSI)で大きく仕様が変わったせいで少し混乱してるね。
CLtL2の記述を見ても、GLSは新しい仕様があまり好きではないのではないかと思える。
364:デフォルトの名無しさん
08/04/17 16:10:10
混乱っていえば、ANSI、cltl1、cltl2の関係も混乱するね。
仕様について言うなら、とりあえずANSI(HyperSpec)を規準にすれば
良いんだろうけど…。
HyperSpec翻訳されないかなあ。
やっぱり、みんなHyperSpecを一番読むわけでしょう?
有志で、オンラインで翻訳しまくるというのはどうか。
もちろん許可がとれれば、だけど…。
365:デフォルトの名無しさん
08/04/17 19:21:58
>>364
とりあえずさっと確認したいときはHyperSpecだね。
じっくり調べるときはCLtL2を開いてGLSの名調子に浸る。w
366:デフォルトの名無しさん
08/04/17 23:14:17
おれ常にHyperSpecしか見てなかったよ
>>364
よく知らないけど、HyperSpecってどこかが権利もってんだよね?
何かまるごとダウンロードしようとして躊躇した記憶がある
367:デフォルトの名無しさん
08/04/17 23:19:36
>>366
丸ごとダウンロードは別に問題ないんじゃないの?
圧縮されたファイルで用意されてるし。
むしろ皆でlispworksに押しかける方が無茶な気がするが。
368:デフォルトの名無しさん
08/04/17 23:29:53
>>366
つ URLリンク(www.lisp.org)
商用利用しないかぎり複製・再配布は自由。ただし改変は認めない。
みたところ翻訳の可否については明記されていないから、これに関しては
問い合わせてみないとわからないね。
369:デフォルトの名無しさん
08/04/18 00:06:31
そうだ JIS Common Lisp を作ればいいんだ
370:デフォルトの名無しさん
08/04/18 00:46:46
JISか…。
ISLISPってのがあるけど、割と日本が果たした役割は大きかったらしいよ…。
371:デフォルトの名無しさん
08/04/18 02:14:33
ほとんど忘れ去られている悲しい規格だな>ISLISP
372:デフォルトの名無しさん
08/04/18 07:17:00
>>367,368
おお、ありがとう。法律用語の読みかたが自信なかったんだよ。
これで遠慮なくHyperSpecを読みこめるよ!
373:デフォルトの名無しさん
08/04/18 11:31:13
>>369
ECMA Script の JIS みたいに「引用」だけで済まされる、というオチが見える
374:デフォルトの名無しさん
08/04/18 12:12:17
少なくともANSI相当のものが日本語になるんじゃね?
375:デフォルトの名無しさん
08/04/18 13:06:54
いや、何故かISLISPが元になってJIS LISPができそうな気がする
376:デフォルトの名無しさん
08/04/18 13:37:38
>>375
つ JIS X3012
377:デフォルトの名無しさん
08/04/18 14:23:27
どうやら、漏れは過去を予言してしまったようだなw
378:デフォルトの名無しさん
08/04/18 15:53:43
JIS Prolog なんてもっとマイナな感じだな
379:デフォルトの名無しさん
08/04/18 21:17:06
JIS規格文書はJISが権利を持ってることになる。
翻訳が現れることは望ましいけれど、JIS化はあんまりよろしくないと思う。
380:デフォルトの名無しさん
08/04/18 21:25:12
後、誤訳してもJIS的にはそっちが正しいことになっちゃうしな。
381:デフォルトの名無しさん
08/04/18 21:25:42
>>379
無料で閲覧できるようになったのは進歩だけど、印刷はもちろん、検索さえできないのがアカンよね。
海外やISOの規格事情も似たようなもんだけどね。
382:デフォルトの名無しさん
08/04/18 21:33:25
印刷は頑張れば出来るw
383:デフォルトの名無しさん
08/04/18 21:41:25
検索も自分用はOCRソフトで・・・w
384:デフォルトの名無しさん
08/04/18 23:08:46
>>381
印刷禁止フラグは簡単に解除できる。
ム板住人ならみんなやってると思ってた。
ただ、ウェブで見られるPDFは文書をビットマップ画像にしたものを貼り付けてあるので、
検索はOCRを使わないと仕方ない。
385:デフォルトの名無しさん
08/04/18 23:19:04
印刷して使うっていう発想がなかった。
386:デフォルトの名無しさん
08/04/18 23:51:26
ちなみに有料(ダウンロード販売)の規格票もビットマップ画像だよ
387:デフォルトの名無しさん
08/04/19 08:27:47
>>386
検索できないんじゃ紙で売った方がいいよねぇ。
電子化の意味が有体物じゃ無いことだけじゃないか。
388:デフォルトの名無しさん
08/04/20 19:51:05
それが日本クオリティ...なのか?
ANSIの電子化ってどうなんだろうね。
389:デフォルトの名無しさん
08/04/20 20:03:29
>>388
金出せばやるだろ。お役所なんてそんなもんだ。
390:デフォルトの名無しさん
08/04/20 20:08:05
D&Eで規格団体のクソっぷりが書かれてたから、アメリカでも事情は同じだと思う。
391:デフォルトの名無しさん
08/04/21 01:28:05
全部RFCになればいいのに。w
392:デフォルトの名無しさん
08/04/21 02:56:23
>>391
4/1版でマジ切れとか鵜呑みとかの間抜けな人がいるから全部はヤダ
393:デフォルトの名無しさん
08/04/21 20:51:58
clispで型推論が無いのはなんで?
394:デフォルトの名無しさん
08/04/21 21:21:10
型推論のどういうメリットを期待してる?
395:デフォルトの名無しさん
08/04/21 22:36:12
>>394
コンパイルしたときのエラーと
高速化かな
396:デフォルトの名無しさん
08/04/21 23:13:15
>>395
それをインタプリタの clisp に期待するのは何故?
397:デフォルトの名無しさん
08/04/22 00:06:49
>>395
せっかくオープンソースなんだから、君が書き加えてあげれば喜ばれるかもよ
398:デフォルトの名無しさん
08/04/22 01:01:34
・オープンソースの法則
何故か誰も修正しない
399:デフォルトの名無しさん
08/04/22 07:36:31
俺は自分で気付いたものは割と修正するけどな。
わずかな努力で割と多くの人の役に立てる(ソフトのユーザ人口によるけど)。
400:デフォルトの名無しさん
08/04/22 10:08:53
elfやcoff操作するライブラリが欲しいんだけど、どこかにないかな?
binutilからBFD抜き出してライブラリにしてラッパ作った方が早いかな?
401:デフォルトの名無しさん
08/04/23 16:54:38
URLリンク(www.lisp.org)
exampleで
with-open-fileと一緒にdoを使ってるけど
xyzzyの人のサイトではほぼ必ずwhile readline
どっちが推奨なの?
402:デフォルトの名無しさん
08/04/23 17:29:27
xyzzy上のLispではwhileという関数がありますが、Common Lispにはありません。
403:デフォルトの名無しさん
08/04/23 18:00:26
closの使い道がいまひとつわからない
最短時間で(汚く)プログラム組むのに
namespace
分かりやすい名前で defun
map
あたりは使う
すでに組んでしまった汚いコードを無理やり他のプログラムとくっつけるのに
マクロは少し使う
はじめから綺麗に書こうと思わないかぎりclosは使わない?
404:デフォルトの名無しさん
08/04/23 20:16:30
>>401
一言で言えば xyzzy は Common Lisp ではない、というだけ
405:デフォルトの名無しさん
08/04/23 22:29:16
>>402
細かいこと言うと、関数じゃなくてマクロね
406:デフォルトの名無しさん
08/04/23 22:54:07
white(笑)
for(笑)
407:デフォルトの名無しさん
08/04/23 22:58:20
white って何よ
408:デフォルトの名無しさん
08/04/23 23:20:48
>>401
whileの方が簡潔にかけるからwhileがいいんじゃない?
CLだとloopとかdoだけど。馴染みのない人にはdoとか嫌われるしね。
whileはemacs経由でxyzzyに導入されたのかしら。
409:デフォルトの名無しさん
08/04/23 23:35:08
>>403
割と後づけだし、資料が少ないんだよね。
Paul GrahamとかPeter Norvigとか有名な本書いてる人達が
CLOSをプッシュしてないこともあって自著でも
CLOSの解説とかあんまりしてないし、CLOSは何だか不運に感じるなー。
それと、汚く書くってことなら、CLOSは相当なものを書けるとおもうけどw
410:デフォルトの名無しさん
08/04/24 00:12:09
>>409
CLtL2でも他の章はGLSの蘊蓄炸裂なのに、CLOSのとこはANSI原案丸写しという感じで
やる気が感じられないよね。
411:デフォルトの名無しさん
08/04/24 07:37:48
おれも素人だけど、
・いろいろ状態を持ってるオブジェクトっぽい何かがある時
・既存のライブラリがclosで出来てる時
・似たようなプログラムが沢山できそうな時
はclos使おうと思うなぁ。
schemeの話だったかもだけど、shiroさんがある規模より大きくなったら
オブジェクト指向を使いたくなる、みたいなこと書いてなかったかな?
412:デフォルトの名無しさん
08/04/24 08:24:44
>>411
> ・既存のライブラリがclosで出来てる時
おれはこの時だけ使いたくなるなぁ。
Allegroみたいな商用だとclos使ったライブラリ揃ってるっぽいけど、
普段あんまり見かけないから相対的に出番が少なくなるよね。
413:デフォルトの名無しさん
08/04/24 09:10:01
clos使わないと混乱するほど巨大な物書いたこと無いから正直使い処がわからんです。
414:デフォルトの名無しさん
08/04/24 10:12:26
うーん、CLはマルチパラダイム言語なわけで、
CLOSはそのうちの一つのパラダイムな訳だから、
規模云々より単に手法の一つだと思うんだけど…。
小さい規模でも綺麗にまとまってるのも沢山あると思うよ。
身近な例で言えばASDFとかどうだろう。
415:デフォルトの名無しさん
08/04/24 14:34:26
CLOSがあまり使われないのは、
基本関数のスタイルとCLOSのスタイルがちょっと違うからかも。
CLOSセントリックに書き直したLisp方言も面白そう。
416:デフォルトの名無しさん
08/04/24 14:42:00
とりあえず defstruct よりは defclass かな、という程度だね。
typecase でディスパッチするよりは defmethod を使うという感じ。
defun をやめて、すべて defmethod を使うというスタイルにはなれないな。
ま、便利なときだけ使えばいいんじゃね?
417:デフォルトの名無しさん
08/04/24 15:58:33
lambda式直使いとmulti dispatchの相性が悪い。
418:デフォルトの名無しさん
08/04/24 19:01:22
そうなの? どういう局面で?
無名総称関数はANSI仕様から消えちゃったけど、それのこと?
419:デフォルトの名無しさん
08/04/28 00:15:31
なんか急に流れが止まったな
>>414
へー、asdfってCLOS使ってるんだね。参考になった。
>>412
おれはこの前AllegroのSAXライブラリ使ったよ。
allegroserve もCLOSの例として面白いかも。
思い付きだけど、
がちがちに仕様が決まっているものを実装するときCLOSを使うといい、
という説はどう?
420:デフォルトの名無しさん
08/04/29 01:23:58
どうだろう…。
個人的にはガチガチに仕様が決まったようなプロジェクトでも
Lispがバンバン採用されるようになることを祈りたいw
421:デフォルトの名無しさん
08/04/30 06:12:32
sbclをアンインストールする方法はないでしょうか?
finkを導入した所リストの中にsbclが有りそちらで一括管理したいので
サイトから直接ダウンロード&インストールしたsbclをアンインストールする方法を
教えていただけないでしょうか?
よろしくお願いします
422:デフォルトの名無しさん
08/04/30 07:36:14
漏れが確認したところでは、特にアンインストールのスクリプトはないみたい。
なので、手動で削除する他ないのかな?
といっても/usr/local/lib/sbclと/usr/local/bin/sbclを削除するだけのような
気もするけど…。
単純にパスの設定を/usr/local/より/sw/の方を前にもってくるとかじゃ駄目なのでしょうか。
423:デフォルトの名無しさん
08/04/30 08:15:10
別にlispに限った話じゃないけど、自分でインストールするなら
インストールのログくらい取っておけよと思う。
424:デフォルトの名無しさん
08/04/30 08:52:30
>>423
まあ、その辺りがUNIX文化とWin/Mac文化の違いというところでは?
アンインストーラを使わずに
適当に実行ファイルを消したらシステムの整合性が崩れて
面倒ことになる、と思ったのかもしれないし。
425:デフォルトの名無しさん
08/04/30 17:16:51
>>422
ありがとうございます。
コマンドラインから検索した所
そのフォルダがヒットしましたので削除したいと思います。
>>423
今後そうしたいと思います。
精進いたします。
>>424
やはりその不安が有ったのです。
今後プログラミングの学習はマスターできるまで
仮想のlinux上でやりたいと思います。
426:421
08/04/30 17:28:37
/usr/local/share/man/man1/sbcl.1
というディレクトリが有るのですがこれの
man1というディレクトリはシステムのフォルダですか?
それともインストール時に自動的に作成されるものですか?
よろしくお願いします
427:デフォルトの名無しさん
08/04/30 17:36:26
finkうんぬんとあったからMac OS Xなの?
UNIXでもその辺は全部一緒じゃないんだよな。
Mac OS Xの場合、Mac OS Xは/usr/localを使わない。
どのパッケージがどのディレクトリを使っているかは、
/Library/Reciepts/*/Archive.bomをlsbomすれば分かる。
ただし、Mac OS Xの場合、サードパーティの配布は、
pkg形式使ってないことが多いから、
ファイルの追跡は諦めるしかないと思う。
SolarisやLinux(rpm, deb)のバイナリーパッケージは、
そういうの追いかけるの得意なんだけど。
428:421
08/04/30 19:40:59
>>427
ありがとうございます
また一つlinuxの先進性を学びました。
429:デフォルトの名無しさん
08/04/30 20:13:10
ん?>>421 は何か勘違いしてる?
Mac OS X はLinuxより遅れている訳でも仮想のLinuxでもないぞ。
ソースをコンパイルしてsbclを入れたんだったら自分の責任っしょ。
まあfinkにせよ何にせよ、がんばって使いこなそうぜ。
430:デフォルトの名無しさん
08/04/30 20:40:17
自分でコンパイルするときって日本語コードを内部でどう扱うかも指定できるの?
431:デフォルトの名無しさん
08/04/30 20:45:52
処理系がそういう風に作られてるか、ソースいじれるスキルがあれば指定できるんじゃね。
432:デフォルトの名無しさん
08/04/30 20:50:58
内部表現がCES/CCS非依存になっているCLは聞いたことがないです。
URLリンク(ja.wikipedia.org)
433:デフォルトの名無しさん
08/04/30 21:41:34
内部なんて気にしなきゃいいじゃない。
気にしなきゃいけないとすれば、それは内部ではない。
434:デフォルトの名無しさん
08/04/30 22:43:48
ここ基本的に初心者スレだから勘違いする人がいるとアレなんで
一応書いとくけど最近の処理系は、external-formatで指定できるので、
使う文字コードに合せてビルド時に文字コードを指定しないと
「日本語が使えない」、ということはない。
内部でどう扱うかビルド時に指定できる処理系は、漏れは知らない。
435:デフォルトの名無しさん
08/05/01 00:45:10
基礎の基礎なんであきれられると思うのですが
lispは処理系の上で実行する他はないのでしょうか?
例えばCなら実行ファイルが作成できてそこから実行することでちょっとした計算を
行ってもらったりできるのですが
lispはコンパイルするとファイルができてそれを起動した処理系にロードして
関数を実行というステップを踏まなければなりません
そうすると実行までのステップが増えてしまうのですが
lispでも実行ファイルのような形式を作れないものでしょうか?
436:デフォルトの名無しさん
08/05/01 00:55:38
作れるよ
437:デフォルトの名無しさん
08/05/01 01:06:39
作り方をご教授願います
なぜこのような疑問を持ったのかと思いますと
『ハッカーと画家』などを読んでいて
lispはソフトウェアを書くのに良い言語だなどと書かれているので
(Lisp・・・・インタプリタでしか実行できないと思ってるんだけどな?
いちいちインタプリタを呼び出す訳じゃないよな?)という疑問が浮かんでしまったのです
Lispは美しい言語なのでそれでソフトをかけるととてもうれしいです。
よろしくお願いします
438:デフォルトの名無しさん
08/05/01 01:07:46
Lisp コンパイラ でぐぐれ
439:デフォルトの名無しさん
08/05/01 01:15:39
>>437
以下の流れが参考になるかもしれない。
URLリンク(www.bookshelf.jp)
440:デフォルトの名無しさん
08/05/01 01:24:36
>>438-439
ありがとうございます
実は使用している処理系はclispなんですが
(compile-file "hoge.lsp")
を実行すると
hoge.fasとhoge.libというファイルができhoge.oのような
ファイルが一向にできそうに有りません。
これはclispの独自なのでしょうか?
clispはインタプリタのやじるしの形が気に入って使っているのですが
sbclに移行すべきでしょうか?
よろしくお願いします
441:デフォルトの名無しさん
08/05/01 01:31:18
>>440
CLISPは中間言語に落とすコンパイラだからね。
gclとかsbclとかはネイティブに落とすよ。
442:デフォルトの名無しさん
08/05/01 01:32:41
>>441
なるほど!!
ありがとうございます!!
このすれの皆さんには夜中にお手数おかけしてしまってすいませんでした
443:デフォルトの名無しさん
08/05/01 01:43:18
sbclで試した所
今度はhoge.faslというのができたのですが・・・
どうすれば良いのですか?
444:デフォルトの名無しさん
08/05/01 02:14:19
コンパイルしたらfaslになるのは当然だよ
たぶんおまいさんがやりたいのはスクリプトをexeにしたいんだろ?
save-lisp-and-dieってのをぐぐってみな、exeにはなるw
もっと小さいサイズで作りたいならnewlispってのもある
作りかたはnewlispのマニュアルにある
そのぐらいは自分で読んでみような
445:デフォルトの名無しさん
08/05/01 02:25:24
>>444
例えば
(defun alladd (x) (if (= 1 x) (+ x (alladd (1- x)))))
とかの関数を作っておいて hoge.lとして保存しておいて
コマンドラインから./hoge 3 などと実行できるようにできれば良いと思うのです
446:デフォルトの名無しさん
08/05/01 02:38:24
さんざん二転三転してすいません
大変そうなのでexeはあきらめることにして
faslとはどのように使えるファイルなのでしょうか?
よろしくお願いします
447:デフォルトの名無しさん
08/05/01 02:46:11
何となくわかってきました
コードに必要な関数を書いておきコンパイルすると機械語に変換されて
高速に実行できるようになる
それをインタプリタにロードしてそこで関数を使うなどすることができるということで
良いんでしょうか?
作ったファイルはもし仮にコマンドラインから使いたければ
上部に
#!/hoge/hoge
などと書いて使うということで良いのでしょうか?
448:デフォルトの名無しさん
08/05/01 03:07:22
>>437
perl/PHP/ruby/PythonとかJavaとか使ったことある?
449:デフォルトの名無しさん
08/05/01 03:24:15
Lisp はインタープリタ言語だという嘘情報は誰が流してるんだろう。
勘違いしてる奴多いよね。情報処理の教科書にでも書いてあるのかな。
450:デフォルトの名無しさん
08/05/01 03:26:01
>>448
たぶんこの質問してきた人はスクリプトをエディタで書いて
それをインタープリタに食わせるってことを知らないんじゃないかと思う。
別に無理してexeにしなくてもスクリプトを実行させるバッチファイルを作って
それをクリックすればいいのにね。
配布とか考えてるならlisp自身もいっしょにつければいいし。
451:デフォルトの名無しさん
08/05/01 06:02:52
>>448
それを使ってきて
最終的にLispです
>>449
違うことはわかっているのですが
どうして良いやら
>>450
(load "hoge")
ですか?
452:デフォルトの名無しさん
08/05/01 06:12:00
>>450
sbcl hogeですね
ありがとうございます
453:デフォルトの名無しさん
08/05/01 09:42:28
>>449
>Lisp はインタープリタ言語という嘘
というより、対話操作ができるものは、コンパイラ言語じゃない、
という理解なんじゃない?
というか、Lispとか曖昧に一括りにまとめて書く方も悪い気がするけどな。
454:デフォルトの名無しさん
08/05/01 09:46:55
言語仕様にトップレベルループの細かい部分がある珍しい言語だからね。
ただ、「インタープリター言語」って言葉はおかしいね。
そんな言葉どこに書いてある?
455:デフォルトの名無しさん
08/05/01 10:03:30
インタプリタとコンパイラ、と言う対比にすごい違和感がある。
456:デフォルトの名無しさん
08/05/01 10:12:35
部分計算屋さんですかw
457:デフォルトの名無しさん
08/05/01 12:13:57
インタプリタ言語とかコンパイラ言語って
ダメな教科書にはさくって書いてありそうな気がするけどな
458:デフォルトの名無しさん
08/05/01 12:51:23
コメントするのはググってからでも遅くないぞ
459:デフォルトの名無しさん
08/05/01 13:23:19
言語ごとに、どっちなのかが決まっていると思っている人も
結構いそうだからなぁ。
460:デフォルトの名無しさん
08/05/01 15:35:42
中間言語にコンパイルしてそれをインタープリトする奴もあるしね。
461:デフォルトの名無しさん
08/05/01 16:54:21
>>451
>>452
他の言語の経験が全然生かされてないwwwwwwwwww
462:デフォルトの名無しさん
08/05/01 17:33:45
漏れもかつて >435 と全く同じ事を疑問に思ったよ。
自立したEXEを作れないコンパイラ(を持つ)言語ってあるの?ってな。
昔々のBASICでもライブラリモジュールを付けて配布すれば良いだけの
EXEを作れたもんな。
再配布する際は言語処理系ごと再配布して(つまりユーザーに処理系を
インストールして)くれとか、ライブラリ再配布用のライセンスが
処理系の値段とは別立てでバカ高いとか、何だソレはと思ったよ。
(ある商用処理系の場合)
そんな「コンパイラ(を持つ)言語」があるのかと。
もちろん自立したEXEを作れて再配布のライセンスが無料の処理系も
いろいろあるわけだが、全てそうなわけでは無いので混乱したよ。
463:デフォルトの名無しさん
08/05/01 17:42:08
んーとね、EXEが作れても
実は中間コードとインタプリタをくっつけただけのもので
ネイティブコードは生成してなかったりすることもあるんだな...
464:デフォルトの名無しさん
08/05/01 18:09:55
マイLispを作ったことのある奴なら、中間コードどころか、
後ろにソースくっつけてexeファイルにできる機能つけて
一人でワラタ経験があるはずだ。・・・俺だけではないと思いたいw
465:デフォルトの名無しさん
08/05/01 20:15:05
>464
つまりソースと処理系の本体(インタープリタ)をくっつけた
見かけ上のexeファイルを生成する機能を作ったって事か?
466:デフォルトの名無しさん
08/05/01 20:25:44
どんなコンパイラにだってランタイムライブラリはあるんだから、程度の差だな。
明確な境界線があるわけではない。JITみたいに中間言語で持ってても実行時
はネイティブに落とすのも増えてきたしね。
そういう中身の話とは別に、外見上1本のEXEファイルで動かせるという利便性は
なかなか捨てがたいものがある。>>464は良い仕事してるな。w
467:デフォルトの名無しさん
08/05/01 20:33:41
しかし、中身と外見がそのように異なる場合があるとすると
コンパイルする機能があるという事と自立したEXEファイルが作れると
いう機能には全く関係が無い(独立の関係)と言う事になるなw。
468:デフォルトの名無しさん
08/05/01 20:34:24
>>464
Lispじゃやってないけど激しく同意。
469:デフォルトの名無しさん
08/05/01 20:35:51
>>467
だがどちらもサポートされていない環境が多すぎない?
466の言う通りエンドユーザにとってはとてもありがたいと思うんだ
470:デフォルトの名無しさん
08/05/01 20:41:20
>469
実行モジュールだけを再配布したいとか、ユーテリティか何か作って
どのPCでも動かしたいとか言う時には確かにそうだね。
いちいち、全てのPCにフル処理系をインストールするのはマンドクサイ。
471:デフォルトの名無しさん
08/05/01 20:42:53
Windowsでもexe化がサポートされているものって
CLISP, ECL, GCL, CormanCL, LispWorks, AllegroCL
でしょ?サポートされてない方が数としては少ないんじゃね。
472:デフォルトの名無しさん
08/05/01 20:45:31
>>470
ただunix系だとそれでも通るのはshbangがあるからなんだろうとは思う。
win32とかmacの様なコンシューマPCだと単一実行ファイルが作れるかどうかは言語(というかその開発環境)のユーザが増えるかどうかととても関係が深いと思う
473:デフォルトの名無しさん
08/05/01 20:48:07
>>471
ACLはすげぇ良くできてて自分一人なら買ってもいいかと思うんだけど
バイナリ配布ライセンスが高いんだよな~
社内でも配布できないんだぜ。
474:デフォルトの名無しさん
08/05/01 20:51:15
>>472
Mac は アプリ名.app というディレクトリに実行ファイルを
ぶち込むだけだから一番簡単じゃないかな
475:デフォルトの名無しさん
08/05/01 20:57:38
>>473金がないなら他ので我慢するしかなかろう。俺は我慢してるぜ。
ACLは憧れだが、「この製品はすごく良いからタダもしくは俺の言い値でつかわせろ」
じゃあFranzがやっていけねーだろ。
476:デフォルトの名無しさん
08/05/01 21:04:55
>475
しかし、買おうかなと思って問い合わせしても個人客なんか相手に
していない感じで敷居が高く感じる。473じゃないけど。
せっかくFree Express Editionとか配布して試用しやすくしていても
個人プログラマをハナから相手にしていないのはなんだかな。
再配付ライセンスの事を考えに入れなくても手を出しづらい。
477:デフォルトの名無しさん
08/05/01 22:49:04
開発の時はAllegroで、配布する時はSBCL使えばいい
…でもshiroさんの作ったregexp2とかも使いたいよなー
478:デフォルトの名無しさん
08/05/01 23:19:01
>>475
現状windows上でちょいとしたツール創るのにスゴイ便利なのACLだけなんだよね。
Lispworkssの製品版にしかないRADツールがどうかわからないせいでもあるんだけどさ。
サイトライセンス(要するに社内で開発用とそのバイナリだけ使うのの比率による価格体系)とかあればいいんだけど。
webをパッと見た限りじゃ要相談以外なくて、相談の結果だめでしたごめんなさいなんですが.
中小企業にももうちょっと門戸ひらいてよ>>フランツ
479:デフォルトの名無しさん
08/05/02 00:09:10
Webアプリって手もあるよ
480:デフォルトの名無しさん
08/05/02 00:11:59
>>460
中間表現を持たないインタープリタなんて見たことないな。
構文と一対一対応なのか、
それとももっとノイマン型計算機に近いかの違いはあれ。
481:デフォルトの名無しさん
08/05/02 01:32:18
>>480 sh とか中間表現持ってたっけ?
482:デフォルトの名無しさん
08/05/02 01:42:50
URLリンク(www.freebsd.org)
483:デフォルトの名無しさん
08/05/02 01:49:04
ソーステキストを直接インタプリットしてるインタプリタなんて
俺様言語とかでいくらでもありそうだけどw
484:デフォルトの名無しさん
08/05/02 02:18:13
Windowsのバッチファイルはその点すごいぞ。
バッチファイル実行中にソースを書き換えたら即反映されるからな。
Lispよりも動的だぞ。
485:デフォルトの名無しさん
08/05/02 02:22:00
良い釣り餌だと思ったのだろうがそうはいかん
486:デフォルトの名無しさん
08/05/02 02:26:22
>>480
TinyBASICは中間表現を持たない。
GAME IIIとvtlも持ってない。
8bit手作り機が全盛の時代は割と多かったと思う。(というかそのころ中間表現持ってた言語が表にでてきてないだけなんだけどさ)
487:デフォルトの名無しさん
08/05/02 02:29:18
でもここで言う中間表現ってのは内部VMによる仮想マシン言語に落ちるかどうかって話なので
言語の語彙がバイト表現に落ちる(辞書的な意味ね)は入らないような気がする。
488:デフォルトの名無しさん
08/05/02 05:33:49
>>486
東大版TinyBASIC
URLリンク(www.pro.or.jp)
> このTiny BASICは、たった4種類の命令しかない中間言語によって動いているのであった。
489:デフォルトの名無しさん
08/05/02 11:38:58
>>488
その命令ってのはソース解析のプログラムの実装方法、NBAISCやAPPLE (6,10)K BASICの様に実行時や入力時に中間表現に落としているわけじゃない。
490:デフォルトの名無しさん
08/05/02 12:07:18
>>488
石田晴久氏の本(訳書除く)としては有用性がかなり上のほうに来そうな本だな。
今度どこかで見てみよう。藤原氏のページはざっと見たつもりでいたが、
それは見たことなかった。
491:デフォルトの名無しさん
08/05/02 12:30:08
>>489
kwsk
492:デフォルトの名無しさん
08/05/02 13:00:44
>>491
インタプリタ自体がそういう中間言語(風のもの)で書かれている。
ソースコードは直接解釈していたと思う。
493:デフォルトの名無しさん
08/05/03 17:44:40
2008年は「Common Lisp 再興」の年になる。
JavaScriptでLispのよさが「再発見」されたり、
ArcとかMonaOSのSchemeShellとかLisp系のネタがいくつか出たり、
Rubyで「継続」なんてのが一般的になったりしてきてる。
Java にも「クロージャー」なんてのが取り入れらた。
でも、みんな、何となくものたりなさを感じていないだろうか。
一見新しい技術に感心したり勉強したりしながら、
どことなく足元がおぼつかない、そんな感覚になったりしていないだろうか?
そう、みんなが本当に欲しいのは、標準であり、厳密な仕様書なんだ。
素人の作ったオモチャじゃあなく、学者によって精査された、分厚く、だけど、
学ぶべき価値のある整合性のある仕様書。
そう、みんな最後には Common Lisp に辿りつくんだ。
若者にとってHyperSpecは「古代」の言語仕様の再発見というだけじゃあない。
現代の高速・大容量コンピューター環境でのみなしえる、
新しい誕生、ルネッサンス、その入口なんだ。
「あれ?Common Lisp って思ってたよりとっつきやすいし、
しかもちゃんとした仕様もある。最近勉強会とかIRCとかもあるらしいし」
「HyperSpec って良く考えられる!これは凄い!」
「結局Common Lisp でいいんじゃね?」
今年はこんな年になるような、そんな予感。
494:デフォルトの名無しさん
08/05/03 17:46:41
(´・ω・`)今年なんてもう半分くらい終わってるがな…
495:デフォルトの名無しさん
08/05/03 21:37:53
Common LispがMacLispやInterlispの互換性を重視したこと、
今になって、受け入れられるために良かったことだと思いますか?
それとも仕様に混沌をもたらした悪いことだったでしょうか?