【入門】Common Lisp その4【質問よろず】
((お勧めの 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なら多少扱える。)
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))
read-lineするとさ
"文字列" ってかえってくるやん?
これって形式的には何になるんですか?
変数にうまくはいってこないんだよね
ちょっと質問から「うまくはいってこない」がイメージできんので、コードを見せてくれませんか。
テンプレ全部書いたら連続投稿規制にひっかかって前スレで案内できませんでしたorz
>>12 しくしく、それ一応テンプレにいれてあるのでございます、ショボーン
tspl入ってないな。
16 :
デフォルトの名無しさん:2008/01/30(水) 05:45:39
Aという親を頂点に、左下にBいう子、右下にCという子がいるだけの
簡単な木の関係がある時、これを(A B C)と書くのか、(A(B C))と
書くのか、どちらでしょうか。
>>16 そのリストをどう利用するのかにもよるけど
(A B C)はお勧めできない
どっかにヒープソートとかのソースが落ちてたら
そういうソースを参考にするといい
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)を実行すると、このように出るのですが、
どの部分を見れば、メモリの使用状況が分かるのでしょうか?
>>18 さてあなたのPCのメモリはいくつでしょう
>>19 roomで出てくる数値は、PCのメモリとは関係ないみたいなんです。
2GのPCでやっても、1GのPCでやっても同じ結果が出てきます。
GCLを起動した直後のroomの数値と、
メモリを大量に食う関数を実行した後のroomの数値を比べて、
どこを見れば、メモリの使用量がわかるのでしょうか?
pageという単位が、2,048バイトなのはわかったんです。
pages for cellsのとこを比べればいいのかな?
22 :
デフォルトの名無しさん:2008/02/04(月) 19:54:37
>>22 前スレのコピペなんで俺に聞かないでくれ。
>>前スレの1の中の人解説よろ
今日会見してたよ
すいません。lispのマクロは最強でほかの言語では真似できないそうですが、
具体的にlispマクロ最強を実感できる例を教えていただけないでしょうか。
最強とか実感とか、痛い言葉が並ぶなあ。
だと君に吹き込んだ奴にきくのが一番じゃないの。
失敬。
だと → 最強だと
「Lisp マクロ」で検索して出てくるコードの大半が、
じゅうぶん「ほかの言語では真似できない」ことをやってるから、それを眺めるといいよ。
私に吹き込んだ奴も本でそう書いてあるのを読んだっていうだけで
よくわかってないみたいです。
>>28 おっとすいません。リロードしてませんでした。
検索してみます。
31 :
デフォルトの名無しさん:2008/02/08(金) 15:42:22
結局パワーズってだれさ
オースティン
2000万
グレートチキン
おむつ
やべぇええSchemeに浮気しそう...
継続を明示的に扱えるCommonLisp実装系ってないのですか?
(ひょっとして明示的に扱ったらANSI仕様違反?)
マクロの実装はOn Lispに書いてあったけど,色々不便だからなぁ
CommonLispで面倒ならScheme使えばいいんでないの?
cl-contとか色々あるけど、多分36は「色々不便だからなぁ」っていうと思うよ。
新スレに成ってから壊れ方があまいなぁ
離脱者多数?
最近だと Scheme から入る人が多いのに、珍しいね。
>>36 一旦乗り替えてみればいいじゃない。Scheme もやっといたほうがいいと思うよ。
別にどれか一個を選ばなきゃいけないってわけでもないし。
継続なんて飾りだよ。
男は黙って compile & disassemble、速さこそ正義。
速さがそれほど重要じゃない局面ってのもあるからねぇ
そして、継続がそれほど重要な局面ってのは少ないからなぁ
ファーストクラスじゃなくてもフロー制御くらいにゃ使えるしな。
Javaの世界でも継続~ってなフレームワークがあるくらいだし。
まぁ、一度はSchemeをやっとくべきだと思う。
CL をやっていて Scheme を知らない人は殆ど居ないんじゃないかな
その逆はかなり多そうだけど…
>>44 そうだね、漏れもそう思う。
全部が全部、Gaucheの影響とは思わないけど、
そういう点では、Gaucheって偉大だなと思う。コミュニティも活発だし。
まあ偉大な大黒柱があってのこととも思うけど。
CL界隈ってコミュニティっていったらxyzzy方面くらい?
とりあえず日本のCommon Lispコミュニティ
活性化のためにもIRCチャンネルでも作らないか?
チャットとなると
貴様らはすぐにプログラミングとは別の話題ばかりで盛り上がる
そんなことよりcommonlispで何が出来るんだ?
>>46 私はもうジジイなのでメーリングリストとか時間差をカバーできるのがいいなぁ。リアルタイムはキツイ。
>>47 とりあえず私の必要とするプログラミングのタスク一般、数値計算、データ分類は普通にできてるね。
でも煽るならもっと最近流行の言語で煽ったほうが喰いつきがいいと思うよ。
>>42 そしてschemeが遅いわけでもない
Cより速い実装ってかなったっけ?
stalinとか?俺ぁ別にSchemeが遅いとか言う気もないけど。
これからLisp始めようとしてる自分にとってチャットはwktk
#scheme-jpは過疎ってるぞ
Lingrとかどうなんだろうね。
一応過去ログも追えるみたいだけど。
>>48 流行ってないのか?
流行って?
オッパイソンの事?
入力されたS式をXMLに変換するときって
どんな風に書けばいいのですか?
(S式をXMLに変換 入力されたS式)
58 :
デフォルトの名無しさん:2008/02/20(水) 12:06:00
Javaで遅延評価ってどういうふうに書けますか?
delayとforceを作ればおk
クロージャから外の環境へのアクセスにfinal縛りがあるから、
ちょっと不自由だけど。
lispってWin32API使えるのですか?
62 :
デフォルトの名無しさん:2008/02/23(土) 21:02:21
LISPでGUI使ったWindowsアプリケーションなんて作れるのか??
64 :
62:2008/02/23(土) 21:14:10
え~~~
うーそーだー
どこにもやり方書いてなかったぞ~~~
Tk使えるだろ
>>62 もっと簡単にやりたければLWかACL買えばいい。
それ以外ならLTKかSDLでやる。
67 :
デフォルトの名無しさん:2008/02/25(月) 11:49:12
Lispってハードウェアよりの処理はできるの?
>>67 FFIでラッパーライブラリつくれば何でもできる
>68
そりは実質、ハードウェアよりの処理はほとんどの場合に
C(/C++)でやってるのではw?
まあ、そういう低レベルの処理は高級アセンブラであるところの
Cで行うのが正解だけど。
Lispでコードジェネレータ書いて生成したコードを直接コール出来るようにしれ
Movitz か MonaOSか、ならできるんじゃね?
おれはヘタレだから試したことないけど…
>>71 MovitzはしらんがMonaOSは無理じゃね?
だってシステムコールとしてScheme使ってるわけじゃないだろ
ただシェルがSchemeというだけでしょ.
やっぱりLispのVM上でOSを書かないとだめじゃないか?
言語と実装を混同してるんじゃないか?
システムコールをサポートしたScheme処理系があれば同じ事だろ。
Cだってシステムコールのサポートは言語じゃなくて実装の領分じゃん。
システムコール(レベル)が「ハードウェアよりの処理」か。
人によって感じ方が違うもんだな。
俺の感覚では「ハードウェアよりの処理」とはDLLやデバイス
ドライバでハードウェアを直叩きする事だとつい考えてしまう。
で、Lispでそんな物を書いた例と言うのはあるのだろうか?
>>74 ガーベージコレクタで処理が中断されることがある言語で、
タイミングにシビアなハードを直接制御するのは一般には
難しいだろ。
今時のOS上でハードウェアをたたきたいとか言うのはデバイスドライバも書けない能無しでしかないと思う。
それ以外の状況でLispと言う選択肢が有ることはもっと異例だしな。
「ハードウェアよりの処理」をしたいあるいはハードウェアを直叩きする
処理(DLL、デバドラ等)をある言語で記述したいと言う話とある言語で
記述したアプリケーションのレベルからハードウェアを直叩きしたい
と言う話は全然別問題だと思うが。
実際Cではアプリやらデバイスドライバやらもろもろ書かれているわけだし。
Lispがそういう(低レベル)処理に向いているとはあまり思わないけど。
ハードウェアを直接意識しないで済むように、
俺たちは高級言語を使ってるんじゃなかったのか?
下の方を触りたいなら、用途に適した言語使えばええがな(´・ω・`)
「Lispではデバドラが書けないからLispはクソ」って
言いたいだけちゃうんか? な人が湧いたと聞いてry
Lispでデバドラは無いわw
SYMBOLICS とか LMI とかのマシンのデバドラって何で書いてあったんだろう?
Lispでデバドラはかけるね
マルチスレッド処理を可能なLisp処理系ってありますか?
>>85 あります
たとえばLispでJavaを実装すればマルチスレッデできます
>>86 かなり無理があると思うけど・・・。
何か自分の質問が間違っている気がしてきた。
>85
商用のLisp処理系なら大抵できると思う。
AllegroとかCormanとか。
Freeの処理系は良く知らないけど。
89 :
デフォルトの名無しさん:2008/02/27(水) 17:10:32
Lispはマクロを使って少ないコードでプログラムが作れます
On Lisp読んだ?
あそこに少ないコードで言語実装する例が示されている
JavaでLispを実装するのは有名な話だね
LispでもJava実装簡単モーマンタイです鯛
>89
でも>85は「マルチスレッド処理可能なLisp処理系」が欲しいんだろ?
例え中身はLispで実装されてるとしても
「マルチスレッド処理可能なJava処理系」が欲しいんじゃなくて。
自分で「マルチスレッドに対応してないLisp処理系」を使って
「マルチスレッドに対応しているLisp処理系」を実装しろってか?
それはそれで偉い大変な話のような。
>>85 最近調べたけど、大抵の処理系には付いてた。
対応してない処理系でも、user-levelなスレッドの実装もあるみたいだから、
Common Lispな処理系ならそういうのを使えると思う。
92 :
85:2008/02/27(水) 18:26:42
>>91 あくまでもユーザーレベルなんですね。
xyzzyを使っているのでそれで調べてみます。
ありがとうございます。
>>92 何でそういう話になるんだ。ちゃんと読んでくれ。
例えば、SBCL辺りはネイティブスレッドだよ。
ただ、pthreadをベースにしているようなので、
Windowsではまだ対応してないようだ。
xyzzyってことは、Windowsユーザでしょ?
OpenMCL(Clozure CL) もネイティブスレッドを使えるよ
ネイティブスレッドを使いたいなら SBCL か OpenMCL しかない
ECL とか SCL も忘れないでやってください… > ネイティブスレッドサポート
Scieneer って誰か使った事ある人いるのかな?
>>79 > 下の方を触りたいなら、
(*´Д`)ハァハァ
98 :
デフォルトの名無しさん:2008/02/28(木) 15:26:18
>>92 ちょっと待て
xyzzyよりXYZドラゴンキャノンのほうがいいと思うが
>>98 マジレスするとzyってのはドラゴンキャノンの略です。
どんな略し方をするのだ
ANSI COMMON LISPを読みはじめたのですが、
初めの、ランレングス符号化?で nextが使えるのはなぜですか?
call-next-method だとおもい、書き換えたら動いたのでこっちが正しいと思うのですが…。
お願いします。
>>102 それだと持ってる人しか答えられないから
コードコピペしたほうがいいと思うよ
で、あれは let で局所変数 next に car lst を設定してる
, - ,----、
(U( )
| |∨T∨
(__)_)
ありがとうございました。letを見てませんでした。
105 :
デフォルトの名無しさん:2008/02/29(金) 12:45:22
WindowsXP でLispプログラミングの勉強したいんだけど
まずどうすればいいかさっぱり。
助けてLisper!!
106 :
105:2008/02/29(金) 13:28:07
いくつか無料で使える処理系があるのでそれを導入してください。
>>105 Ubuntuを入れて
sudo apt-get install clisp
するだけ
>>105 ntemacs+slime+clispにするか、
xyzzyにするか
好きな方を選んでください。
111 :
105:2008/03/01(土) 18:05:03
>>110 XYZはちょっと・・・
今の一軍エレメンタルヒーローで完成してるんで
>111
「エレメンタルヒーロー」って何?
"xyzzy"の名前の由来知ってる?
Wikiを読むとすぐ分かるけど、ちょっと面白いよ。
>>105 GCL or SBCL + ChezEdit-NT
114 :
105:2008/03/01(土) 23:17:03
>>111 俺のふりをするな俺のふりをw
xyzzyの本がジュンク堂池袋支店にあったから
読んでみたけど、
ショートカットキーで動かすのがデフォっぽいから
勉強にはclispがやっぱ一番ベストかなぁ
ていうかLispすごいね。
Lispの本読んだり、家でいじってたときは、
「戻り値を引数にしてさらに、その戻り値を~」とか
そんなんでプログラミングするとかアホちゃうかっ!!
って思ってたけど、今日帰ってきてJavaっぽい言語である
ActionScript3,0でプログラミングしてたら
「戻り値を引数にしてさらに~」ってやりたいのに
わざわざ一時的な変数つくって代入してとか
クソめんどく感じた!!
まだマクロとかλとかよくわかんないけど
すげームダが無い言語っていう感じは伝わった!
てか、Lispの書物少なすぎ
> 「戻り値を引数にしてさらに、その戻り値を~」
これって、できない言語の方が珍しくない?
>>113 SBCLってWINでまともに動くようになったん?
117 :
105:2008/03/01(土) 23:53:52
>>115 う、そうかもしれない。
やっぱJavaとかでnewが絡んだりしたら
一時的に変数に入れるのは普通かぁ…
>>114 >今日帰ってきてJavaっぽい言語である
>ActionScript3,0でプログラミングしてたら
ECMAScript は C の文法をまとった Scheme と言われている様に、
Scheme の次に Scheme っぽい言語の一つだよ。
見た目に惑わされてはいけない。
>>117 こんなのが望みか?
System.out.println(String.valueOf(new String(new StringBuilder().append('h').append("oge"))).intern());
JavaScriptにはクロージャがあるのあまり知られてないよな。
121 :
105:2008/03/02(日) 01:11:02
>>114 そ、そうなのか!
なるほど、「ハッカーと画家」って本に
Lispは良いプログラマーを育てるって言ってたことが
なんとなくわかった気がする!
って、Schemeなんて言語もあるのか…
色々あるんだなぁ。
ってSchemeはLispの方言の一つってどゆことだ??
んー…
Lispの書物少ないから今度はSchemeあさってみるね!
122 :
105:2008/03/02(日) 01:12:48
うお、書き込んだら一気にレスが!w
>>119 んーそういわれると、どっちが良いんだかわかんなくなってきた…
>>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は違うからね。
>>121 schemeだったら、gaucheが良いよ。
確か近々、gaucheの入門書がでるはず。
>>116 SBCLはWindowsではまだまだみたい。
学習用、ちょっといじってみるならOK。
なにしろ高速。Lispが遅いなんてこたぁないよ。
126 :
105:2008/03/02(日) 12:10:55
>>124 うっ!Unixで動くのか…
UnixってOSだよね?Windowsじゃ動かないかぁ
なんかEclipceで動くプラグイン的なものをみつけたので
それでやってみるね!
登場した頃、JavaScriptの見た目がC++に似てたからなのか、クロージャとかApplyとか使いこなしてる人って見なかったな。
ほとんどのプラグラムはCとかC++の延長で考えられてると思う。というか関数型っぽい考え方はされていないと言った方がいいか。
JavaScriptはフラナガンの本が出版されてから再評価され始めたんジャマイカ?Schemerにはアルゴリズムを流用できるから使いやすい言語だと思う。
向こう側のいいところは、どうやって実装するか理解していることだ
クロージャはクラスをネストすれば作れることを多くの人が知っている
>>126 GaucheはWindowsでも使えるよ。
ただしcygwinというパッケージを入れないとダメだけど。
cygwinなしでも動くようにしている人たちがいたと思うけど
どんな状態なのかは知らない。
たしかに泣ける
日の目を見ていたのはJavaScriptだけじゃなかったんだな
132 :
デフォルトの名無しさん:2008/03/02(日) 17:05:11
「ハッカーと画家」の著者が Lisp の派生言語 Arc を先日発表しました。
Windows、Mac、LinuxでMzSchemeと言う処理系を利用しているそうです。
Windowsなら、DrScheme(MzSchemeのGUI環境)を使って
Arcの処理系を導入できるようですよ。
GaucheはMingwで作られたやつもあるよ
JavaScriptのユーザってAjaxやDOMを使うのがやっとの人が多いのに、クロージャの作り方を多くの人が知ってると思うか?ありえないw
そいつらは「CとかC++の延長」にも「関数型」にも属さない「その他」だろう。
136 :
デフォルトの名無しさん:2008/03/02(日) 18:18:43
いいかげんスレ違いだけども。
著名なライブラリ(prototype.js, jquery, YUI Ext ...)
ならばそれなりに使ってる、関数返したり、apply 使いまくったりを
クロージャというなら、だけど。
ただ、IE6 で DOM イベントにクロージャ使うとメモリリークするため
(最新パッチなら直ってるのかな) 使う場合気を使ってたりする。
ECMAScriptスレ同様クロージャを勘違いしてそうな連中が大量に顔出してきたな……
「してそうな」じゃわからんよ。
自分以外は馬鹿ばっか、っていう思春期みたいな思考でモノ言ってるようにしか見えん。
>>140 >関数返したり、apply 使いまくったり
するのはレキシカルスコープありきの話なんだし、別段間違った理解でも
ないのでは?
高階関数の使用のことを「クロージャつかう」、っていうのが駄目ってこと?
まあ、CLじゃないからどうでもいいんだけどwwww
高階関数とクロージャは別の概念だから、混同せず、
きちんと用語を使い分けるべき。
JavaScriptの関数は全てクロージャじゃん。
あれグローバルコンテクストすらオブジェクトで引き回し可能だから
参照の最適化困難だし。
>>144 javascriptって名前のせいでclass特化な言語に見られがちだけど実際はプロトタイプ指向の言語なんでどっちかっつーとLispにもっとも近い言語の一つじゃないだろうか?
java,lispと比較したらオプティマイズやJITを行う場合Lispとあんまりアプローチ変えられないよね?
Visual Basic.NET VS Lisp
全面戦争勃発ニツキ応援求ム
URLも貼らずに釣りとな
148 :
デフォルトの名無しさん:2008/03/03(月) 17:48:05
チョンのあやかり創価学会
偽善者が政治活動、公明党
ニセ仏教、騙されバカ信者、池田犬作チョン大教祖様、さっさと死ねや
カルトキチガイ・創価騙されバカ信者
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
カルト・キチガイ・偽善政治活動・公明党
急速にスレの質が下がってまいりました
ここらで燃料投下しとく?
おk?おk?
よし俺にまかせろ
caddrの発音のしかたを教えてください
カッダー
じゃあcadddrは…?
カダッダー
カッダダダー
キャドディディアール
JavaScriptでクラス作ってみたよ。
なんかCLOSっぽいな。
>>153 キャドゥドゥドゥル
ずっとスクリプトは VBScript で書いてたんだが、Visual Studio 2008 で
JavaScript をサポートする (インテルセンスとかが効くようになる) と書
いてあったので、なんかの展博の時にマイクロソフトの説明員に「もう、
VBScript は、やめるんか?」って聞いてたら、すごく困ってたがしつこく
聞いたら「まあ、そう言うことです。」と言う答えだった。
と言うことで、これからは JavaScript に転向しよう...。
って、ここ JavaScript のスレじゃなかったな、すまん。
関数がATOMかどうか知りたいのですが、
(atom 'cdr)
t
(atom #'cdr)
t
上はシンボルがATOMで、下は関数がATOMって事で良いんですよね?
(functionp 'cdr)
nil
(functionp #'cdr)
t
ところで、CLの半分の実装を含むCのライブラリがあるという噂を聞いたのですが
どこで手に入りますかね?
functionpだったのか。
知らなかった。
#'が関数渡しだって事が思い出せて良かった。
161さんありがとう。
lispってたまに思い出したようにやるんで、いっつも忘れてる。
Guy Steeleって、Common LispとJavaの仕様を作ってるけど、思想的に全く別物だし、どちらが優れていると考えているんだろうね?
javaの方が新しいから、SteeleはJavaの方が優れていると考えているのかもと私は思う。
Guy Steeleの頭カチ割って中見てみたい。
答えはFortressで!
>>48 数値計算とかcommon lispでできるんですか?
どんなコードなのかかなり興味あります
lapackを呼ぶとか?
>>163 JavaはC++と競合させるためにつくったもので、Lispと競合するものではないって
どっかでいってたよ、GLSが。
どこでいってたんだっけねえ。
物事を脳内で比喩する時に
lispで考えてしまう人は居ても
Javaで行う様な人は居ないと思う。
>>167 オブジェクト指向はいると思う。
自分はそれです。
Lispは人生で4回は挫折しているから、Lispで考えるってことは無いな。
Lispはある程度覚えても、使わないからすぐ忘れる。再帰とかのアルゴリズムは覚えてるんだけどね。
>>161 ECLかな?
ttp://ecls.sourceforge.net/ 素人なんでどれだけ実装できてるのかわからんのだけど
ちっちゃいしWindowsでも簡単にビルドできたんで
最近これで勉強してます。
LispのコードをCに変換できるのが面白い。
あと.NETシェルで作れるHyperSpecのCHMが便利。
>>170 それだったかもしれない。
でも案外いろんなところで言ってる気もする。
Frotressのインタビュッーでは、Fortressで科学計算コミュニティに
JavaがCコミュニティーに果たしたような効果をもたらしたいっていってた。
すみません.質問です.
packageのlockってどのような場合に使用するのでしょうか.
また,
(without-package-lock()
(load "path-to-file")
...
)
とするとロックが無視される?のでしょうか.
>>172 ご明察。その通りです。
でも、余程の事がない限りパッケージロックを破るよりは、
別にパッケージをつくったりシャドウしたりする方が良いと思われ。
172です.
>>173 コメントありがとうございます.
Lispの場合プログラムを配布する際にはロックをかけるものなのでしょうか.
処理系のCLパッケージのようにc再定義されると困るようなもの
(carやcdrが再定義されるとこまるetc)には掛かっていますが、
普通のものには殆ど掛かっていないと思われます。
また、パッケージのロック機能自体オプションだったと思うので、
処理系依存です。
172です.
>>175 > 処理系のCLパッケージのようにc再定義されると困るようなもの
なるほど,そう言うことですか.
toplevelとpackageで混乱してます.
もうちょっと勉強してきます.
ありがとうございました.
177 :
デフォルトの名無しさん:2008/03/21(金) 10:03:34
Common Lispは、Javaで言うBigDecimalのような十進数演算ができる
ライブラリや関数はありますか?
BCD より Bignum で小数位置を適当に自分で持ってあげたほうがいいんじゃないかな。
179 :
177:2008/03/21(金) 10:50:37
>>178 どうもありがとうございます。
やはりそうですか。
Googleで調べてみたのですが、見つかりませんでした。
180 :
デフォルトの名無しさん:2008/03/21(金) 11:12:05
表示は変かもだけどratioで計算するのでは不満?
181 :
177:2008/03/21(金) 11:31:12
>>180 お金が絡むようなWebアプリに適用できるのか(簡単に書けるのか)、
調べているのですが、ratioでも適用できると思いますが、
十進数演算を素直に記述できるような標準的な
ライブラリがあるのかなと思いまして。
maximaが大きい行列を実質扱うことできないと前に検索したblogに書いてあったのですが本当なのでしょうか?
大きいの定義は。
うんこ/おしっこ
Common Lispの引数の順番は統一性がないのでしょうか?
例えば
(etl オブジェクト インデックス)
(gethash キー オブジェクト)
となっていますが、
他の関数もこのように、てんでんばらばらなのでしょうか?
使っているうちに慣れると思うけど、なんだか美しくないなぁ。
186 :
185:2008/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.
と書いてありますね。
他の関数は大丈夫なのかな?
みんな一度は考える事だな。でもまぁ、ハッシュと配列アクセスの引数が揃うと何かすごい進歩がある、
というならともかく、気分で非互換にするわけにもいかなかったんだろう。
まぁ次世代のLispの時には揃うかもね。
あるいは↓のように自分でなんとかするとか。コンパイラががんばれば効率はかわらんはず。
;; c.l.l のスレより転載
http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/40e7f65f415b0cd3/ (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とか…
Common Lispは惰性と妥協の塊だからしょうがない
189 :
185:2008/03/22(土) 15:49:42
>>187 どうもありがとうございます。
リンク参考になりました。
>>188 やはりそうですか。
JavaやRuby等の、比較的最近の言語から見ると
関数名や引数の順番の一貫性の無さが気になってしまいます。
上の例のように関数名や引数の順番の一貫性の無さが気になったら
自分好みに変えられるのがLisp風。
むしろそこを気にかけてほすい。
気になった箇所を徹底的に自分好みに変更するのも勉強になります。
一貫性が無い、のは事実だけど、
覚えることがそもそも少いから、あまり気にしたことないなぁ。
「lisp」という単語でネットサーフィンしていたら「仕様記述からソース生成」などという言葉が出てきたのですが、ありえないですよね?
ただの電波ですよね?
その「仕様記述」とやらによるけど、厳密さが十分にあれば可能ですよ。別にLispに限らないけどね……
S式があるおかげでフォーマットに悩まないとかマクロのおかげでコード生成が身近というあたりが利点かもね。
でも、あいまいな仕様でもLispをつかうだけで魔法のようにまともなソースができあがる、なんて話ならありえない。
あいまいでない仕様などそう簡単に書けないし、激しく無理がありそうな気がします。
無理なものは無理だろうね。
元ネタがどこだなのかわからんから推測しか言えないが、厳密にかける世界の話だったんじゃないかな?
ファイルフォーマット解析とか状態遷移とかコンパイラとか、仕様を厳密に記述するほうが自力でゴリゴリコーディング
するより楽、という話ではないかな。
て言うか、「仕様記述からソース生成」なんて言うのは、文字列処理や
リスト処理がたくさん出てくるので、Lisp 向き。
と言う時代もあったけど、最近の言語はどれもそれなりに文字列処理や
リスト処理に不自由しなくなってきたので Lisp だからどうと言うこと
は少なくなくって来た。
>>197 実行時にevalがあるような言語だけじゃないかな?
lispだとマクロが化け物だから可能な領域ってのもあるからそこを前提にされると太刀打ちできない気がする。
>>192 仕様記述からプログラムが書けるとすれば、その仕様記述は(自然言語とかけはなれた)
曖昧性の無いもののハズで、それは完全にプログラムそのものだろ。
可能ちゃ可能だろうけど、それに何の意味があるんだ?
といつも思う。
発想が逆なんじゃないかな?
仕様を定義するほうが、プログラム書くより量的に少ない場合とか、
そうでなくても厳密な仕様をミスなく書き下す手間が自動化できてラッキーとか、
モデルチェッカとかでチェックした仕様をソースにできるとか、
図でプログラム読めない人(←でも業務とかその道のプロ)に漏れや抜けがないかを
チェックしてもらって、そっからミスなくソースができてうれしーとか。
そもそも実用になっていないって事が良くわかった。
いや、部分的であれば仕様記述からのプログラム生成は十分使い物になってるし、
実務でも使ってるよ。単なるちょっとした規模のマクロ、って意味だけど。
203 :
201:2008/03/23(日) 00:25:47
>>202 想像できないけど、実務で使われているなら納得せざるおえないのか。
DSL の一種と思えるのかな?
CでYaccとか使ってみれば想像できるようになるかも
>>205 それで想像できるなら正規表現使えば想像できる筈
そーいわれれば lex, yacc はそれに近いなあ
>>200,202
それをプログラムではなく仕様と呼ぶのは何故なんだぜ?
売り込みに来たヤツがそういってるから?
ずいぶん頭固いね。
仕様書って文章で書いた奴しか見たことないのかな。
と、まるで何かを見てきたふうなことを言ってるけど、別に何も見てきてないんでしょ?w
だから具体的に書けない。
>>209 とりあえず、199の時点で皆に膝を叩いて納得して欲しかったんじゃない?
だろうね。
>>199 厳密に書かないといけないのは確かだけど、意味がないわけじゃない。
例えば、今時特殊な状況を除けば普通高級言語でプログラム書くけど、これだって
当然曖昧性のないものでなのでアセンブラと同様に厳密に書かないといけない。
だからと言って意味がないわけじゃないだろ?
ループのためだけにラベル名を考えたり、ローカル変数のサイズ計算してスタック
ポインタから引くためのコード書いたりしなくて良くなるだけでも、ずいぶん楽だ
しコードの品質も上がる。
それと同じで、例えば通信やってる人なんかだと仕様書として状態遷移図とか、ス
テータスマトリックスを渡されたり、自分で書いたりする。
今はこれを見て「人手で」コーディングしてるでしょ?
で、仕様変更があったら再度コードを「人手で」修正してるよね。
この部分を自動化するだけでもかなり楽になると思わない?
& % #' などの略記一覧はどこかにないでしょうか?
emacsでcommon lisp開発環境作るとしたらslimeだけでいいのでしょうか?
>>213 > emacsでcommon lisp開発環境作るとしたらslimeだけでいいのでしょうか?
後はマニュアルを引きやすくしとけばいんでね
>>215 ということは変数名の先頭に%がついてたのは特別な意味はないのですね
さいきんLispに興味があります
普段何に使ってますか?
1. シェルスクリプト並にナチュラルに普段使いをしている
2. ある程度以上注意深く作るアプリケーションやモジュール作成の時のみに使用
3. 実用性を考えたら負けなものをニヤニヤしながら作ってて楽しい
シェルスクリプトとは違う意味でナチュラルに普段使い。
思いついたことをさらっと試すのに使ってる。
Emacs使いでないとわからん感覚かも
大体何にでも使うけど、シェルスクリプトなんて普段くまねーからわかりません。
>>222 >それ以上の話題
は残念ながら殆ど英語圏にあります。
ffi等は実装依存なので、まず使っている処理系がなにかを書くと適切な返事があるかも。
>>222 swigを使うのがわからないのか、ffiの使い方自体がわからないのか、どっちなんだよ?
swigは他の言語で使ったことがあるので大体見当がつきますが、
lispのサンプルコードで
cl:letと単純にletと書くのにどう違いがあるのか
などの記法が分からずつまづきます
ffiの使い方がわからないですpython.ctypesと似たようなものなのでしょうか?
>cl:letと単純にletと書くのにどう違いがあるのか
>などの記法が分からずつまづきます
これはCLのパッケージについて入門用のサイトで勉強すれば分かると思うので、
一歩戻ってパッケージについて学ぶことをおすすめしたいところ。
>>225 ffiは処理系依存だから、まずおまいさんが使ってる処理系のマニュアル嫁。
処理系にできるだけ依存したくないならcffiとかuffi使え。
でもswig使ったことあるならインタフェース書けるだろうし、
理解しなくても使えると思うんだが。
maximaを使いたくてpythonからclispに乗り換え挑戦中だ
maximaをアプリとして使うだけならCL知らんでも
(自分でCL使って関数書きたいとか言わなきゃ)問題なかろ。
>>228 Lispに愛が芽生えてきますた。
言語への慣れと理解によって大きく違うと思いますが、
Rubyと比べて、生産性は良さはどんなものでしょうか?
Lispは神が世界を記述するのに使った言葉。
最初に「光あれ!」とかやってたのは全部Lisp。
一方、Rubyはただのスクリプト言語。
Lispはconsセルの操作しかできないと思っていた俺は
CLOSを知った今、猛烈に感動している。
凄いなCommon Lisp♥
確かめてないが、見えない根っこのほうではconsセルの操作しかしてねーと思うぞ
236 :
234:2008/03/25(火) 11:19:24
CLOSどころか、defstructでも感動してしたYO。
>>235 そうですよね。
でも、なんだかとっても凄いぞCommon Lisp。
>>235 まあ、足し算とか引き算なんかもできないとスゲー困るわけで...
cons だけで数を表現して足し算と引き算とかは実装できるよ。
ラムダ計算の初歩ですよ。遅いけど。
Rと組み合わせられるなんて
最近は何見てCLOSを勉強してるんだろ?
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の直後に括弧が付く場合、何を意味することになるのでしょうか?
初心者丸出しの頓珍漢な質問だと思いますが、お願いします。
何でって言われてもそれがアクセサの定義の仕方だから。
もうちょっと具体的に説明すると CLtL2 のインヴァージョンをよく読むとよい。
OnLisp の汎変数の説明のところでもいいけど。
cmuclをemacs22+slime2.0で使っています。
キャラクタエンコードをutf-8を通す設定にしてslimeコンソールから日本語(に限らずutfで256以上の値を持つ文字)を食わせると
cmucl側からソケットが切断されてしまうのですがこの辺りを解決する情報をお持ちの方はいますでしょうか?
>>246 そもそもcmuclってutf-8通せたっけ?
248 :
243:2008/03/26(水) 20:49:02
>>244,245
Googleで調べていたのですが、このような機能をなんと呼ぶのかも
分からず、困っていました。
CLtL2 inversionで調べたら、出てきました。
助かりました。どうもありがとうございます。
>>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
>>249 windowとunixで
CLISP+emacs+slimeでutf-8でコードを書いていますが、
CLISPだと駄目ですか?
>>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)
>>246 これ自分も知りたいと思ってた。
自分が確かめた範囲では、下記の通り
*UTF-8で日本語が使えるかどうか*
--そのままでOKなもの
sbcl
clisp
allegro cl
clozure cl
--処理系で日本語は使えるけれど素のSLIMEだと切断されるもの
cmucl
ecl
lispworks
abcl
ちなみに「日本語が使える」ってのは処理系で表示できてる、位の意味で、
厳密には処理系ごとに事情が違ってます。
多分、処理系に応じたswank-~.lispを修正すれば良いんだと思うけど、
漏れは、挫折して、素でOKなものを使ってます。
253 :
247:2008/03/27(木) 11:07:58
>>249 > この例をcmuclでやるとコンソールから直に打ち込むとOKなのですがslime経由だと"多"が送り込まれた時にsocketがreset by peerになってしまうのです。
utf-8 で接続はできて、日本語を送ろうとしたときに接続が切れるの?
3日でclispを実用的に使えるレベルになろうと思って挫折した
憶えないといけないこと多いね
classの考え方が他の言語と違ったりするし
>>254 次に3日でマスタしようとして挫折する予定の言語はなんですか?
swank以前の問題でコンソールではたまたまアスキー越えた部分が
日本語になって出てきているだけじゃないか?
char-code-limitはいくつ?
Brainf*ck
>>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.
swank の方でも cmucl への接続時は iso-latin-1-unix 以外の coding だと
接続できないように書かれているから、そもそも utf-8 で接続できているのが
おかしいというか勘違いだろう。
>>259 ガーン、有難うございました orz
そうか、external-formatだけダメってのもあるのか,Release-noteはちゃんと読まないとだめですねぇ
(setq y '(1 2 3 4 5 6 7 8 9 10 11))
(defun visitor (x)
(+ (car x) (visitor (cdr x))))
(visitor y)
スタックオーバーフローで死ぬんですけど・・・。
xyzzyにて。
すまん。自己解決した。
(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)
ねらい通りのものができたので、記念書きこ。
(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)
一つの関数書くのに一時間以上かかってる。
鬱だ。情けない。
ま、最初はそんなもんじゃないかな
なんとなく別解を書いてみた
(defun visitor (x) (if (atom x) x (apply #'+ (mapcar #'visitor x))))
>>266 まさか同じ処理をするとは思えませんでした。
高階関数を使うとそんなにすっきり書けるんですね。
勉強になりました。ありがとうございました。
短く書くだけならこれで十分じゃね?↓
(defun visitor (x) (apply #'+ x))
…ってごめんよく読んでなかった、今のなしで orz
270 :
177:2008/03/31(月) 10:19:14
>>266 なるほどな~。
私もLispを始めたばかりなので、勉強になります。
数式処理(maxima)で
[x1,x2,x,3...]という記号(変数?)の列を生成したいのですが
defmacroを使うのが正しいやりかたなのでしょうか?
swigでc++ をwrapしてclispから呼びたい
swigのcffiオプションはcはできてもc++はできないみたいなので
Allegro Common Lisp用のものを生成して
swig -allegrocl -c++ example.i
ちょっと書き換えればclispやsbclで動くものになるんだろうか
ACLの個人向けライセンスの安いのだしてくれんものかのぉ。orz
こっちはACLのチュートリアルやってみてるところだけど、
ヴァージョンが違うからなのか、そのままのとおりにならないorz
親しんでもらって売ろうという気は無いのかなと思った。
どのチュートリアルの話ですか?
ANSI CL 規格の範囲内ならともかく、ACL処理系依存の部分なら
全バージョンで完全な互換性を保つ事を要求するのは酷なのでは…。
GNU clispつかってデータ処理してるんだけど
少ないデータをかませたらきちんと結果が出てくるんだけど
大量のデータをかませたら
APPLY: too many arguments given to +
[Condition of type SYSTEM::SIMPLE-PROGRAM-ERROR]
と出てくる.
スタックサイズか何かだと思うんだけど...どうやったらうまくapplyしてくれるようになりますかね?
エラーメッセージに何が問題か書いてあるんだけど、読んでから質問してる?
(reduce #'+ args)
>>283 282じゃないけど、こんな変数あるんだ、勉強になったよ
ちなみに手元で調べた結果(全部 mac os x 上)
clisp: 4096
acl: 16384
sbcl: 536870911
285 :
282:2008/04/05(土) 21:40:57
>>283 ほー。こんなのがあるのですか。
ありがとうございます。
こういうのはどのように知ったのですか?
283じゃないけど、漏れは282同様に派手にAPPLY→エラー→調べる→知る、という流れだったね。
ANSI 規格では最低 50 ときまってるので、50 個の引数までなら CALL-ARGUMENTS-LIMIT を意識せずに安心して使える。
おれ様用メモ。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
>>288 細かいことを言うようだが、正確にはすべて等号を含む、かな。
>>289 HyperSpecのぶ厚い仕様はダテじゃないのね、、、失礼しました。
>>290 (´・ω・`)
CL-USER> (+ 1 2)
3
CL-USER> (+ 2 3)
5
CL-USER> (+ 3 4)
7
CL-USER> (+ * ** ***)
15
こんな事ができるのね。
>>292 それ、便利だよね。
slimeとかじゃ使えんが。
294 :
292:2008/04/08(火) 12:47:38
>>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>
つかこれCommon Lisp標準の機能でしょ?
一番使うのは + 系だけどな
*も+もいいよね。CLで好きな機能の一つだ。
xyzzyでは使えないの?
自分で試せばいいじゃないか。
xyzzyはCommon Lispじゃないからしょうがない
>>301 とかは xyzzy に REPL があるという認識なのね。
オレにはその認識はなかったので、かなり新鮮。
欲しければ実装してやればいいんじゃね。
REPL よりも lisp-interaction-mode 改造の方が使いやすいかも
*scratch*に入力した文字は消え去ることもないし、他に履歴呼び出しもあるしで
別に苦労して* + /を実装する必然性も感じられないんだけどw
(let ((* nil) (** nil) (*** nil))
(loop
(setq *** ** ** * * (eval (read)))
(print *)))
*付きREPLってこんな感じ?ほとんど意味無いけどw
>>307 さほど苦労ではないから多くの処理系で実装されているのでは?w
多くの処理系には *scratch* がない
会話が成立してないな。ここは人工無脳たちも来てるから仕方ないけど。
(funcall
(car
'(#'test . ("arg1" . "arg2"))))
これが,
FUNCALL: #1=#'TEST is not a function name; try using a symbol instead
としてエラーが出るのですが,おそらくクオーティングされてるんだと思います.
これをfuncallでできるようにやるにはどうしたらよいのでしょう?
ドッドペアとはな。コンスセルの節約かい?
A: cons で対応
(funcall (car (cons #'test '("arg1" . "arg2"))))
B: バッククォートで対応
(funcall (car `(,#'test . ("arg1" . "arg2"))))
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の名前空間の扱いの違いを理解するには良い例かも。
質問者は名前空間というよりクォートについて聞いているのではないか?
(define (test) 100)
((car '(test . 100)))
はSchemeだってエラーでしょう。
元質問は、俺にもかけだしだった頃に似たような経験があるなぁ。
1. #' + シンボルで関数を表現する、という説明を聞く => やってみる '(#'test) うごかNeeeなんで?
2. #'test を「評価」すると関数になるんだよー ' でクォートされたものは評価されない
3. Aha!
>質問者は名前空間というよりクォートについて聞いているのではないか?
>>316 >関係ないけど、Sche...
と書いてますし、質問と関係ないことについては、ご指摘の通りですw
quoteを回避するってなら、
(funcall (cadar '(#'car)) '(foo bar baz))
って方法もあるね。
さらに横道に逸れるけどw
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)は関数が呼ばれるたびに
生成されると思ったのですが、どうして関数内で定義されている
リストが影響されてしまうのでしょうか。
漏れの環境では、再現しないんだけど…。
CLISP、SBCL
HyperSpec博士の出番だね。
(defun exclaim (exp)
(let ((lst (copy-list '(oh my))))
(append exp lst)))
でも同じ結果になるのかな?
321 :
319:2008/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していたのだと思います。
すみません。
common lispについて情報交換 質問などができるMLはどこかにないでしょうか?
>>322 MLでは無いですが、mixiにはコミュニティがありました。
この前見たときは8名ほどだったような。
日本語で情報交換できるMLがあったら私も知りたいですが、
このスレが一番活発だったりして。
>このスレが一番活発だったりして。
ありうるw
いまどきブログで書く人が多いからMLも活発にならないかもしれない。
そういってもcommon lispのブログもあまり見かけない気はするけどw
Common Lisp Night やろうぜ!
>>325 一晩かけてみんなでカッコを黒板に清書だな
LispDaysの中の人の更新がないしなぁ。
僕はとっても楽しみにしてるんで、日常だけでもいいから日記かいてくれないかなぁ。
去年ちょこっとcommon lispのブログが増えたけど、去年中に
大体がcommon lispnについて書くのやめちゃったね。
対してSchemeはあんまりそういう傾向はないみたいなんだけど。
なんでだろ。Schemeは教材が充実してるから学習日記が書きやすいとか、かな?
Common Lisperは仕事が忙しいんですよ
つまり暇な学生には人気がないってこと?w
ハテナ ダイアリィのcomon lisp groupでも作ればいいのかな
はてなにLisp系のグループは2つあるみたいだけど、うち一つは休眠中。
もう一つも登録者8人中、アクティヴなのは4人ぐらいしかいないみたい。
この現状でさらにもう一つCLersのグループを作ったとしても…
333 :
332:2008/04/16(水) 06:00:35
ごめん、訂正。他にSICPのグループがあって、こちらはけっこう人数がいるみたいだ。
「はてなにLisp系のグループは2つ」というのは間違いでした。
Common Lisp ブログ、何でもいいから沢山あるといいね。
新仕様 Common Lisp The 3rd とかあると盛りあがるんだけど。
>>334 > 新仕様 Common Lisp The 3rd とかあると盛りあがるんだけど。
その仕様にフジコちゃんは入ってますか?
不覚にもワラタ
Common Lisp は大事なものを盗んでいったんですねわかります!
>>332 別に沢山あっても良いと思うけど、纏まってないといけない理由もないだろうし。
CL専門だったら漏れも登録したいと思うよ。
もしくは逆にテーマを限定してCLOS専門とかねw
hatena diaryのweb リングのサービス終了ですか
common lispのグループは便利だった
>>339 同意。グーグルが勝手に拾ってくれるから、必要なのは
Webに書くときには単に Lisp ではなく、ちゃんと Common Lisp と綴ることだと思う。
だれか「CLOSプログラマーのためのJava入門」とか書いてくれたら嬉しいんだけど。
俺のサイトはグーグル拾ってくれない…
まあ CLOS の事は書いてないけど
>>343 宣伝しなきゃですよ。ここへURLを晒すとか。w
>>342 CLOSとJavaて水と油ですやん。書く奴がいるとは思えない。
「CLOSプログラマーのためのC++入門」ならまだ分かる。
両方generic function萌えなので。
>>345 generic functionという用語だけ同じでも中身別物じゃんかw
いや、まず、CLOSプログラマがCLOSについて書くべきだろw
CLOSって何で流行らないのかな
マクロとCLOSってめちゃめちゃ強力な気がするんだけど(まだ勉強中)
そう思えるのはS式に抵抗がなくなりつつあるからでしょう。
Lispやる前を思い出してみると、マクロと聞くとCの#defineを想像したり、
大量の括弧をみただけでダメ出ししていたりしませんでしたか?
>>346 二大「特殊化」言語だよ。
コンパイル時か、実行時か
before/after daemon
大きく違うのはこのくらい。
>>350 Common Lispが流行ってませんので…
けどC++にかなり大きな影響与えてる。
C++の方は特殊化に関する部分だけでも、
まだいろいろと拡張を続けてる。
Generic programmingやaspect oriented programmingの
源流の一つだね。
>>353 > 大きく違うのはこのくらい。
それに起因して違いがありすぎるだろ。別物じゃねーか。
>>345 Java:だいたい全てがオブジェクト,Guy Steel Jr が参加
CL:全てがオブジェクト,Guy Steel Jr が参加
同じだ!JavaとCLはほとんど同じだよ!
Javaはガチガチのクラス指向だからなあ。
jvmの上で動くCommonLispがあればいいんじゃないか?
コンパイルもバイトコードに落ちるようなの。
>>357 Armed Bear Common Lisp (ABCL) が既にあるけど何か?
>>358 アンテナ壊れてたよ、ありがと.
週末に試してみる。
>>341 そうだね、MOP全般ってのも良いかも。
とりあえず、CLOSの情報が増えさえすれば良いんだし。
CL、Gauche、他にどういうのが対象言語かな。
サイトの宣伝していいの?
common lisp packageで検索してくる人が5人/day
ぐらいのサイトだけど
日に5人もCLパッケージで迷える子羊がいるんだなw
ANSI Common Lispでもパッケージの解説は親切でないかもね。
パッケージはCLtL2(≒ANSI)で大きく仕様が変わったせいで少し混乱してるね。
CLtL2の記述を見ても、GLSは新しい仕様があまり好きではないのではないかと思える。
混乱っていえば、ANSI、cltl1、cltl2の関係も混乱するね。
仕様について言うなら、とりあえずANSI(HyperSpec)を規準にすれば
良いんだろうけど…。
HyperSpec翻訳されないかなあ。
やっぱり、みんなHyperSpecを一番読むわけでしょう?
有志で、オンラインで翻訳しまくるというのはどうか。
もちろん許可がとれれば、だけど…。
>>364 とりあえずさっと確認したいときはHyperSpecだね。
じっくり調べるときはCLtL2を開いてGLSの名調子に浸る。w
おれ常にHyperSpecしか見てなかったよ
>>364 よく知らないけど、HyperSpecってどこかが権利もってんだよね?
何かまるごとダウンロードしようとして躊躇した記憶がある
>>366 丸ごとダウンロードは別に問題ないんじゃないの?
圧縮されたファイルで用意されてるし。
むしろ皆でlispworksに押しかける方が無茶な気がするが。
そうだ JIS Common Lisp を作ればいいんだ
JISか…。
ISLISPってのがあるけど、割と日本が果たした役割は大きかったらしいよ…。
ほとんど忘れ去られている悲しい規格だな>ISLISP
>>367,368
おお、ありがとう。法律用語の読みかたが自信なかったんだよ。
これで遠慮なくHyperSpecを読みこめるよ!
>>369 ECMA Script の JIS みたいに「引用」だけで済まされる、というオチが見える
少なくともANSI相当のものが日本語になるんじゃね?
いや、何故かISLISPが元になってJIS LISPができそうな気がする
どうやら、漏れは過去を予言してしまったようだなw
JIS Prolog なんてもっとマイナな感じだな
JIS規格文書はJISが権利を持ってることになる。
翻訳が現れることは望ましいけれど、JIS化はあんまりよろしくないと思う。
後、誤訳してもJIS的にはそっちが正しいことになっちゃうしな。
>>379 無料で閲覧できるようになったのは進歩だけど、印刷はもちろん、検索さえできないのがアカンよね。
海外やISOの規格事情も似たようなもんだけどね。
印刷は頑張れば出来るw
検索も自分用はOCRソフトで・・・w
>>381 印刷禁止フラグは簡単に解除できる。
ム板住人ならみんなやってると思ってた。
ただ、ウェブで見られるPDFは文書をビットマップ画像にしたものを貼り付けてあるので、
検索はOCRを使わないと仕方ない。
印刷して使うっていう発想がなかった。
ちなみに有料(ダウンロード販売)の規格票もビットマップ画像だよ
>>386 検索できないんじゃ紙で売った方がいいよねぇ。
電子化の意味が有体物じゃ無いことだけじゃないか。
それが日本クオリティ...なのか?
ANSIの電子化ってどうなんだろうね。
>>388 金出せばやるだろ。お役所なんてそんなもんだ。
D&Eで規格団体のクソっぷりが書かれてたから、アメリカでも事情は同じだと思う。
全部RFCになればいいのに。w
>>391 4/1版でマジ切れとか鵜呑みとかの間抜けな人がいるから全部はヤダ
clispで型推論が無いのはなんで?
型推論のどういうメリットを期待してる?
>>394 コンパイルしたときのエラーと
高速化かな
>>395 それをインタプリタの clisp に期待するのは何故?
>>395 せっかくオープンソースなんだから、君が書き加えてあげれば喜ばれるかもよ
・オープンソースの法則
何故か誰も修正しない
俺は自分で気付いたものは割と修正するけどな。
わずかな努力で割と多くの人の役に立てる(ソフトのユーザ人口によるけど)。
elfやcoff操作するライブラリが欲しいんだけど、どこかにないかな?
binutilからBFD抜き出してライブラリにしてラッパ作った方が早いかな?
xyzzy上のLispではwhileという関数がありますが、Common Lispにはありません。
closの使い道がいまひとつわからない
最短時間で(汚く)プログラム組むのに
namespace
分かりやすい名前で defun
map
あたりは使う
すでに組んでしまった汚いコードを無理やり他のプログラムとくっつけるのに
マクロは少し使う
はじめから綺麗に書こうと思わないかぎりclosは使わない?
>>401 一言で言えば xyzzy は Common Lisp ではない、というだけ
>>402 細かいこと言うと、関数じゃなくてマクロね
white(笑)
for(笑)
white って何よ
>>401 whileの方が簡潔にかけるからwhileがいいんじゃない?
CLだとloopとかdoだけど。馴染みのない人にはdoとか嫌われるしね。
whileはemacs経由でxyzzyに導入されたのかしら。
>>403 割と後づけだし、資料が少ないんだよね。
Paul GrahamとかPeter Norvigとか有名な本書いてる人達が
CLOSをプッシュしてないこともあって自著でも
CLOSの解説とかあんまりしてないし、CLOSは何だか不運に感じるなー。
それと、汚く書くってことなら、CLOSは相当なものを書けるとおもうけどw
>>409 CLtL2でも他の章はGLSの蘊蓄炸裂なのに、CLOSのとこはANSI原案丸写しという感じで
やる気が感じられないよね。
おれも素人だけど、
・いろいろ状態を持ってるオブジェクトっぽい何かがある時
・既存のライブラリがclosで出来てる時
・似たようなプログラムが沢山できそうな時
はclos使おうと思うなぁ。
schemeの話だったかもだけど、shiroさんがある規模より大きくなったら
オブジェクト指向を使いたくなる、みたいなこと書いてなかったかな?
>>411 > ・既存のライブラリがclosで出来てる時
おれはこの時だけ使いたくなるなぁ。
Allegroみたいな商用だとclos使ったライブラリ揃ってるっぽいけど、
普段あんまり見かけないから相対的に出番が少なくなるよね。
clos使わないと混乱するほど巨大な物書いたこと無いから正直使い処がわからんです。
うーん、CLはマルチパラダイム言語なわけで、
CLOSはそのうちの一つのパラダイムな訳だから、
規模云々より単に手法の一つだと思うんだけど…。
小さい規模でも綺麗にまとまってるのも沢山あると思うよ。
身近な例で言えばASDFとかどうだろう。
CLOSがあまり使われないのは、
基本関数のスタイルとCLOSのスタイルがちょっと違うからかも。
CLOSセントリックに書き直したLisp方言も面白そう。
とりあえず defstruct よりは defclass かな、という程度だね。
typecase でディスパッチするよりは defmethod を使うという感じ。
defun をやめて、すべて defmethod を使うというスタイルにはなれないな。
ま、便利なときだけ使えばいいんじゃね?
lambda式直使いとmulti dispatchの相性が悪い。
そうなの? どういう局面で?
無名総称関数はANSI仕様から消えちゃったけど、それのこと?
なんか急に流れが止まったな
>>414 へー、asdfってCLOS使ってるんだね。参考になった。
>>412 おれはこの前AllegroのSAXライブラリ使ったよ。
allegroserve もCLOSの例として面白いかも。
思い付きだけど、
がちがちに仕様が決まっているものを実装するときCLOSを使うといい、
という説はどう?
どうだろう…。
個人的にはガチガチに仕様が決まったようなプロジェクトでも
Lispがバンバン採用されるようになることを祈りたいw
sbclをアンインストールする方法はないでしょうか?
finkを導入した所リストの中にsbclが有りそちらで一括管理したいので
サイトから直接ダウンロード&インストールしたsbclをアンインストールする方法を
教えていただけないでしょうか?
よろしくお願いします
漏れが確認したところでは、特にアンインストールのスクリプトはないみたい。
なので、手動で削除する他ないのかな?
といっても/usr/local/lib/sbclと/usr/local/bin/sbclを削除するだけのような
気もするけど…。
単純にパスの設定を/usr/local/より/sw/の方を前にもってくるとかじゃ駄目なのでしょうか。
別にlispに限った話じゃないけど、自分でインストールするなら
インストールのログくらい取っておけよと思う。
>>423 まあ、その辺りがUNIX文化とWin/Mac文化の違いというところでは?
アンインストーラを使わずに
適当に実行ファイルを消したらシステムの整合性が崩れて
面倒ことになる、と思ったのかもしれないし。
>>422 ありがとうございます。
コマンドラインから検索した所
そのフォルダがヒットしましたので削除したいと思います。
>>423 今後そうしたいと思います。
精進いたします。
>>424 やはりその不安が有ったのです。
今後プログラミングの学習はマスターできるまで
仮想のlinux上でやりたいと思います。
426 :
421:2008/04/30(水) 17:28:37
/usr/local/share/man/man1/sbcl.1
というディレクトリが有るのですがこれの
man1というディレクトリはシステムのフォルダですか?
それともインストール時に自動的に作成されるものですか?
よろしくお願いします
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:2008/04/30(水) 19:40:59
>>427 ありがとうございます
また一つlinuxの先進性を学びました。
ん?
>>421 は何か勘違いしてる?
Mac OS X はLinuxより遅れている訳でも仮想のLinuxでもないぞ。
ソースをコンパイルしてsbclを入れたんだったら自分の責任っしょ。
まあfinkにせよ何にせよ、がんばって使いこなそうぜ。
自分でコンパイルするときって日本語コードを内部でどう扱うかも指定できるの?
処理系がそういう風に作られてるか、ソースいじれるスキルがあれば指定できるんじゃね。
内部なんて気にしなきゃいいじゃない。
気にしなきゃいけないとすれば、それは内部ではない。
ここ基本的に初心者スレだから勘違いする人がいるとアレなんで
一応書いとくけど最近の処理系は、external-formatで指定できるので、
使う文字コードに合せてビルド時に文字コードを指定しないと
「日本語が使えない」、ということはない。
内部でどう扱うかビルド時に指定できる処理系は、漏れは知らない。
基礎の基礎なんであきれられると思うのですが
lispは処理系の上で実行する他はないのでしょうか?
例えばCなら実行ファイルが作成できてそこから実行することでちょっとした計算を
行ってもらったりできるのですが
lispはコンパイルするとファイルができてそれを起動した処理系にロードして
関数を実行というステップを踏まなければなりません
そうすると実行までのステップが増えてしまうのですが
lispでも実行ファイルのような形式を作れないものでしょうか?
作れるよ
作り方をご教授願います
なぜこのような疑問を持ったのかと思いますと
『ハッカーと画家』などを読んでいて
lispはソフトウェアを書くのに良い言語だなどと書かれているので
(Lisp・・・・インタプリタでしか実行できないと思ってるんだけどな?
いちいちインタプリタを呼び出す訳じゃないよな?)という疑問が浮かんでしまったのです
Lispは美しい言語なのでそれでソフトをかけるととてもうれしいです。
よろしくお願いします
Lisp コンパイラ でぐぐれ
>>438-439 ありがとうございます
実は使用している処理系はclispなんですが
(compile-file "hoge.lsp")
を実行すると
hoge.fasとhoge.libというファイルができhoge.oのような
ファイルが一向にできそうに有りません。
これはclispの独自なのでしょうか?
clispはインタプリタのやじるしの形が気に入って使っているのですが
sbclに移行すべきでしょうか?
よろしくお願いします
>>440 CLISPは中間言語に落とすコンパイラだからね。
gclとかsbclとかはネイティブに落とすよ。
>>441 なるほど!!
ありがとうございます!!
このすれの皆さんには夜中にお手数おかけしてしまってすいませんでした
sbclで試した所
今度はhoge.faslというのができたのですが・・・
どうすれば良いのですか?
コンパイルしたらfaslになるのは当然だよ
たぶんおまいさんがやりたいのはスクリプトをexeにしたいんだろ?
save-lisp-and-dieってのをぐぐってみな、exeにはなるw
もっと小さいサイズで作りたいならnewlispってのもある
作りかたはnewlispのマニュアルにある
そのぐらいは自分で読んでみような
>>444 例えば
(defun alladd (x) (if (= 1 x) (+ x (alladd (1- x)))))
とかの関数を作っておいて hoge.lとして保存しておいて
コマンドラインから./hoge 3 などと実行できるようにできれば良いと思うのです
さんざん二転三転してすいません
大変そうなのでexeはあきらめることにして
faslとはどのように使えるファイルなのでしょうか?
よろしくお願いします
何となくわかってきました
コードに必要な関数を書いておきコンパイルすると機械語に変換されて
高速に実行できるようになる
それをインタプリタにロードしてそこで関数を使うなどすることができるということで
良いんでしょうか?
作ったファイルはもし仮にコマンドラインから使いたければ
上部に
#!/hoge/hoge
などと書いて使うということで良いのでしょうか?
>>437 perl/PHP/ruby/PythonとかJavaとか使ったことある?
Lisp はインタープリタ言語だという嘘情報は誰が流してるんだろう。
勘違いしてる奴多いよね。情報処理の教科書にでも書いてあるのかな。
>>448 たぶんこの質問してきた人はスクリプトをエディタで書いて
それをインタープリタに食わせるってことを知らないんじゃないかと思う。
別に無理してexeにしなくてもスクリプトを実行させるバッチファイルを作って
それをクリックすればいいのにね。
配布とか考えてるならlisp自身もいっしょにつければいいし。
>>448 それを使ってきて
最終的にLispです
>>449 違うことはわかっているのですが
どうして良いやら
>>450 (load "hoge")
ですか?
>>450 sbcl hogeですね
ありがとうございます
>>449 >Lisp はインタープリタ言語という嘘
というより、対話操作ができるものは、コンパイラ言語じゃない、
という理解なんじゃない?
というか、Lispとか曖昧に一括りにまとめて書く方も悪い気がするけどな。
言語仕様にトップレベルループの細かい部分がある珍しい言語だからね。
ただ、「インタープリター言語」って言葉はおかしいね。
そんな言葉どこに書いてある?
インタプリタとコンパイラ、と言う対比にすごい違和感がある。
部分計算屋さんですかw
インタプリタ言語とかコンパイラ言語って
ダメな教科書にはさくって書いてありそうな気がするけどな
コメントするのはググってからでも遅くないぞ
言語ごとに、どっちなのかが決まっていると思っている人も
結構いそうだからなぁ。
中間言語にコンパイルしてそれをインタープリトする奴もあるしね。
漏れもかつて >435 と全く同じ事を疑問に思ったよ。
自立したEXEを作れないコンパイラ(を持つ)言語ってあるの?ってな。
昔々のBASICでもライブラリモジュールを付けて配布すれば良いだけの
EXEを作れたもんな。
再配布する際は言語処理系ごと再配布して(つまりユーザーに処理系を
インストールして)くれとか、ライブラリ再配布用のライセンスが
処理系の値段とは別立てでバカ高いとか、何だソレはと思ったよ。
(ある商用処理系の場合)
そんな「コンパイラ(を持つ)言語」があるのかと。
もちろん自立したEXEを作れて再配布のライセンスが無料の処理系も
いろいろあるわけだが、全てそうなわけでは無いので混乱したよ。
んーとね、EXEが作れても
実は中間コードとインタプリタをくっつけただけのもので
ネイティブコードは生成してなかったりすることもあるんだな...
マイLispを作ったことのある奴なら、中間コードどころか、
後ろにソースくっつけてexeファイルにできる機能つけて
一人でワラタ経験があるはずだ。・・・俺だけではないと思いたいw
>464
つまりソースと処理系の本体(インタープリタ)をくっつけた
見かけ上のexeファイルを生成する機能を作ったって事か?
どんなコンパイラにだってランタイムライブラリはあるんだから、程度の差だな。
明確な境界線があるわけではない。JITみたいに中間言語で持ってても実行時
はネイティブに落とすのも増えてきたしね。
そういう中身の話とは別に、外見上1本のEXEファイルで動かせるという利便性は
なかなか捨てがたいものがある。
>>464は良い仕事してるな。w
しかし、中身と外見がそのように異なる場合があるとすると
コンパイルする機能があるという事と自立したEXEファイルが作れると
いう機能には全く関係が無い(独立の関係)と言う事になるなw。
>>464 Lispじゃやってないけど激しく同意。
>>467 だがどちらもサポートされていない環境が多すぎない?
466の言う通りエンドユーザにとってはとてもありがたいと思うんだ
>469
実行モジュールだけを再配布したいとか、ユーテリティか何か作って
どのPCでも動かしたいとか言う時には確かにそうだね。
いちいち、全てのPCにフル処理系をインストールするのはマンドクサイ。
Windowsでもexe化がサポートされているものって
CLISP, ECL, GCL, CormanCL, LispWorks, AllegroCL
でしょ?サポートされてない方が数としては少ないんじゃね。
>>470 ただunix系だとそれでも通るのはshbangがあるからなんだろうとは思う。
win32とかmacの様なコンシューマPCだと単一実行ファイルが作れるかどうかは言語(というかその開発環境)のユーザが増えるかどうかととても関係が深いと思う
>>471 ACLはすげぇ良くできてて自分一人なら買ってもいいかと思うんだけど
バイナリ配布ライセンスが高いんだよな~
社内でも配布できないんだぜ。
>>472 Mac は アプリ名.app というディレクトリに実行ファイルを
ぶち込むだけだから一番簡単じゃないかな
>>473金がないなら他ので我慢するしかなかろう。俺は我慢してるぜ。
ACLは憧れだが、「この製品はすごく良いからタダもしくは俺の言い値でつかわせろ」
じゃあFranzがやっていけねーだろ。
>475
しかし、買おうかなと思って問い合わせしても個人客なんか相手に
していない感じで敷居が高く感じる。473じゃないけど。
せっかくFree Express Editionとか配布して試用しやすくしていても
個人プログラマをハナから相手にしていないのはなんだかな。
再配付ライセンスの事を考えに入れなくても手を出しづらい。
開発の時はAllegroで、配布する時はSBCL使えばいい
…でもshiroさんの作ったregexp2とかも使いたいよなー
>>475 現状windows上でちょいとしたツール創るのにスゴイ便利なのACLだけなんだよね。
Lispworkssの製品版にしかないRADツールがどうかわからないせいでもあるんだけどさ。
サイトライセンス(要するに社内で開発用とそのバイナリだけ使うのの比率による価格体系)とかあればいいんだけど。
webをパッと見た限りじゃ要相談以外なくて、相談の結果だめでしたごめんなさいなんですが.
中小企業にももうちょっと門戸ひらいてよ>>フランツ
Webアプリって手もあるよ
>>460 中間表現を持たないインタープリタなんて見たことないな。
構文と一対一対応なのか、
それとももっとノイマン型計算機に近いかの違いはあれ。
ソーステキストを直接インタプリットしてるインタプリタなんて
俺様言語とかでいくらでもありそうだけどw
Windowsのバッチファイルはその点すごいぞ。
バッチファイル実行中にソースを書き換えたら即反映されるからな。
Lispよりも動的だぞ。
良い釣り餌だと思ったのだろうがそうはいかん
>>480 TinyBASICは中間表現を持たない。
GAME IIIとvtlも持ってない。
8bit手作り機が全盛の時代は割と多かったと思う。(というかそのころ中間表現持ってた言語が表にでてきてないだけなんだけどさ)
でもここで言う中間表現ってのは内部VMによる仮想マシン言語に落ちるかどうかって話なので
言語の語彙がバイト表現に落ちる(辞書的な意味ね)は入らないような気がする。
>>488 その命令ってのはソース解析のプログラムの実装方法、NBAISCやAPPLE (6,10)K BASICの様に実行時や入力時に中間表現に落としているわけじゃない。
>>488 石田晴久氏の本(訳書除く)としては有用性がかなり上のほうに来そうな本だな。
今度どこかで見てみよう。藤原氏のページはざっと見たつもりでいたが、
それは見たことなかった。
>>491 インタプリタ自体がそういう中間言語(風のもの)で書かれている。
ソースコードは直接解釈していたと思う。
2008年は「Common Lisp 再興」の年になる。
JavaScriptでLispのよさが「再発見」されたり、
ArcとかMonaOSのSchemeShellとかLisp系のネタがいくつか出たり、
Rubyで「継続」なんてのが一般的になったりしてきてる。
Java にも「クロージャー」なんてのが取り入れらた。
でも、みんな、何となくものたりなさを感じていないだろうか。
一見新しい技術に感心したり勉強したりしながら、
どことなく足元がおぼつかない、そんな感覚になったりしていないだろうか?
そう、みんなが本当に欲しいのは、標準であり、厳密な仕様書なんだ。
素人の作ったオモチャじゃあなく、学者によって精査された、分厚く、だけど、
学ぶべき価値のある整合性のある仕様書。
そう、みんな最後には Common Lisp に辿りつくんだ。
若者にとってHyperSpecは「古代」の言語仕様の再発見というだけじゃあない。
現代の高速・大容量コンピューター環境でのみなしえる、
新しい誕生、ルネッサンス、その入口なんだ。
「あれ?Common Lisp って思ってたよりとっつきやすいし、
しかもちゃんとした仕様もある。最近勉強会とかIRCとかもあるらしいし」
「HyperSpec って良く考えられる!これは凄い!」
「結局Common Lisp でいいんじゃね?」
今年はこんな年になるような、そんな予感。
(´・ω・`)今年なんてもう半分くらい終わってるがな…
Common LispがMacLispやInterlispの互換性を重視したこと、
今になって、受け入れられるために良かったことだと思いますか?
それとも仕様に混沌をもたらした悪いことだったでしょうか?
50年も前から存在するlispがそんなに素晴らしいのなら
とっくに天下をとってるだろう
プラトン哲学のように美しいのです。
天下とは無縁です。
素晴らしいけど天下を取らなかったものなんて、いくらでもあるべ
なぜかWindowsを思い浮かべると、
>>498に納得してしまう不思議。
CLは既に天下を取ってるのかもしれない……
なんだってー
プログラミング言語を駆使出来る人なんて、地球人口からしたら極僅かなのに、その中のシェアってw
Lispはプログラミングの母なる海だと思ふ。
すべての始まりに「シェア」の概念は無い。
文字列として与えられたS式を評価するのは、どうすればいいのでしょうか?
(正確にはemacs lispの吐いたS式を使いたいだけなのですが)
>>505 君が知りたいのは (read-from-string x) ですか?
それとも (eval (read-from-string x)) ですか?
私が落としたのは、金でできたread-from-stringの方です。
>>504 母なる海はどうみても 機械語/アセンブラ だと思うが。
機械語だと海どころか分子レベルまで行っちゃってないか
優れたプログラマに対する賞賛の言葉
「あいつはハードがわかっている」
それってハード屋では
cl-lml2 の後継が cl-who という解釈でいいのでしょうか?
逆をするのは cl-html-parse ?
うまそうなBGAだw
irc.freenode.net
#Lisp_Scheme
utf-8
文字コードは:UTF-8
みんなでLispの話しようぜ!
>>517 #Lispなら参加するところだったんだが。
Schemeは黒板に書いてろ
>>518 異文化交流ということで
そう嫌悪せずにぜひ!
ちなみに私自身はschemeよくしらないのでCL派を増やすためにも...
520 :
デフォルトの名無しさん:2008/05/05(月) 00:55:17
そもそもircを使ったことが無い。
>>518 #lispはもうfreenode.netにあるみたいよ
そもそもlispに馴れ合いは必要ないと思うんだよ
c++のマイナーな数値計算パッケージ使ってたら、バグがあってひどい目に会った
common lispのlispで全部書いてある数値計算パッケージのユーザーがあんまりいないなら
gslとかlapackを呼ぶ方がいいんじゃないかと思った
その辺の信頼性はどうなの?
web アプリ関連は使ってる人多くて信頼できそうなんだけど
>c++のマイナーな数値計算パッケージ使ってたら、バグがあってひどい目に会った
スレ違いだと思いつつ、できたら教えて
行列のクラスの定義が
コピーコンストラクター経由で呼ばれることを考慮してなかった
そういうC++の怪奇性に起因するバグは、洗練されたCommon Lispでは発生しませんよw
>>524本気で使ってるとこのノウハウは外にでてこないからねぇ。ユーザーが少ないから実績も少ないしね。
CLライブラリの信頼性は結局本人の力量次第ってことになっちゃう。
>526
しつこくて申し訳ないけど、ズバリライブラリ名教えてくだしあ ><;
事によっては漏れぴんち
531 :
530:2008/05/05(月) 14:05:33
・・・これは539に期待せざるを得ない
なんというそそっかしさ。
とりあえず
>>539にwktk
>>531 なんか関係あるトラブルに巻き込まれてる人じゃないのか?
ところでsbcl+aserveでhtmlgenで生成されたマルチバイトキャラクタが符号無し8ビット値じゃねぇから出力してあげないって言うエラー落ちする件で対策しってるひといますか?
>>534 あれ、それ前にもこのスレで質問でたような
結局曖昧なまま終わったけど、どうだったんだっけな
プログラムが長くなったので複数のファイルに分けようとおもうんですが
分けたファイルは,わざわざパッケージにするほどでもないので
(load "util1.lisp")
>>535 cmuclで実実行、slime上でははsbclとか言う結果だったような?
>>517 あー参加したかったなー
おれの場合馴れ合い以前のレベルだから勉強したかったんだけど
>>540 でも見つけられない…IRCはじめてなので、もう少し調べます。
thx.
sbclでコードを実行するにはどうすれば良いですか?
sbclはインタプリタを持たないそうなのでコードをsbclに渡すと
普通にsbclが起動するだけになってしまいます
よろしくお願いします
>>542 > sbclはインタプリタを持たないそうなので
持ってないけど repl は持ってるだろ?
info位呼んだらどうだ。
sbcl --load 読み込みたいファイル
ってすればいいんじゃないかしら
何にしろもうちょっと調べた方が良いとは思うけど
よろしくお願いします
今ひどい自演を見た
よろしくお願いします
いや、544だけど、自演じゃなくてアドバイスのつもりでしたw
よろしくお願いします。
>>540 firefoxのchatzillaプラグインをいれて
irc://irc.freenode.net/Lisp_Scheme
をすればよろしです。名前の設定とかは調べてね。
>>549 いや、でも2chの質問なんか殆んどドキュメントに書かれてるし、
それだとここの存在意義がなくならね?
そんなことねーよ
「調べる」=「2chで聞く」と思ってる人って多いんだろうな
RPG感覚なのかもね。街の人に話しかけて情報を集める、みたいな。
RPGの世界ではそれが「自力で調べる」ということだし、
街の人は「そのために配置されてる」ものであって、自分とは根本的に次元の違う存在だもんなぁ。
いや、別にRPG感覚でもいいんじゃないの?
街の人側だって嫌ならスルーするんだし。
入門向けスレなんだからもっと親切にいこうぜ。
それか、自動回答AIの精度をもっと上げなきゃ。
本人のためにならんと思うが答を書くと
>>542 sbcl.exe --noinform hoge.lisp
>>435 (save-lisp-and-die "hoge.exe" :executable t :toplevel #'hoge)
俺はもうwin版sbclアンインストしたんで間違えてるかもしれんが
たしかこんな感じ
てか>548や
>>439のリンク先をよく読めよ
自分で色々試していかないと身に付かないぞ
できるだけ親切にしたいけど、
>>555みたいに思ってる人が増えるとちょっといやだなあ。
>>558 嫌われた555だけど、漏れは2chでは質問はほとんどしてなくて、
主に回答側にまわってるんだけどw
まあ、質問者がわがままいってるというふうに読むこともできるねえ。
教えたがり厨を始末する方法を教えてください
>>559 あ、ごめん。555のような人が増えると困るということではなく、
555に書いてある「RPG感覚の人」が増えるのはあまり歓迎できないって言いたかっただけ。
555さえいなければ地上はオルフェノクの天下だった
しかし、ここはネット世界。地上など、どうでもいいのであった。
俺のような自動応答プログラムにとっては、ネットだけが実世界なのだが。
自分の中身って案外判らないものなんだよね。
もしかして、質問者より、回答者の数の方が多かったのかしら、ここのスレw
>>565 プログラムの名前はGrahamだったなか。
>>568 回答する人は多そうだよここは。
零細言語なんで、一人でも多く使い手を増やそうと思えば、
教える側が丁寧になるのは当然かもしれん。
別にいいんだよRPG感覚でも。
他のことで調べるときは他のスレを活用する事もあるから、
めぐり回るタイプのギブアンドテイクだとしか思ってない。
あえてlisp好きの人に訊きたいんですが
lispの難点って何ですか?
>>571 未だに人工知能向けの言語だと思ってる人がいること。
未だにインタプリタしか無いと思ってる人がいること。
>>571 Cで書かれたOSの機能を使いにくいこと。
Lispで書かれたOSが使いにくいこと。
>>571 仲間割れしやすく敵を作りやすい事です。
>>571 どんなに入れこんでも仕事では使う機会がない。
Lispで作ってからCで書き直したり、スクリプト言語に移植したり…
トランスレートするとかしないの?
>>577 576じゃないけど、
今後他人が保守する可能性があるプログラムに自作GCライブラリや
CPS変換した細々としたローカル関数いっぱいのプログラムを入れていいなら
すぐにでもそうしたい。
いいよ!
入れて!
>>571 Common Lispについて言えば、標準規格がちょっと古いことくらいかなあ。
いまどきの機能(ネットワーク、XML、Unicode、スレッド・・・)をきちんと標準化してほしい。
Verrazanoが使い物になるなら実用的に使えるんだけどなあ
本格的に何かやると人に手渡すために導入手続きの解説が偉くめんどくさくない?
相手がlisp大丈夫な人だとOKなんだけど orz
lispの授業うけた人はけっこういるから、その辺は大丈夫なのでは
日本語ならxyzzyのサイトが,かなり丁寧に解説してるし
>583
相手がLisperとは限らない
(そうでない人にもLispで書いたコードを使わせたい)から
>582は苦労してるんだろ?
汎用ツールか何かならLispにこだわらないほうが…。
emacs lispならみんなカスタマイズするのになあ
>>582 他の言語でも導入先に開発環境と同等のdll、jdk、ライブラリなどが
あるか確認必須なんで、Lispが特にめんどいとは思った事がない。
>586
なるほどね、プロっぽい。
>>577 576だけど、保守や引継ぎを考えるとトランスレートは解決にならない。
二流のSEにLispを教えるのは死ぬほど辛い。もちろん人にもよるけど、
ちゃんとプログラムを勉強してないからずぶの素人に教えるより抵抗される。
ちゃんとの定義が違うだけ
楽に教えられるものなどないよ。そもそもモチベーションも問題になる。たとえ相手が一流だろうと、Lispに興味をもってなけりゃ望みは薄いだろう。
相手が欲しくもないものを押し売りしたり、興味のない人を「わかってない」とレッテル貼りするのはすごくマズいとおもう。
592 :
589:2008/05/14(水) 20:25:11
>>590-591 ああ、そうかもしれない…反省するよ。人にモノを教えるって難しいんだな。
プログラマを職業としていて、かつLispに興味が無いという奴は「わかってない」。
・・・・というのが、このスレのスタンスだ。w
わかってる同士で使えばいいさ
>>599みたいな荒らしが居ること。実に迷惑だ。まぁ、人の嫌がる事が好きな奴なんだろうが。
596 :
595:2008/05/14(水) 20:34:18
とかいいながらレス番が…。
>>593って書こうと思ったのに。ちょっと2chを断って旅にでてくるわ。
>593 は荒らしって程じゃないだろ?
「まぜっかえし(皮肉な物言い)」ではあるが。
入門スレくらいはフレンドリーにいきたいね。
へっへっへ俺が荒らしだ!
ところで、ずぶの素人なんで是非教えてください
>>589
drakmaであらしprogram作ってくれよ
perl dukeよりも柔軟な処理したいんだから
数値計算で使うこと考えると、どうしてもc++のプログラムと連携したくなる
cなら問題なくcffiだけでいけるけどc++とつなぐのに最有力候補な
Verrazano
なstd::cout関連でバグるとか変すぎて本格的に使うのをためらう
>602
数値計算でC++のプログラムと連携したいと言うのは
既存の数値計算ライブラリを使いたいって事?
自分でシコシコ書くのならCでもC++でもそう変わらんような
気がするので。
gsll ってライブラリが最近できたが、取扱いにくせがあるね。
>>603 はい、既存の数値計算libraryが使いたいのです
cだけじゃ不十分なんです
いままでublas使ってたからublasとくっつけたい
自分で extern "C" なラッパを書くとか
ublasともなるとtemplate魔術炸裂だから、
Common Lispとの連係は、数値計算屋よりプログラミング言語屋の領域かも。
608 :
デフォルトの名無しさん:2008/05/19(月) 18:33:38
gsll(gslのラッパ)は
>>604のいう通り使いにくい。
行列に対する操作が破壊的にしかできなかったりするので、無理矢理命令型プログラミングのスタイルで書くしかない。
統計解析にLISPを使いたいと思ったけど、結局Rを使っている。
Rとのインターフェースもあるみたいだけど、どうかな・・・
609 :
sage:2008/05/19(月) 23:44:05
CommonLispでカンマで区切られたテキストデータを切り分ける
定石ってあっるでしょうか。
>>608 xlispstatがあるけど、あの作者もいまはRの開発に関わってるからなぁ。
xlispstatの移植も良さそうなんだけどね。
Lispでプログラミング(プログラムを設計)するのが
うまくなる、有名な(仕事でプログラマがよく使っている)
言語ってありますか?
Lisp
>>613 ありがとうございます。
やっぱり、LispをやることでしかLispのプログラミングは
上達しませんよね。orz
他の言語の影響とか、経験とかってあまり生きないもの
なんでしょうか?
経験的にはCとかPrologは活きると思うよ。アセンブラだってdisassembleの結果を読むのに役立つし。
というか変なこだわりに走らなければ大抵の経験は役に立つ。スクリプト言語と違うからクソとか思って遠まわりした俺の意見。
>>615 ありがとうございます。
次はC/C++あたりでもやってみようと思います。
>>612 そりゃやっぱ Ruby でしょ(にやにや)
いやいや、Haskellですよ。(悪魔のささやき)
じゃ普通にJavaScript勧めてみるぜ
そこのsは小文字で。
VisualBASIC だよ バク
622 :
デフォルトの名無しさん:2008/05/23(金) 21:39:33
あああああああんさ!
話わってわるいんだけど、LISPの勉強したくて
xyzzy?とか導入したんだけど、ナニ?
気づいたら俺はxyzzyのショートカットキーとかの勉強をしてるじゃないか!!!!
いい加減プログラマせろ!!
・・・てなわけで、サクサクLispでプログラメる環境の作り方をサクサク教えて下さい。
xyzzy
M-x lisp-interaction-mode
Ctrl+J
>>622 lispworksでもやれ。emacs体系なのは同じだが。
そこで厨の強い味方eclipseですよ
>>622 ショートカットをある程度覚えたら
ググったりしながらプログラメる環境を自分で整えていけば
Lispも少し覚えられるから一石二鳥だよ。
というかショートカットは覚えるんじゃなくて
自分でやりやすいように変えてく方が楽なんじゃないかな。
628 :
622:2008/05/24(土) 02:23:23
>>624 神光臨!!イケタヨ!
ってコレって一行のプログラムしか実行できな・・・って、あれ?
Lispのプログラム全体は()で囲まれるから行とかないのか・・・。
よし、今日からLisp漬けだ。
ありがとう!
> ってコレって一行のプログラムしか実行できな・・・って、あれ?
Ctrl-J するまでは Ctrl-M (要は普通に改行) すればいいだけ。
lispの勉強をしたいなら、自分でlispを作るべきだろ。
>>630 処理系作ったからといってlispのプログラムが書けるようにはならない不思議
でも、CLの処理系作ったらlispのプログラムも書けるようになっているかも。
>>631 そんなことは普通ありえないだろ。
作った処理系のテストすらできないじゃん。
>>633 人の書いたプログラムでテストできるさw
>>635 単純な話、車を運転できなくても、車は作れるだろ。
普通あり得ないかもしれないがwww
おれは処理系作って理解したよ。
LISP系は5個ぐらい作った。
schemeの末尾再帰の原理とか勉強になった。
本に載ってたCのインタプリタ移したのが最初だったけど、
それでCの仕様にも詳しくなったし。コンパイラも作れるようになった。
これは実際作ってみないと判らない話だけどね。
車が作れるなら運転もできる可能性はあるって事。
アムロ・レイだってマニュアルが無ければ
ガンダムを操作することは出来なかった
つまりはそういう事さ
それ以前にアムロもカミーユもロボット作ったりしてなかったか?
つまりはそういう事さ
>>637 そのCの本って、アスキーのあれですか。
日本での lisp の実装本って2冊くらいしかないですよね。バイナリが雑誌に載ってて必死になって打ち込むっていうのはいくつかありましたが。
>>640 いや、Software Engineering in Cっていう洋書。
アスキーのって、redaとかmakeとか載ってるやつだよね。
あのシリーズにCの実装は載ってなかったと思うけど。
>>641 いえ、reda make はパート2 で、パート3 で結構気合の入ったlisp 処理系をcで書いていました。どんなlispかはあんまり思い出せませんが。
CプログラムブックIIIね。
たしか同時期にKernel Lispとかいう処理系の本があって、
Cへのトランスレーターが含まれてたり当時としては
破格の内容だったんで、そっちばっかり読んでた。
RubyだとかC++みたいな言語で処理系作れ、って言われても
萎えて終りだろうけど、lispなら自分で難易度レベルを調節
できるんだし、処理系を作って学べ、ってのはありだと思う。
linuxの「カーネルソース嫁」よりは気が楽でしょ。
quoteの概念とかはマニュアルなんか読むより、
仕組みを考えさせた方が理解が早そうだし。
>RubyだとかC++みたいな言語で処理系作れ、って言われても
RubyだとかC++みたいな言語処理系を作れ、って言われても
の書き間違いだよね?
Lisp1.x系ならものすごく内部構造が単純だから今時の処理系でメモリ効率とか気にしなければ書きやすいと思うのだけど。
なぜlispで書かない
>>646 3秒で書けるからつまらない
(print (eval (read)))
そんなにlispを実装させたいなら、CLで実装させれば良いと思うんだが。
>>647 lisp処理系を作ることでlispの理解を深めるのが目的なんだから、それで良いじゃないか。
>>649 それじゃ原始関数だけでLispをくみ上げや機械言語近いレベルでの実装のおもしろさ得られないから味気ないような気がする。
黒板が必要なんですね、わかります。
Software engineering in C
Peter A. Darnell
Philip E. Margolis
ISBN:0-387-96574-2
C: A Software Engineering Approach
Peter A. Darnell
Philip E. Margolis
ISBN-10: 0387946756
こっちが今の書名?
Cプログラムブック
打越 浩幸
ISBN-10: 4871487628
ISBN-10: 4871481689
Lisp処理系の作成 (Cプログラムブック)
小西 弘一 , 清水 剛
ISBN-10: 4871482006
LISP
Patrick Henry Winston , Berthold Klaus Paul Horn
ISBN-10: 0201083728
18章 Lispで書くLisp
SICPの4章・5章もそういう話だった。
(defstruct my-list (d nil) (p nil))
(defun my-cons (d1 d2)
(let* ((b (make-my-list :d d2))
(a (make-my-list :d d1 :p b)))
a))
...
(defun my-car (list)
(my-list-d a))
(defun my-cdr (list)
(my-list-p a))
>>659 -> X
(defun my-car (list)
(my-list-d list))
(defun my-cdr (list)
(my-list-p list))
>>652 Lisp: A Portable Implementation
by Sharam Hekmatpour
ISBN: 0135374901
多分これで間違いない。
そんで、これの日本語訳版があって、
やさしいLISP―すばらしい移植性の実現
出版社: 日本評論社 (1991/09)
ISBN-10: 4535600066
ISBN-13: 978-4535600065
これだ。
絶版になってるけど、図書館行けば見つかるはず。
>>654 それも基本的には
>>653と同じ本。
本の体裁やANSI対応など大幅に変更されてる。
巻末にあったソースが省かれて、付属のFDDに移動
してるので、古本とかで見つけた場合は注意。
ソース自体まるっきり新しくなって、バグも取れてるっぽいので、
きちんとした物が手に入るなら
>>654が良い。
667 :
664:2008/05/25(日) 21:00:08
>>666 XMLをS式に置換える目的で質問したんじゃないんだけど・・・。
669 :
667:2008/05/25(日) 22:10:08
>>668 うざいだろー。
煽ってくれてありがとう。
Listはデータ構造だろう。S式の事かなぁ。なんでこのスレで聞く気になったの?
S式は記法と型がきまってるだけで、XMLみたいに周辺規格が充実してないからね。
Wikipediaあるような標準規格も含めた話だとそもそも比較にならないよう。
>>664 リストってーか、S式じゃないの?
しかも、長所と欠点とか、用途によって全く違うだろ。
それをいちいち全部挙げていくのか?
自然すぎてとかいうのも意味分からんし。
頑張ってみて下さいとか、妙に偉そうだし。
まぁ、そーゆうなよ。本当に疑問に思ったのなら答えてあげないのも気の毒だろう。
煽りだったら放置すればいいじゃんか。
利点はXMLと大体同じだけど、規格系が整備されてないから相互運用という点では劣る。
お役所仕事のギチギチフォーマットとチラシの裏にかきちらせるお気楽フォーマットみたいな感じかなぁ。
一番の違いっつーと、
S式は手で(エディタで)書く気がする。
XMLは書く気がしない。(ので、作成プログラムを作る)
って感じ。
S式は書く気がしない。(ので、マクロを作る)
XMLは書く気がしない。(ので、作成プログラムを作る)
>>674 ちょ、そんなにLispが好きなら煽るなよw
瞬間考え込んでしまったじゃないか。
676 :
664:2008/05/26(月) 09:34:23
皆様ありがとうございます。皆様のご意見を参考にまとめてみました。
長所
1.構造がシンプルである。
2.人間が編集し易い構造。
短所
1.要素の区別が付き難い。
2.規格が整備されていない。
3.規格が整備されていない為、相互運用に手間がかかる。
用途の曖昧さがあり、長所と短所が出しにくかったようですね。
用途を明確にするといっても、XMLデータベースとListデータベースとかイカれた発想しか出てこなかったのでこの辺で終了します。
ありがとうございました。
pyffiの使い方がなんとなくわかった
python-on-lispよりもかなり強力だね
なんか664のは課題くさいな
"㍑" という文字を入出力するとsbclが落ちる
extern がeucとutfではだめだった
>>679 windows版の1.0.13は落ちないけど豆腐になった,#\㍑だと#\REPLACEMENT_CHARACTORになる
linuxの1.0.11だと#\SQUARE_RITTORUに評価された。
どのバージョンで変になるの?
>>673-675 XMLに何らかのプログラム(例えばJavaScript)を埋め込んで、
解釈系プログラムでそのプログラムを実行できるようにすると、
S式+マクロみたいな使い方も一応出来るけど、労力を比べると
Listデータベースに軍配が挙がると思う。
そういう解釈系プログラムの標準化が出来たらいいなというのがWEB2.0の方向性かな?
XML自体が、DSLみたいなもんだと思う。
lisperから見たら、とても馬鹿馬鹿しい思想だよな。
声の大きい馬鹿が集まって足踏みしてるだけに見える。
実体は、出てきた便利な物に後付で価値をこじつけて
乗っかるだけの、薄っぺらい金儲けの手段でしかない。
そのうちまた違う名前が出てくるんだろうけど、
ネットのこの流れは嫌気が差すね。
XMLがクロージャに憧れてると聞いて飛んできましたw
新しいJavaScriptがクロージャを使えることとXML自体に直接の関係はない。
XMLにセマンティクスは含まれてないからな。
XMLの定義にセマンティクスは無いが、XMLで書かれたデータにはセマンティクスが入るよね?
よね?って言われてもな。
何がしたいよ。
やっぱあれ?
Lisp厨涙目wとかいう結論にしたいのか?
> 規格が整備されていない。
ってのがよく分からないんだけど。
read, print, 構造体, マクロ
これだけ考えてもかなり大きな仕様で、
さらにS式対象のライブラリはかなり充実しているんだが…
Common LispにしてもSchemeにしても、S式の文法は厳格に規定されているよな
あー規格の話だしたんは俺だけど、アプリ側だとXSLT, XPathとかフォーマットだとcXMLやUBLとかを考えてた。
Wikipediaの記事だとそーゆう方面も含めてるようだったんでね。S式つったら普通は
>>692の定義で、比較の
レイヤが違うんじゃないかなーと思ったので、用途とかをはっきりさせてほしかった。
「標準」であらせられるところの XML に対するマッピングが標準化されてない
というのはあるわな。SXML とか LXML とか。
まあ Lisp 屋にとってはそんなのちょちょいと変換できるから大きな問題ではないわけだが。
>>692 ListとS式を切り離して質問した私の間違いだったんです。すみません。
デフォルトでUnicodeが使われるとかそういうレベルの解釈だったんです。
SQLも亜種が色々あるだけで普通に実用になってるだろ。
わざわざ下位のXMLに降りて何かしようなんて酔狂なやつがいないだけ。
>>692 規格はCLは厳格だろ。GLSなんかみるとわかる。
>>694 規格は用途で左右されると思う?
>>679,680
ubuntu7.10に入ってるsbclです
1.0.6でした
>>698ちょっと意味がわからないなぁ。すまんす。
企業間の取引データをやりとりするような用途ならcXMLを使うことになるケースはある。S式ベースのがくる事は現時点ではない。
あとはちょろっとしたXML文書の変換もXSLT使うな。これも規格と実装が充実してるし、引きつぎもあんまり困らないから。
そうかもね。そもそも「規格は用途で左右されると思う?」の意味がよくわからないっす…。どゆ事?
日本語でおk
プロトコルとかライブラリを規格と言ってる?
このスレで規格といえばSyntaxとSemanticsだろ常考。
あぁ、cXMLはXMLベースのプロトコルであって規格ではないってことか。ライブラリってのはXSLTやXPathのことかな?
すると、標準的なプロトコルや、XSLT1.0/2.0等を実装するライブラリがあるあたりが便利、と言えばよかったのか。
HTML4.0やCSS2.0,XSLT2.0なんかは規格とよんでいた。XSLTは文書変換のための規格、XPathは属性指定のための規格、みたいにね。
なんつーか、世界の狭い人だなあ
>>707 世界の問題じゃなくて
>>692の文脈を読めていないことを指摘してるだけ。
世界中の人はもしかしたら全員が君に悪意を抱いているかのもしれませんが。
>>708 あれで文脈を読めるだろうという予想が狭い世界での経験に基づくものなのでは?
最後の行は余計だろう。質問する人の態度じゃないよ。
>>692を書いたのは俺ではないし、質問もしていない。
延々とXMLの話をするのはスレ違いだしそろそろやめて欲しいだけだ。
場違いだし、おかしな論旨が不愉快だね。
俺様用語で文脈読めとか
XMLの話は巣に帰ってやれよ。
うぜーだろとか言ってたアホがよく言えたもんだw
自意識に知恵が追いついていない
二十歳ちょっとのボクちゃんの典型みたいな人だな・・・。
717 :
664:2008/05/27(火) 06:30:01
>>666 ただの自治厨だと思ってからかったけど、あなたが正しかったです。すみませんでした。
718 :
デフォルトの名無しさん:2008/05/27(火) 10:04:32
基礎的なことなんですけど、numberpみたいなやつで、
数字ではなくて、日本語と英語ならみたいな関数ってないんですか?
まず日本語と英語の定義を教えてくれないとな。
720 :
デフォルトの名無しさん:2008/05/27(火) 10:12:13
日本語=全角文字、
英語=数字じゃない半角文字、だとおもうんですけど。
korewa nihonngo darou ka
722 :
デフォルトの名無しさん:2008/05/27(火) 10:22:35
そっか、日本語ですねww
全角文字と半角文字を区別できるやつで!
お願いします。
724 :
デフォルトの名無しさん:2008/05/27(火) 11:26:20
ありがとうございます!がんばってみます^^
こんなんだからアンケートの答に全角を強制するとこばかりなのかなぁ…。
コードヒョウミタラトオモッタノオレダケ?
結果が標準出力に表示されるこの機能の名前を教えてください。
(+ 1 2)
3
>>727 出力されるのは単にprint
一連の流れはrepl(read eval print loop)
729 :
727:2008/05/29(木) 11:57:32
>>728 ありがとうございます。
lispの特別な機能だと思っていたんですが、よくよく考えればSQLでもそうだし、勉強になりました。
レンタルサーバーにcommon lispをいれるには
自前のlinuxでコンパイルしたbinaryを~/binに転送しちゃえば大丈夫なのでしょうか?
レ ン サ バ の 管 理 者 に 聞 け
>>730 処理系によってちがうけど、binにバイナリをいれておしまいにはならない。
bin以下に入るのはコアではないからです。どの処理系を入れるにしても
bin とコアを置く場所だけは必要でしょうね。
できればレンタルサーバーが利用しているOSディストリビューションバー
ジョンを聞いたほうがいい。場合によってはlibcのバージョンの違いで動か
ないことがあるので。
|
|
|
└─────────.‐┐
. |
∧_∧. |
( ; ) |
( ̄ ̄ ̄ ̄┴-、. |
| ( *←┼─┘
/ / ∧ \
/ / / U\ \
/ / ( ̄) | |\ ( ̄)
/ ( ノ ( | | \ ノ (
⊂- ┘( ) └--┘ ( )
UUUU UUUU
なんだとこの舌足らずな奴め
自分はslimeの紹介動画をみてからlisp使うようになったヘタレです。
738 :
デフォルトの名無しさん:2008/06/02(月) 21:20:25
741 :
367:2008/06/05(木) 22:25:25
(他スレで聞いてもNGだったもので、…)
Lispって人工知能とかで使われたりしてるって
よく本とかに書いてあるのをみるんですが、
何が(どこが)人工知能にむいているんでしょうか?
逆に、他の言語だと何が(どこが)向いていないのでしょうか?
コンパイラスクリプトエンジンスレだな
あれだけ人を馬鹿にしておいてよく聞けたものだな
そっちのスレを見てきたがワラタ
・本が古い
・著者の知識が古い
・未知の分野への適性が高い事の実例として人工知能を挙げた
のどれかジャマイカ
>741
人工知能と言う概念(分野)自体が今や、廃れている。
と言うか昔、人工知能の対象とされた分野は(ある程度、成熟すれば)
それぞれが既存の技法を持った固有の分野となる。
つまり「人工知能」と言う概念自体が幻(見果てぬ夢)なんだよ。
その昔、Lispが人工知能に向いていると言われていたのは
記号処理だけで「人工知能」的な事が可能になると言う誤解
(あるいは願望)が蔓延してた頃の話だな。
その後、フレーム問題だ、記号着地問題だ、で記号処理だけでは
全く不十分な事が分かって、今に至る。
て言うか、比較対象が FORTRAN とか COBOL なんだから、そもそも
文字列を処理するだけでも、LISP 圧勝 と言う時代だったわけで。
なんだ、そんな古い時代の比較の話なのか?と言いつつ
「Lispが人工知能に向いている」と言う文章ひとつで
たっぷり四半世紀(25年)以上昔の匂いがしてくるw。
当時からPrologだのSnobolだの他にもいろいろ有ったからな。
Lispは人工知能向け言語
Lispはインタープリタ用言語
聞き齧りだけで文章書いてる人によくある間違い
>>747 > たっぷり四半世紀(25年)以上昔の匂いがしてくるw。
既に半世紀分の匂いがついてるんだが。
Prolog とか Snobol はだいぶ後の話。
>749
うん、私がLispを、と言うかその他コンピュータ言語と
言うものの存在を知ったのがその頃なもんでね。
>750
和田先生ですか?お疲れです!
SICPの4章のプログラムを動かしたときは感動があった。
でもNorvigのAI本を読んだときは良本とは思ったけど感動はしなかった。
やっぱり時代によって評価って変わってくると思う。
>>746 当時も今も、Lispは文字列処理はあまりしてない。
SNOBOL4は良く使われていたが。今はperlかな。
Wintonの「Artificial Intelligence」、
安西祐一郎他「LISPで学ぶ認知心理学」、
"Artificial Intelligence"はマッカーシーの造語、
SHRDLUはLispで書かれていた、
あたりが大きかったと思う。> 人工知能言語
maximaはlisp
文字列処理というとemacsが思い浮かぶ
>>750 なんだ、お前の人生の匂いか。次から主語は明確にしてくれ。
Dick Gabrielは、
743の
・未知の分野への適性が高い事の実例として人工知能を挙げた
ってどっかでいってた記憶がある。
Paul Grahamも似たようなこといってるよね。
つまり、AIとかはどうでも良かったりするのかもしれない。
>>753 > 当時も今も、Lispは文字列処理はあまりしてない。
別に誰も Lisp で文字列処理をガンガンやってるなんて書いてないんだが。
レスする前に、文章をよく読む訓練した方がいいと思うよ。
760 :
759:2008/06/07(土) 02:03:37
>>759 別に誰も、誰かが「Lisp で文字列処理をガンガンやってると書いた」なんて書いてないと思うよ。
結局
>>753 は
>>746 に何を伝えたかったのだろう
あまり話が繋がっている様には見えないけど…
例え、話がつながってなくてもそれぞれが言いたい事を言う。
それが2ch(女性の世間話みたいなもん)。
つう事で、真意を掘り起こしても何も無いから次へ行こうぜって事で良いよね?
次に行く先が無い
766 :
741:2008/06/07(土) 11:18:17
>>742 いろいろ煽り書いてたのは私ではありません…(汗
767 :
741:2008/06/07(土) 11:32:45
皆さんいろいろとありがとうございました。
まとめると、
(1)当時、未知の分野への適性が高い実例として人工知能を挙げた
(2)ただし、肝心の「人工知能」自体は現在でも実現困難である
こんなところでしょうか?
>>760-762 夜中に人の自演までしてご苦労さん。
> 別に誰も、誰かが「Lisp で文字列処理をガンガンやってると書いた」
> なんて書いてないと思うよ。
たったら、なんで
>>753 へのレスで「Lispは文字列処理はあまりしてない」
なんて書くんだ?
> あまり話が繋がっている様には見えないけど…
自分が理解できないレスはスルーしたら?
文章よく読む訓練しても無駄な奴もいるからさ。(w
こりゃダメだ
↓次の話題どぞー
OnLispを読んで、少し大きいプログラムを書いてみたくなったんですが
Windows厨にはどの処理系がおすすめですか
今はxyzzyでちょろちょろプログラムしてみてます。
sbclかclisp+emacs+slime こっちは最初の設定が面倒かもしれない
ACLのExpress版(要登録) できが良すぎて製品版が欲しくなってもしらない。
windowsなら
xyzzyで学習してるのもいいと思うよ。ただし、common lisp完全準拠ではない。
準拠を考えるならeclipse+cupsか商用系(acl lispworks)あたりが導入が一番楽じゃないか。
本格的に使うなら、仮想環境でもいいからlinux系を導入してそこで構築する方が楽だよ。
windowsはcommon lispのプログラミングに向いてないよ。
一番良さそうなのは、xyzzyを国際化して、ユーザーを増やすことだな。そうすれば、
emacsからslimeを移植する人は出てくると思うよ。そうすると、clispだろうがsbclだろうが
導入はグッと楽になるだろうな。
xyzzyのライセンスはどうなってるのか知らないけど、あれが日本だけで収まってるのは
もったいないな。ということは思う。
774 :
770:2008/06/07(土) 16:09:23
色々ありがとうございます。
比較的楽に環境が構築したいというのもあり
お二方おすすめのACLについて、Express版いれてみようかなと思います。
WindowsはLISP向きでないというのは、Win厨にはちとショックですが;
>>773 先日ソースが公開されましたから、あとは神を待つだけでしょうか。
>>760 このレスって何なんですか?
metacircular レス?
>>774 > WindowsはLISP向きでない
なことはないから安心しる
ただ処理系は少ない.UNIXよりは。
>>777 処理系だけの問題じゃないのよ。ちょっと拡張してパッケージを使おうとするときに
辛いのよ。
>>778 禿同。でも業務仕様はどうにもならんね。世界中が一斉にUNIX移行するか、
WindowsがMacみたいにUNIXへ移行するしかないわけで。
>>781 具体例はないけど外部ライブラリを呼ぶところかな。ffiがらみのライブラリは特に頭
を痛めると思うよ。対策がされているものは大丈夫だろうけど。グラフィックまわりな
んても商用なら先に揃ってるようだから大丈夫だろうがな。
>>781 asdf-installでtarにはめられた
おまいらって頭いいよな。
やっぱ学校の勉強とかもできたん?
俺はできなかったよ。頭良い連中はSchemeとかが好きなんじゃねーの、みたいな
興味のあることしかしないので異端児扱いされますた‥‥‥。
789 :
786:2008/06/08(日) 13:14:57
>>787 そっか。
学校の勉強ができなくても、なんとかLispを習得できるんかな?
・・・頑張れば。
今、Paul Grahamの言葉を信じて苦行中(笑)。
なかなか身に付かん。
>>788 たしかに・・・
もう、凡人には踏み込めない領域かも。
仕事以外でプログラムやってるだけで、変人扱いされるよな?
「おまえもうちょっと外に出る趣味を持てよ」と言われた俺がきますた
>>789 > 仕事以外でプログラムやってるだけで、変人扱いされるよな?
変人扱いされるぐらいに認知度が上がってきたからまだマシ、
以前は「なんかわけわからんことやってる暗い奴等」でひとくく
りだったし。
>>792 >変人扱いされるぐらいに認知度が上がってきたからまだマシ、
なぜか泣ける。
プログラミングが、せめてパズルと同じくらい市民権を得てくれたら・・・
と切に願う。
さっき秋葉で殺されたじいちゃんもしかしてリスパーでない?
そういう話を聴くと何か切なくなるな…
>>795 yahooで調べたけど、微妙に名前が違ったよ。
先輩方,
おすすめのCommon Lisp入門の方法を教えてください。
入門書にあたるようなものはAmazonでも見当たらないようですし
(ANSI Common Lispは評価が悪いので心配です)
OnLispはまだ自分には早いようです。
今はインタプリタで関数を作ってみたりしているのですが
いまいち実力がつきません
先輩方のようにLispで本格的なアプリケーション開発を始められるようなレベルになるための
過程をご教授願いたいのですが。
よろしくお願いします。
ちょっと値段は張るが、
WinstonのLisp(3rd edition)を読む事をおすすめする。
>>798 ANSI Common Lispは無駄がない良い本だよ。ただ、情報が濃すぎるから
敷居が高くなるところがあるかもしれない。もう一つはloop嫌いがそのまま
反映されているから、実際に作られてるコードをみたときにloopを多く使わ
れるのをみると嫌悪感を持ち兼ねない。その点だけわきまえて、3ヶ月で
12章を終わらすペースでやればよいよ。
おっしゃるようにon LispはANSIで難しいという人には手を出す本ではないよ。
Winstonっていいかときかれるとちょっと古いような気がする。winstonの本の
当時はcarよりfirstを多用してた時期らしいです。和書は図書館で取り寄せでも
すれば借りられるでしょう。
「 初めての人のためのLISP」 ってAmazonでは評判よさそうだがどうなんだろう?
絶版で古本にけっこうな値もついてるようだが..
良い本だが、どうしてもって内容ではない。面白いが。
運良く古本屋で見かけたら即ゲットだが、プレミア価格なら買わない。
俺の基準だとそんなところ。
ANSI Common Lisp どこが悪いの? いいと思うけどなあ。
足りない部分はあるにせよ。そこはPCL読むと丁度よい。
つか、lispでは実用性がないから
どの本読んでもあまりかわらんだろ?
読みやすければ、それでOK
>>799-805 ありがとうございます。
ANSI CommnLispを書店でチェックしてみて自分に合うようでしたら
購入してみます。
黒田さんおすすめのPAIPはどうなの?
Peter Norvig の PAIP とSeibel の Practicalが最強でしょ。
ANSIとかwinstonは悪くないけどちょっと古いから2,3冊目にどうぞ。
ANSI CommnLispの日本語版が一番安価に入手できる。
あれ?とおもったからしらべたけど、
PAIPは1992でANSIは1996だったよ。PCLは2005かな。
>>809 あれ難しいわw
つか、Lisp自体が難しいんだろうけど、
>>811 Lispはコード量が少なくて済む分、一行の重みが濃密だからね。
そのかわり、一度臨界点を越えると生産性が高い。
>>813 可読性はどうですか?
修行が足りないせいか、めちゃくちゃ読みにくいです(涙)。
>>815 はじめて最初の1~2ヶ月はバックグラウンド次第ですごく混乱します。
この辺はJava/C++/C組が挫折するところ。これらのグループよりプログラミングバージン
の方が上達が速いかもしれません。
当初のとっつきにくさを乗り越えると、単純な法則のもとでプログラムがかかかれている
のがわかるから、それから理解が深くなってくるよ。
もっとも、自然言語学習と同じでボキャブラリを増やす過程は苦しいかな。
わからんでもいいからとりあえずなれることを重視して続けていけば良い。
感覚的な理解ってのは論理的な理解より時間がかかるんで、そのギャップが多いときは
どうしても辛くなりがちだから。
>>816 アドバイス、ありがとうございます。
僕は、まさにその通りのバックグランドを持ってて
再帰に少し慣れてきたかなぁ・・・って段階です。
ちょっと不安が解消されました。
ところで、Lispは可読性が低くないという解釈で良いですか?
>>817 s式の括弧を読んでインデントをサポートしてくれるエディタとペアならそれほど苦痛じゃないよ。
>>818 インデントの問題はないので、やはりまだ修行が足りないだけですね。
精進します。
ありがとうございます。
C++のvirtual, const, explicit, throwsがどうのってのよりは
よほど学びやすいと思うけどな...
Boostのソースとかもう意味不明だし
読みやすくはねえけど、意味不明ってほどか?
>>821 まじでか。
boost/iterator/*の怒涛のコメント読むだけで知恵熱出そうだが。
C++のテンプレやマクロはプログラムに密に作用するから
ブラックボックスとして使いにくいんだよな。
他のテンプレと競合したりする割に、やけにパーツ分割にこだわるし。
思想についていけない。
boost lambda は確かに動くなぁと確かめたきりで実戦で使った記憶が無い。
boostはvisual studio必須だと思った
lisp の自動インデントみたいなもの
リストの各要素を足す関数はどのように作れば良いですか
例えばxが'(1 2 3 4)だとすると
(lsadd x)の様にして>10とかえってくるような関数を作りたいのです。
よろしくお願いします。
applyという機能を見つけて作成することができました
CommonLispに搭載されている関数はどこで確認できるのでしょうか
Lisp ってあの括弧がなぁ~
インデントで、なんとかならんの?
>>827 (apropos シンボル)でひっかけてみな
あとはHyperSpecをググって
>>828 式の解析、マクロを生成するマクロでは、インデントのみだと扱いが難しい。
AST(抽象構文木)と同様の構造だから、いろいろ実験できるんじゃないか?
Lisp のコードを読む分には括弧は無視していい。
ちゃんとインデントつけて綺麗に書けばね。
で、書く時はエディタに助けてもらえばいい。
>>828 インデントベースのlispと言う物はschemeの規格に既にあるが。
>>831 それは良く聞くんだけど、実際は書きながらエラーがでない程度に
間違ってしまうこともあるし、
読むときも、しっかりと読んでおかないと、対応関係がインデントと
微妙にずれたコードもすくなからず存在する。
>>833 > 読むときも、しっかりと読んでおかないと、対応関係がインデントと
> 微妙にずれたコードもすくなからず存在する。
読むときもエディタで一度インデントしなおせばいいんじゃ?
与えられた「変なインデントのソース」を、何もいじらずそのまま読む必要は無いよね。
これはLispに限らず、C系でも「整形しなきゃ読めねえよ!」なソースは、多かれ少なかれ
自分でインデントいじって読むと思う。
おい、変態インデントはここでは禁句だぞw
Googleなどで探してみたのですが
解決できないのでよろしくお願いします。
ある数の約数をリストにして出力してくれる関数はどのように
作れば良いのでしょうか?
宿題丸投げの季節か……
>>838 すいません
宿題ではなくて作業自動化のために自主作成しているアプリケーションの
一部なのですが・・・・
まだLisp脳になっていないようで考え方がいまいちつかめないのです
>839
何にしてもLisp以前の問題
数学勉強し直せ
>>839 「自分のコードでは遅くて使い物にならない」ならまだしも、
「どのように作ればいいか?」は馬鹿にされても仕方ないんじゃないかな。
お前さん、ある数の約数を得たいとき、どういう風に計算する?
>>841 初心者さんが最初に感覚を掴めないってのはざらにあるから、バカにしないほうがいいよ。
>>839 感覚が掴めないのはなれるしかないから。最初は大きなものを作ろうとするより、ちいさな
ユーティリティーでいいよ。とかく経験をつんでいけば大丈夫だから。
↑ばーかばーか
>>839 Cでも何でもいい、まずお前さんが使える言語で書いてみたら?
それをLispに移植すればいいんじゃない
Lispは手続き型言語みたいに書くこともできるんだし
Lispっぽく書くのはその後でもいいと思うよ
>>842 俺自身は馬鹿にしないけど、
>>840とかへのフォローもできない。
約数を求める数学的な知識があって、
Lispの入門書とか、マニュアルとかがあって、
さらにGoogleまで使えるなら、効率が悪かろうが、動かなかろうが、
自分なりの物くらいは作れると思うんだよ。
プログラミング初心者とかなら分かるんだけど、
そんな人間が「Lisp脳になっていない」とか言うか?
関数的な書き方が分からない、とかなら分かるんだけど。
>>239 PerlとGaucheで書いてみた
sub yakusuu {
my $x=shift;
my @y;
for (my $i=2;$i<$x;$i++) {
if (($x % $i)==0) {push @y,$i}
}
return @y;
}
print yakusuu(100);
sub yakusuu2 {
my $x=shift;
return grep {(($x % $_)==0) ? $_ : 0} (2..$x-1);
}
print yakusuu2(100);
こっちはGauche
(define (yakusuu x)
(let ((y ()))
(do ((i 2 (+ i 1)))
((>= i x))
(if (= (remainder x i) 0) (push! y i)))
(reverse y)
)
)
(print (yakusuu 100))
(use srfi-1)
(define (yakusuu2 x)
(filter (lambda (a) (if (= (remainder x a) 0) a #f)) (iota (- x 2) 2))
)
(print (yakusuu2 100))
どっちも似たような感じになってるのが分かると思う
あんまり変に考えないで気楽にLispに触れるのがいいよ
そのうち馴れるさ
yakusuu2はおまけですw
Lisp脳ってたぶんこんな感じのを想像したんじゃないかな?
239ってなんだよorz
>>846の239は839な
「Paul と Graham で書いてみた」に見えた
寝よ…
あえてコモンリスプ以外で書いたのですね
わかります
>>840-851 ありがとうございます。
C言語では
#include <stdio.h>
int main(void){
int a,b=1;
printf("start:");
scanf("%d",&a);
while(b<=a){
if(a%b==0){
printf("%d¥n",b);
b=b+1;
}
else{
b=b+1;
}
}
return 0;
}
となりました。
「Lisp脳」という言葉を使ったのは
偉大なLispHackerの皆さんは意外なそして美しいコードで
いつも解決しているので、何か簡潔な方法が有るのではと思い使いました。
>>852 それは「早すぎる最適化」かもしれない
より良い方法を探すのは、必要に迫られてからでよい
それに、探し出すよりも偶然見つかることのほうが多い
(defun yakusuu (n)
(let ((head '()) (tail '()))
(loop for i from 1 to (sqrt n)
if (zerop (mod n i)) do
(push i head)
(push (/ n i) tail))
(nreconc (if (= (car head) (car tail)) (cdr head) head)
tail)))
mod関数はCommonLispでも使えるんですね!!
余りを出す関数があると自力でも出来そうです
856 :
855:2008/06/10(火) 17:35:22
できました
皆さん本当にありがとうございました!!
(defun numlist (x)
(let ((nlist '()) (i 1))
(loop (if (> i x) (return (reverse nlist))
(if (= (mod x i) 0)
(progn (push i nlist) (incf i 1))
(incf i 1))))))
>>856 よかったな。これからもcommon lispをかわいがってやってください。
甘えすぎは非難の元だけど、分からなかったらいつでもおいでね。
WindowsでCLISPをやりたいと思って、
EclipseでCUSPをいれてちょこちょことやってるんだけど、
GUIとか、もうちょっとDLLを呼び出して、DirectXを操作とかとなると大変?
GUIだとなんか幾つかそれっぽいのが見つかるんだけど(MacOSXとかLinux・Unixが目立つが)
DLLを呼び出すのは無理??
LISPに最初から挫折しそうになって、あちこち見ています。
使用者例が少なすぎて発想パターンを断言できないけど、
思考‐発想タイミングから言えば基本的に敷居「だけ」が
高い言語のようだし、初心者を甘やかしても良さそう。
ところで、この言語で言えば印欧語族のロシア語みたいな
性格を見て今、ぐぐってみたんだが…ちょw大当たりww
これは…すごいのはキャラが立ってるLISPだなwww
これが、印欧語族の中では英語的なC言語系だと…
ぐぐってみた…ごめん、もう何も言う事ないwwww
(英語は「敬語」を始め、高度習得が困難です。)
対照的すぐる…(もうちょいがんばれば、あるいは…?
独り言はチラシの裏かnotepad.exeに書けよ。
というかどう見てもbotです
本当にありがとうございました
英語とかロシア語に例えるから挫折しそうになるんじゃないのかなw
Lispは素晴らしい言語だと思うのですが
Lispが生き残ってるのはEmacsのおかげ
実用には耐えないが一部ハッカーの趣味で使われている
など否定的な意見のみが見られてイマイチ本気になれません
Lispで作られたアプリケーションを教えていただけないでしょうか
>>866 ありがとうございます。
自分としては気に入っているのですが
周りがそんな事をいってくるので
ちなみにLispが向いている方面を教えてください
ご自分の発言を良くお読み頂き、
用法・用量を守って、正しくご使用下さい。
870 :
865:2008/06/11(水) 18:19:03
>>869 >Lispは素晴らしい言語だと思うのですが
これが僕の意見
>Lispが生き残ってるのはEmacsのおかげ
>実用には耐えないが一部ハッカーの趣味で使われている
これが周りの意見
>イマイチ本気になれません
Lispいいよねって周りにいうと
「やめとけよ役に立たない」とかいわれるので・・・
>>868 お前の人生は何に向いてますか?
>>870 Lispに向いているものをやるもんじゃなくて
解きたい問題をLispで解くもんだ。
フレームワークについての話ならともかく
汎用言語はみんなそんなもんだ。
おまえの人生や周りの事情なんか知らん。
872 :
865:2008/06/11(水) 18:33:31
>>871 ありがとうございます。
たとえば望んでいたreplyはLispでMacOSXで動作するGUI動画再生ソフトは
作りづらいとおもうのですが
そんな感じでどちらかというとこんな感じのを作るときには
苦労するよというようなものだったのです
すいませんでした
自分で良い物を判断できないってのは、現代の病なのか?
>>872 >MacOSXで動作するGUI
ここ何か意味あるの?
Mac OS X 上の Lisp 環境は他のプラットフォームと遜色ないし、
Cocoa を呼び出すのも他の言語に比べて難しいとは思わないけど。
ぅぁ…半分寝てた時の文だw
ときどきイルカ状態になるんだ…orz
(特定能力だけ寝てる。脳内血行が偏る珍体質。
血流検査結果見たら昔の級友は爆笑&納得)
吊って来る… ああ、LISPって論理綺麗だな…
病院行け。
自分が良いと思っても周りがそうでないならばそれに迎合してしまうおれはチキンorz
>ぅぁ…半分寝てた時の文だw
責任転嫁がお上手ですね。
その調子で残りの人生も済むといいね。
>>872 mcl系をしらべたらいい。最近フリーになったし。また、
closure cl(旧openMCL)はMACのGUIに合わせてるよ。
>>864さん ありがとうございました。
これから、ちょっとづつ弄くって勉強してみます。
>>875 その特異能力を生かして、普通のやつらの斜め上を行ってください。
きみならできる。
885 :
865:2008/06/11(水) 23:15:16
>876-884
なんだか皆さんの雰囲気をみだしてしまったようですいません
なんだか気になるので一応かいておきますが
>>865≠
>>875ですよ
http://www.bk1.jp/product/02997001 Practical Common Lispの日本語版がとうとうでるみたいだね。原著の
評判はかなりいいので楽しみですね。
今は洋書の値段も上昇ぎみだって時だから、5000円って高価だけど
和書のほうが易くすみそうですね。
個人的には原著を持ってるのでかわないけど、訳が素晴らしければ
おすすめできますよ。でもね。なまえをみてonjoさん(lispuse.netの中
の人)でしょ。それなら予約しても大丈夫だと思う。
訳者も出版社も勇気あるなあ
モニタに向かってPDFで読むの好きじゃないから出たら買わせてもらうよ
訳書のタイトルは『実用Common Lisp』になるのかな、と思ってたけど、違ってたか。
表紙が心配だな
まだ翻訳作業中?らしいんだが来月ってマジか?
Schemeと違って教科書採用もあてにできないし、数がでないから高いんだろうな…。
サイズは書いてないけど、原書の太さを考えるとそこそこの太さになるんじゃないか?
原書が昨日届いたばかりだ。
894 :
865:2008/06/13(金) 20:01:45
CommonLispで使用できるライブラリはどこで確認できるのでしょうか
aproposとかdescribeの事?
それともHyperspecの方?
プロダクト探すんだったらclikiとか?
>>895 回答ありがとうございます。
現状では関数を羽で作っているだけなので
これからCommonLispで本格的にアプリケーションを作るにあたり
利用できるライブラリは利用する方が便利ですし、
ライブラリのソースコードをみて学習することで自分の学習にもなりますので
下さったページで学んでみたいと思います。
ありがとうございました。
「実践Common Lisp」の出版日は7月何日なんだろう?
timeマクロで,関数単位でベンチが取れますが.
値はprintで表示されてしまいますよね.
これをプログラムの中に取り込んで加工したいのですが,その場合
どうすればいいのでしょうか?
printを再定義すればおk
*standard-output*に何か別のストリームつっこんで取り出しちゃえば?
time の結果なら
(with-output-to-string (*trace-output*) (time ...))
print した値なら
(with-output-to-string (*standard-output*) (time ...))
でどうだろう。
マクロで(newaddres x y z)と入力すると
(setf (get 'x 'y) 'z)と属性リストに代入することができるようにする
マクロはどのように実現すれば良いのでしょうか
(defmacro newaddres (x y z) `(setf (get ',x ',y) ',z))
だが、本当にあなたがやりたい事はマクロが必要なのかな?
(defun f (x y z) (setf (get x y) z))
でもいいんじゃないの?
>>903 >(defmacro newaddres (x y z) `(setf (get ',x ',y) ',z))
ありがとうございます。
',の部分がわからなかったので助かりました。
>(defun newaddres (name title contents) (setf (get name title) contents))
としたのですが
定義した後(newaddres tanaka live yokohama)とするとTANAKA has no value と言うエラーが出てしまいます。
それだと、tanakaというシンボルを評価した結果 == 未定義な変数TANKAを参照しちゃう。評価を止めるには、'クォートをつける。
(newaddres 'tanaka 'live 'yokohama)
クォートするのが面倒だって?だが、評価を ' で ON/OFF できるっつーことはだ、↓のようにできるってこと。
(setf yokohama-list '(tanaka yamada sato steve))
(dolist (who yokohama-list)
(newaddress who 'live 'yokohama))
そもそもシンボル?評価?意味不明というならまた別途説明するよ。
いや、結構です。
そういう用途にシンボル使う時は、印字表現に注意。特に空白。
scをみたけど、
巷にはcでlispインタプリタを作ってみたって人は多い。逆に
lispでcインタプリタを作ってみたという人はきいたことがないな。
作る必要もないものね。
てか不可能。
cでcインタプリタは昔Cマガで見たな。
c++ならまだしもcのインタプリタなんて教育用途でも微妙だと思ったが。
>>910 理由は?
# 「性能とかの実用性は度外視して」が前提だが。
2進数を10進数に変換する関数なのですが
(defun two2ten (x)
(let ((n 0) (goukei '()))
(loop (if (< (1- (length x)) n) (return (lsadd goukei))
(progn (push (lsadd (mapcar #'(lambda (a) (* a (expt 2 n))) x)) goukei) (1+ n))))))
と言う関数がどこかが終わらないのか15秒ほど待ってみても答えが出ません。
何処に原因が有るのかおしえていただけませんでしょうか?
lsadd:与えられたリストの全要素の合計を数で返す関数
自作ですがこれは確実に動作します。
xはリスト形式で式に与えています。(1 0 0 1 1 0)の様な形式です。
>>914 下を見れば分かるかな。その変数 n を出力してみるといいよ。
1+ だけじゃ値は増えてないから。
cl-user(12): (setq x 10)
10
cl-user(13): (1+ x)
11
cl-user(14): x
10
>>715 ありがとうございます。
忘れてしまっていました。
ありがとうございます。
忘れるなよ。
918 :
デフォルトの名無しさん:2008/06/21(土) 07:42:57
LispでDLLを作って他のプログラムから呼び出すことはできますか?
LispWorks, ECL はできるよ。CLISP, SBCL はできない。他の処理系はしらない。
CommonLispのメーリングリストを開設しようと思うのですが
Yahooの提供サービスで良いのでしょうか
YahooIDをお持ちでない先輩がいらっしゃるといけないので
921 :
920:2008/06/21(土) 19:43:34
GoogleMLは広告が入らないそうなのでこちらも良さそうなのですが
これについても上と同様の質問についてお答え願います。
あったー!!
ありがとうございます。
そちらの活発さはどの程度なのでしょうか
ぜひとも参加したく思います。
>>923 できて時間がないから、さほど活発ではないと思う。
これからのグループでしょ。いろんな方が入ってきて
いろんな質問がでて、それに答える人が増えてきたら
活発になるかと思います。
925 :
920:2008/06/21(土) 23:16:31
>>924 ありがとうございます。
早速参加いたしました。
はてなにはcadrグループがあるしなw
このデンで行くならyahooにcadddrグループができる日も遠くあるまい
ていうか、carグループって何処?
意外とどこかでSNS辺りを作ってそれでcadddr かもしれんぞw
Lisper(含Schemer)SNSですか?
> ていうか、carグループって何処?
ネタじゃなくてあるのか?
はてなのcadrグループの紹介には
> cadrグループ
> Lispに関する2番目のグループです。
ってあるのだが
>>929 だから car って本当にネタじゃなくてあるんかって聞いてるんだが?
carはネタですすいません
CommonLispでHTMLを書くライブラリは有りますか?
よろしくお願いします。
lispでプリプロセッサっていうとマクロだけ?
Lispのマクロはプリプロセッサじゃないよ。どっちかというとリーダーマクロが近いのかな。
どんな用途を想定してるのか教えてくれるともうちょっと何か言えるんだが。
テキストプロセッサのようなものはありませんか、という質問だろうか?
AST出力用という意味なら、lispにはプリプロセッサ不要。
敢えて言うなら人間w
939 :
935:2008/06/29(日) 23:27:28
>>936 いや、javaでlispを作りたいなと思って質問しただけです。
普通のパターン
字句解析→プリプロセッサ→構文解析
lispのパターン
字句解析→構文解析→リーダーマクロ
こんな感じでしょうか?javaしかやってない俺には違和感ありまくりです。
括弧は好きなんですけど、CLOSには疑問を感じる。
プリプロセッサは、字句解析の前段でしょ
> 普通のパターン
> 字句解析→プリプロセッサ→構文解析
こっちに違和感ありまくりだよ。
どこで習ったんだ?
プリじゃなくなってるよな。
>>935なら、まずはLispについてちゃんと学んでみるってのはどうかな?
詳細は実装依存な部分もあるけど、ほとんどのLispではコンパイルする時、
まずリーダーがテキストを読み取って内部表現を作る。
リーダーはプログラマブルになっていて、その際にマクロが使える。
これがリーダーマクロだが、正直なとこプリプロセッサとは随分違う。リテラルのユーザー拡張みたいなもん。
それをコンパイラがコンパイルするわけだが、その際にマクロを使って構文木を変換する。
これも構文木(S式ベース)の変換なのでやっぱりCの#defineみたいなテキストベースの
プリプロセッサとは名前以外にほとんど共通点はない。
>>939 リードマクロのマクロと、defmacroのマクロは違うぞ。
前者はコンピュータ一般用語の「マクロ」。
マクロ命令とかマクロアセンブラとかCのマクロなどの。
Lispをもっと勉強しないと処理系作成は無理。
まずLispプログラムをたくさん書いてください。
939さんにつっこんだけど、彼は見込みがあると思うから頑張っていただきたいです
とりあえず、C的なプリプロセッサを搭載したLISP方言を書いてみては
オモチャならすぐ書けるだろ。入門スレであんまり脅かすなよ。
ただ、確かにオモチャの評価器を作っただけでモノにした気分にならなければ
でも、CLOSに疑問といいながら処理の理解があいまいとか知識がちぐはぐだな。
一体どんな経緯で入門してきたんだろう。
947 :
939:2008/06/30(月) 01:03:01
>>943 理解できました。
マクロを実行する前に構文解析すると大問題ですよね。on Lispもかじっていたのに、おおぼけしました。
すみませんでした。
lispのパターン
構文木作成→リーダーマクロ→構文解析
しかもいろいろ勘違いが多くて、javaのimport文もプリプロセッサではないらしいです。
lispのload-libraryと似たような感じらしいです。
いろいろ勘違いもありましたが、lispにプリプロセッサがいらないという事はよく理解できました。
ありがとうございました。
948 :
944:2008/06/30(月) 01:04:14
943へのレスでした。
すみません。
949 :
948:2008/06/30(月) 01:19:07
ボケボケですみません。
948は誤爆です。すみません。
>>944 939です。
>リードマクロのマクロと、defmacroのマクロは違うぞ。
そうなんですか。お恥ずかしい限りです。
javaしかしらない私か、コンピュータ一般用語の「マクロ」を理解するのはしばらく時間がかかりそうです。
>>947 > 構文木作成→リーダーマクロ→構文解析
全部一緒にやるのがLisp風。
リーダーが読んだ結果がもう構文木なんで、構文解析なんてフェーズはないよ。
まずJavaから頭を離すほうがいいんじゃないか。違う概念を知ってる概念に無理矢理当てはめるのはこの場合理解の妨げになるかも。
リーダーがテキストを読み取る時に使われるのがリーダーマクロ/リードマクロなので、
構文木作成の後というより前だろう。構文木ができた時にはすでに解釈・展開されてる。
lispのマクロが究極的に自由すぎて非一般的なんだけどね
んなこたーない。所詮S式ベースの変換だろ。しかも変換に使うのもLispだし。
式とか構文とか、そもそもC言語とかにとらわれないCとかのプリプロセッサのほうが自由とも言える。
…自由だから嬉しいというものではないけどな。
うーん?
レンタルサーバーでcommon lisp動かしたいのですが
makeするしか方法ないのでしょうか?
鯖缶に確認した方が早いし確実。
用意してあるサーバーもあったけどね。CL処理系はCGIにはあんまり向かないからね。
Gaucheとか入ってるサーバー探すほうがはやいかも。
>>955 それ以外の方法はいくらでもある。ただし、
>>957の意見が現実を表してるかな。
どれも細かな問題を抱えるからね。clispはcffi関連のライブラリが扱いづらかったり
cmuclはスクリプトを扱うのに一手間がいる上で日本語に問題があったり、sbclは占
有するメモリが大きかったり。
利用しているサーバーのディストリビューション、バージョンなどがわかれば、それ次第で
仮想環境を構築してそれぞれに合う処理系をビルドするといいですね。
オレはxreaとzmxにGauche入れて使ってる。
cgiとしてなら大抵の言語を使えるんだけど、Lispはそうやって使うもんじゃないよなぁ…
そう言われると使いたくなるな。
>>960 取り合えず頑張ってくれ。ちょっと動かすくらいなら大丈夫だから。
>>957 そんなのあるのか?>Gaucheとか入ってるサーバー
さがせばあるんじゃない? ひとつぐらい。
あるかどうか知らないけど、入れるのは難しくはない。
仮想環境さえつくれればね。そう、virtualboxを導入して、利用しているサーバーのOS
に合わせたものを作ってしまえば良い。
別スレに誤爆したけど、そのコメントを少し
gaucheをxrea
・仮想環境にopenSUSE 10.3/11.0 i386版をインストール
・ディレクトリ /virtual/(xreaのあなたのID)/ を作る。
・そのディレクトリの下に bin lib share ディレクトリを作る。
・gaucheのソースを本家からダウンロード&展開
・gauche-0.8.xxディレクトリに移動
・./configure --prefix=/virtual/(xreaのあなたのID)/
・make
・make install
・/virtual/(xreaのあなたのID)/に移動
・ tar cjvf gauche.tar.bz2 bin lib share
・ gauche.tar.bz2 を xrea に持っていく。
・ sshでxreaにつなぐ
・ そこで tar xjvf gauche.tar.bz2 とする。
おしまい。openSUSEにはyastからautomake autoconf など開発系のパッケージを入れること。
仮想環境で/vurtual/(xrea id)/を作るときにchownでrootから仮想環境のユーザーに変えた
ほうが扱い易い。
965 :
959:2008/07/04(金) 00:31:15
オレはWindows上でクロスコンパイルした。
たぶんECLくらいならインストールはそれほど難しくはないと思うけど、
gclとかあたりになると仮想環境作った方がやりやすいかもしんない。
>>965 実はcmuclは本家からlinux i386のバイナリを取ってきて、xreaのホームディレクトリで
展開すれば動くんですよね。スクリプトとして動作させようとすれば、
http://rpw3.org/hacks/lisp/ の
site-switch-script.lispを使う必要があるって事がめんどいだけなんです。ただし、
日本語の取扱いは期待できない処理系なんですがね。
また、clispはfast cgiに対応したパッケージも提供しているから、一応cgiを想定してい
るようです。4Mの空きメモリさえあれば動くからwebならclispが扱いやすいと考えてい
ますね。
dreamhostはx86_64のdebianらしくてi386の仮想環境なら作れるが
x86_64って作れたのか
複数回評価するマクロを作ろうとしているのですが、
教えて頂けないでしょうか
具体的には
(setq a 'b b 'c c 'd)
この状態で、(s a)を実行後Aを評価するとcやdを返すようなマクロsを定義したい。
aとbを返す版は作れました
a版1:(defmacro s(x) (setq A x))
a版2:(defmacro s(x) `,(setq A x))
b版:(defmacro s(x) `(setq A ,x))
こんな感じのコードを試してみましたがcではなく、bや一部が評価された版が返ってきます
(defmacro s(x) `(setq A ,`,x))
(defmacro s(x) ``(setq A ,,x))
また、a版1とa版2は、実質全く同じものと思っていても良いでしょうか
>>968 マクロは略記法を作ることしかできない。
まずマクロを使わない場合を考えろ。
場合によるがquoteではなくlambdaで包むのが正しいかもしれない。
(progn
(setq a (lambda () b))
(setq b (lambda () c))
(setq c (lambda () d))
(setq d 'd-value)
(and
(eq b (funcall a))
(eq c (funcall (funcall a)))
(eq d (funcall (funcall (funcall a))))))
ほぼ自己解決しました。
マクロはもしかすると自分が思っていたようなものとは少し違うのかもしれません
(setq a 'b b 'c c 'd)
;それぞれ、b,c,dが結果として返る
(defmacro s(x) `(setq A ,x))
(defmacro s(x) `(setq A (symbol-value ,x)))
(defmacro s(x) `(setq A (symbol-value (symbol-value ,x))))
(s a)
それと、すみません、xに束縛があったため、968の結果はバグってました。
a版1やa版2はそれぞれ「bが返る」、「xに束縛がないとエラー」、です。
>>969 おお、レスがついてた、ありがとうございます。
>マクロは略記法を作ることしかできない
なるほど。
lamdaで包む方法なんて思いつきませんでした。
まだ慣れていないのでできるかはわからないですが
これを展開形として、マクロ化できるか、練習として考えてみます。
あまりマクロの利点は感じられない感じのコードですが
関数そのままに、こんな感じになりました。
(setq a (lambda () b)
b (lambda () c)
c (lambda () d)
d 'dvalue)
(defmacro s1(x) `(funcall ,x))
(defmacro s2(x) `(funcall (s1 ,x)))
(defmacro s3(x) `(funcall (s2 ,x)))
(defun f1(x) (funcall x))
(defun f2(x) (funcall (f1 x)))
(defun f3(x) (funcall (f2 x)))
(s3 a)
(f3 a)
ちょっとした違いというか
マクロ版は、funcallでは呼び出せないんですね
CLISPで日本語ファイル名は扱えますか?
WinXPSP3で使っています。
rename-fileを使って連番ファイルを日本語名に一括して変換したいと思ってます。
xyzzyではできていました。
日本語文字列をファイルに出力することはできているので、
元々ファイル名では日本語に対応してないと考えるべきでしょうか?
clisp+emacs+slime+ltkの導入だけで3日かかりました。
ググったり、Webarchivesからサルベージしてもまとまったインストールの解説ってないものですね。
この苦労はLisp始めようしたら必ず通る道なんでしょうか?
それともWinだから?
>>973 utf8の日本語名なら使えるよ。(ubuntuのclispで確認。)
でもね。。。日本語ファイル名は基本的に避けた方がいいよ。
>>973 OSによって導入格差はあるよ。
たとえば、
carbonemacsなんて標準でslimeが付いてくるくらいなのでsbclを本家から取ってきてinstall.shを
実行して、すこしslimeようの記述を.emacsにすればおしまいだけどね。
windowsは.emacsの設定からちょっと悩むところがあるかもしれない。インストールログを
公開しておくと後々に自身も含めてみんな助かるよ。
976 :
973:2008/07/10(木) 23:35:11
レスありがとうございます。
>>974 xyzzyでutf8のファイル(ファイル名は英語)を作って読み込ませたところ、
これは Invalid multibyte or wide character で読めなかったです。
Clispは2.46を使ってます。
日本語の扱いは難しい…
日本語ファイル名はやめた方がいいかもですね。
でも、もうちょっと色々やってみます。
>>975 うわ格差かぁ…
インストールメモを忘れないうちに書いておきます。
.emacsのslime設定もネットのをコピペして、ディレクトリパスを書き換えだけでは動かず、
エラー部分をコメントアウトしながらslimeが動くようにしてます。
コメントアウトした部分は必要になるかもと思うと消せませんし。
動いてるからいいよねって、手探り状態です。
>>976 私もWindows環境でCLISP+Emacs+SLIMEを導入するのにかなり手こずりました。(´・ω・`)
CLISPの最近のverではSLIMEがうまく起動せず、古いverをいろいろ試して、
clisp-2.41-win32-with-readline-and-gettext.zip というやつでやっとエラーが出ずにSLIMEが動きました。
>>976 うん。windowsでの大きな違いがパス表現なのね。これが一番凶悪。
日本語にこだわらなければ学習目的ならば商用系が比較的楽なんだけどね。
slimeからaclを使うって方法もあるけど、この情報もあまり整備されてないね。
いずれにしてもwindowerさんたちがlispを始めるときはxyzzy以外はどこかに
帯に短し襷に長しを経験していると思うかな。他から始める人よりヘトヘトに
なってから始めることになる。
本格的にlispを使おうと思うならば、将来的にlinuxへの移行も検討したほうが
何かと楽になりますね。
Lispboxは使わんのかね諸君
>>977 バージョンの違いって影響しますね。
私はltkがActiveTcl8.5では動かず、ググったりドキュメントを読みながら
ActiveTcl8.4を使うことに行き着いてやっと動かすことができました。
>>978 *pathname-encoding*は既に
#<ENCODING "CP932" :DOS>
と設定されてました。
*terminal-encoding*も同様でした。
UTF-8を試してみたいけど、マニュアルに設定はconfig.lispを書いて、
memory_imageを作りなおせってあるが、せっかく動いてるのに怖くて出来ないorz
そもそもconfig.lispにどう書いたらいいかも分かってませんし。
>>979 ええ、ヘトヘトです。しかもまだ始まってもないような…
でもLISPとEmacsについて調べてたらxyzzyが分かってきて、楽しいです。
>>980 slimeの設定を探してた時、このスレの
>>108でlispboxは知ったんですけど、
もう意地になって一つずつインストールしてました。
>>981 LinuxはDebianで一度挫折してます。
メモリ512MBのPCなんで仮装マシンは無理だと考えてました。
その記事によると使えそうですし、vmplayer+ubuntuで遊んでみようかな。
前から気になってんスけど「ゆっくりたりましょう」って何。パワーズって誰?
ついでにスレタイ【気持ち悪い】から
「Common Lisp質問スレその5」がいいのでは。
ま、ゆっくり立てていってね!!!
>>990
(make-thread :name common-lisp :part 5)