トップページ⇒tech
1001コメント312KB

【入門】CommonLisp【質問よろず】

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

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

「いいものの本質は、いかなる時代においても変わらない」byパワーズ
0153デフォルトの名無しさんNGNG
>>152
$599(62,000円)からあるけど。
0154デフォルトの名無しさんNGNG
>>150
日本語が通るのはLispWorksだけ?
0155デフォルトの名無しさんNGNG
>>154
> 日本語が通るのはLispWorksだけ?
たぶんそう。ただ上記にリストアップされていない、JVM上で動作するABCL(Armed Bear Common Lisp)は
日本語通りそうな気もする。だれか試していない?
0156デフォルトの名無しさんNGNG
オマエガタメセ
0157デフォルトの名無しさんNGNG
>>155 (length "いろは") => 6だって。設定次第でどうにかなるのかな?
0158デフォルトの名無しさんNGNG
>>157
ウニコードだからむりぽ。
LispWorks, ACL も3が蛙。
0159デフォルトの名無しさんNGNG
文字列→symbol→bindされた関数→適用
するのにCommonLispでは (funcall (intern "+") 1 2)
schemeだと
((eval (string->symbol "+") (scheme-report-environment 5)) 1 2)
こんなのしか書けなかった。もっとましな書き方があるはずですよね。
0160デフォルトの名無しさんNGNG
intern 相当がschemeにはないからな
0161デフォルトの名無しさんNGNG
色々あったが、一応社内の小規模アプリをACLで書く許可が出た。
これをパイロットPJとして、使い勝手、速度、仕様変更対応コストなど
データを取る予定。
0162デフォルトの名無しさんNGNG
どんなことがあったの?
0163デフォルトの名無しさんNGNG
>>161
小規模1人プロジエクトじゃデータにならんと思われ。
0164デフォルトの名無しさんNGNG
「Lispの表記をUML拡張できないか?詳細なものを」by課長

殺すしかねぇな
0165デフォルトの名無しさんNGNG
COBOLのほうがまだましだな。
0166デフォルトの名無しさんNGNG
>>164
何か問題でも?
0167デフォルトの名無しさんNGNG
>>166
殺人は犯罪ですから。
0168デフォルトの名無しさんNGNG
UMLでlispを書け、というのはわからんでもない。
一応UML2.0の読み書きぐらいなら仕事で使うレベルならば困らない。
が、私はスリーアミーゴスでもメラーでもケントベックでも、ファウラー
でもない。
「lispコードを読み込んで、UMLを作成するtool」なんざ作れん。
んな技術あったらラショナルに転職するわい。
だいたいLisp用にUMLを拡張するだけでも私の手に余るってんだよ。
0169デフォルトの名無しさんNGNG
>>167
社会的に抹殺してやれば団塊世代なんて直ぐに自殺しますよ。意外と軟弱。
0170デフォルトの名無しさんNGNG
物騒な話はヨソでやるよろし。
0171デフォルトの名無しさんNGNG
LISPコードはマクロのせいで、全部展開しないとパースは無理だから
機械的に意味を抽出できても意図とはかけ離れたものになると思う
コンパイラを1つ作るようなもの
0172デフォルトの名無しさんNGNG
macroexpandすればいいだけやん。
どのみちLispのコンパイラなんて簡単に書けるんだから
そう大層に言うほどのことじゃない。
0173デフォルトの名無しさんNGNG
いやだから、macroexpandした後の内容でいいのかって話
0174デフォルトの名無しさんNGNG
? 着目したい構造がマクロで定義されているんだったらそれはmacroexpandせずに
残せばいい話でしょ?
選択的にmacroexpandするようなのはコンパイラなんて気負うまでもなく書けるでしょ。

C/C++のcppマクロなんかとはわけが違うよ?

0175デフォルトの名無しさんNGNG
問題はdefmacroの扱い方以前に、defunでもdefmethodでも
defclassでもdefgenericでもいいのだが、それらをクラス図で扱うと言うの
なら、UMLをLisp用に拡張しなければならないということだ。
言語事態があまりにもC#やJAVAとはかけ離れすぎているから、
メタクラス使って拡張してXMI対応もしなければならない。

これを三人(私+新人二人)で、一月ではキツくねぇだろうかと、
思った次第(このtool自体をLispで書けは流石に無茶だろう)。
0176デフォルトの名無しさんNGNG
>>175
ふと思ったんだが、その課長さんUMLとXMLと勘違いしていないかい?
どっかで「LISPでプログラム書いてXMLに変換するのはナウいですよ」とか言われて...
課長さん、忘れない様にブツブツ言いながら帰ってくる途中に
XML XML XML ... <地下鉄の中><居眠り><ドトールでコヒー> ... UML UML UML
ってなぐあい。あり得ないかもしれんが、そうであることを君のために祈っているよ(笑
0177デフォルトの名無しさんNGNG
>UMLをLisp用に拡張しなければならないということだ

やってみたら?
もし出来たら発表してよ。
0178デフォルトの名無しさんNGNG
仕事で使うものをここで発表なんかするかよ
0179デフォルトの名無しさんNGNG
arcっていつ出るの?
0180デフォルトの名無しさんNGNG
arcはグラハムの脳内言語ですが何か?
奴に処理系作る時間は無いかと
0181デフォルトの名無しさんNGNG
じゃあグレアムは普段何やってんだろ。
働かなくても食っていける資産はあるだろ。
まさかエッセイばかり書いているわけでもあるまい。
0182デフォルトの名無しさんNGNG
グレアムって誰?
0183デフォルトの名無しさんNGNG
Paul Graham
ポール グレアム
ポール グラハム

どっちが正しい?
0184デフォルトの名無しさんNGNG
つか、香具師はフランス人?
0185デフォルトの名無しさんNGNG
アメリカのLisperと話す時は「グレアム」で通じるけど。
「グラハム」って呼んでる人は会ったことない。
0186デフォルトの名無しさんNGNG
グリィォムだな。
0187デフォルトの名無しさんNGNG
    ∧_∧
    (゚∀゚  )ー┐ グレアムグレアム!
    しヽ   し′
    彡 >  彡) 
      /  / /
     (_(__)
    ∧_∧ 
 ┌ー(  ゚∀゚)グレアムグレアム!
  丶J   /J
   ( ミ   < ミ
   丶 丶 丶
   (__)_)
0188デフォルトの名無しさんNGNG
食べすぎの日記にも出てきませんね.
資産があって暇なら数値計算にも手を出して,文書を書いて欲しいです.
0189デフォルトの名無しさんNGNG
奴はLISP処理系を1から作るなんてことはしない
CommonLispのラッパーみたいなので済まそうと考えてるヘタレ
どう見てもarcは破綻してるだろ
0190デフォルトの名無しさんNGNG
arcってよく知らんのだが、CLと何が違うの?
ラップでもなんでもいいんだが、ただの方言でしかないのか?
0191デフォルトの名無しさんNGNG
>>190
http://www.paulgraham.com/arcll1.html
http://www.paulgraham.com/ilc03.html

この辺を読んでイメージをつかんでくれ、と言いたいところだけれど、
原理的なところと実用的なところの話がごっちゃに出てきてて、
いまいちはっきりしないのは確かだな。

一応、かつて上記のを読んで印象に残ってるのは、
名前空間はひとつ、てのとマクロをオプションで実行時展開できるようにする、
て話かなあ、CL と違うってことだと。
まあ、基本的には Lisp は Lisp なんで糖衣構文で何とかならない?
的なネタもある、というか多いけれど。
あとはインデントに構文的な意味を与える、とかもあったかな。
0192デフォルトの名無しさんNGNG
おめーらがやってる批評もどきのRubyに対する足引っ張りはな、
十把一絡げの愚図Java,C++,Perlみたいなカス言語フリーク野郎が
Ruby作者matzのような結果を出した人間と自分との格差を認められず
おこがましくも精神的に一矢報いようとするために
仰々しく「批評」とか名付けた浅ましい自己主張で攻撃して
自尊心を慰めてるにすぎない。

実際問題として、お前みたいな奴が考えてるほど
批評された側の役に立ってるわけがないだろ?ボケが。
その口から出るクソが誰かに感謝でもされたか?ああ?
自意識過剰甚だしいんだよ、この自己愛のボケ奴隷が。
数倍マシ?寝言は寝て言えよこの恥知らず野郎。
ネットで万能感むき出しにしてオナってんじゃねーよ。

批判する野党が重要だぁ?プ
公明党にでも投票してろ白痴野郎。
0193デフォルトの名無しさんNGNG
>>192
A: 誤爆
B: 編集忘れ
C: スクリプト
D: 釣り
正解はどれ?
0194デフォルトの名無しさんNGNG
どっかで見た
E: コピペ
0195デフォルトの名無しさんNGNG
LispでSOA出来ますか?
ようはLispでSOAPが出来ますか、と言うことですが。
0196デフォルトの名無しさんNGNG
LISPは完成された言語である。
故にSOAP対応なんてする必要がない。
去れ、邪教徒よ。
0197デフォルトの名無しさんNGNG
lisp や scheme で数値計算をするにあたって,どんなライブラリがありますか?
octave 並に楽に書けると嬉しいです.

(let* ((time (linspace 0, 1, 128))
       (y (cos time)))
       (Y (ffi y))
...

みたいな.
;; slib の plotting はジョーク?
0198197NGNG
スマン.matlisp というのが cliki にありました.

どちらかというと,Windows でも良い処理系がある scheme の方が
ポータビリティ (?) がいいのかな?
0199デフォルトの名無しさんNGNG
金に糸目をつけなければCommon Lispにもあるんでない?
0200デフォルトの名無しさんNGNG
>>196
完成って・・・
SOA対応でlispからSOAの手軽な実装方法とか出せたら、
今のC#とかJAVAに取って代われるかもしれないぞ?
0201デフォルトの名無しさんNGNG
>今のC#とかJAVAに取って代われるかもしれないぞ?
なんか今年の初夢みたいな話だな(笑
0202デフォルトの名無しさんNGNG
決心した。
ACL7.0を買う!!
0203デフォルトの名無しさんNGNG
>>202
俺にも(ヽ゚д)クレ
0204デフォルトの名無しさんNGNG
WINDOWS環境です。
CLISPのバイトコードをJAVAとかVC++から呼ぶことは出来ますか?
またCLISPからC++やJAVAを呼ぶことは出来ますか?

JYTHONみたいにJAVAのクラスをぞのまま呼べるCLの環境とか
ありますか?(これは流石にないか)
0205デフォルトの名無しさんNGNG
できません(バイトコードのフォーマットが違います)
できません(exeにすれば実行はできるかもしれません)
できません
0206デフォルトの名無しさんNGNG
ACL
0207デフォルトの名無しさんNGNG
>>204
Java と連携したいなら ABCL とか。
http://armedbear-j.sourceforge.net/
http://www.cliki.net/Armed%20Bear%20Lisp

JFLI が LispWorks 以外で動くのを気長に待つとか。
http://jfli.sourceforge.net/

;; どっちも使ったこと無いけど。
0208デフォルトの名無しさんNGNG
>>207
サンクス〜〜

つかjfliは凄くないかい?
ぱっと見はJYTHONを超えてるよ。
ま、見た目なんだが。
0209デフォルトの名無しさんNGNG
>>204
> またCLISPからC++やJAVAを呼ぶことは出来ますか?

これは,c++ のヘッダファイルを読んで defclass するってことですか?
c++ で作った共有ライブラリを clisp で呼ぶことはできますね (って知ってるかorz).
0210デフォルトの名無しさんNGNG
>c++ で作った共有ライブラリを clisp で呼ぶことはできますね (って知ってるかorz).

・・・・・・・・・知らないです。
CLISP歴2時間なんで.....orz
0211デフォルトの名無しさんNGNG
Java との連携なら、Bill Clementson の Blog にまとまってるよ。

http://lwn.net/Articles/104991/
http://home.comcast.net/~bc19191/blog/index.html

Rich Hickey って素敵な名前だな。あやかりたい・・・。
0212デフォルトの名無しさんNGNG
Lispマシンについて興味あります。
ちょっとづつ調べているんですが、質問させてください。

1.Lispマシンは現在販売されているのでしょうか?

2.LispマシンはOSもLisp実装なのでしょうか?

3.趣味で作ってみたい(FPGL+VHDL)と思ってますが、
  同様に挑戦された方の記録をご存知でしたら教えて
  ください。


0213デフォルトの名無しさんNGNG
>>212
似た事をしている人なら居るよ。
http://common-lisp.net/project/movitz/

本物の Lisp マシンは GC を H/W でやってたらしいね。
0214デフォルトの名無しさんNGNG
http://pocket.free.fr/html/casio/ai-1000_e.html

これもある意味 LispM かな。ちょっと欲しいかも。
0215デフォルトの名無しさんNGNG
>>213,214
さっそくのレスありがとう。

>>213
GCもハードですか・・・
さすがLispマシンですね。

教えていただいたページを読んでみます。
英語・・・なので、読むの時間がかかりそうですが・・・(^ ^;

>>214
HPを見たのですが、Lispという記述がみつからなかった
のですが、ソフトはLispで実装されているのですか?
0216デフォルトの名無しさんNGNG
>>215
AI-1000 についてはここら辺を見て下さい。
ttp://www2b.biglobe.ne.jp/~houmei/restore/ai1000/
ttp://www6.plala.or.jp/uekiya/pockecom/pj.html
http://jp.franz.com/jlug/ja/resources/implementations.html

以前 Lisp スレで話題に上がっていた LispM エミュレータ。
http://www2.parc.com/istl/groups/nltt/medley/
http://www.heeltoe.com/retro/cadr/
(medley は Solaris で動きました。
URL はここ経由です。 http://lambda.s55.xrea.com/)
0217デフォルトの名無しさんNGNG
>>216
わざわざありがとうございます。

2年位かけて自分だけのLispマシンを作るつもりです。
最終的にはハードも自作できたらいいなと思っています。

なにぶん初心者なので、まずは教えていただいたMovitzを
いじって簡単なOSをつくるところから始めたいと思います。

では、なにか成果がありましたらご報告します。
0218デフォルトの名無しさんNGNG
>>217
なんか、往年のX68000ユーザみたいなこと言うね。その姿勢は好きなんで頑張ってね。
0219デフォルトの名無しさんNGNG
MorphyOneの二の前になりそうな悪寒
0220デフォルトの名無しさんNGNG
失敗しても誰にも迷惑かからないんだからいいんじゃないの?
0221デフォルトの名無しさんNGNG
>>219
懐かしい…
0222デフォルトの名無しさんNGNG
>>187 ちゃんと括弧閉じろよ
0223デフォルトの名無しさんNGNG
>>219
>MorphyOneの二の前になりそうな悪寒

二の前は一?
0224デフォルトの名無しさんNGNG
lispでservletみたいなことってできないの?
0225デフォルトの名無しさん05/01/20 06:38:16
>>224
余裕でできる。 aserve でググれ。
0226デフォルトの名無しさん05/01/20 21:16:56
aserver落としてきた
でもコンパイルできない
faslが作れん
何故だ?
0227デフォルトの名無しさん05/01/21 01:33:31
ぼうや(rya
0228デフォルトの名無しさん05/01/21 07:01:25
>>226
aclはデモ版か?
(sys:update-allegro)とかちゃんとやっとけや(゚Д゚)ゴルァ!
0229デフォルトの名無しさん05/01/21 22:42:08
updateしてんだけどなぁ。。。
何故かコンパイル中に強制終了する
やり方間違っていんのかなぁ?
0230デフォルトの名無しさん05/01/22 00:39:16
226はaserverって書いてるけどAllegroServe(aserve)のことか?
「落としてきた」って書くからにはACL突っ込むと勝手にインストールされる奴じゃ
なくてPortable AllegroAserveをコンパイルしようとしてるってこと?
いずれにしても、処理系のバージョンとかプラットフォームとかどんな症状なのかとか
もちっと詳しく書けや。エスパー募集中ならそれも書いとけ。
0231デフォルトの名無しさん05/01/22 04:32:22
>>230
環境はWinXPにACL6.2TrialでaserverはAllegroServeを落としてきた。
んで、faslがないからコンパイルしたら途中で異常終了する。

こんなところ。
0232デフォルトの名無しさん05/01/22 06:58:02
型書いたらちゃんと最適化してくれる?
関数の入り口に型書いたらちゃんとその型以外はブロックしてくれる?
気になって夜も練れません
0233デフォルトの名無しさん05/01/22 06:59:28
関数の戻り型ってどう書くの?
つーか書けるの?
こうして朝を迎えました
0234デフォルトの名無しさん05/01/22 07:12:55
JAVAみたいにpackageってあるの?
ありそうなんだけど、書き方がわからない
自分で定義した関数や変数を自前のpackageに入れるってできますか?
0235デフォルトの名無しさん05/01/22 08:46:33
>>232
> 型書いたらちゃんと最適化してくれる?
言語仕様上は要求されていないが、最適化してくれる処理系は存在する。

> 関数の入り口に型書いたらちゃんとその型以外はブロックしてくれる?
当て推量だが、あなたが意図しているようなのは通常の関数にはないかも。

ジェネリック関数は、引数の型による自動エラー報知機能を持っていると
考えてもいいかな。

普通にコーディングしていれば、型宣言をしなくても、予想外の型に対して
変なことをしようとすれば実行時にエラーとなり、コード上でそれを捕捉可能。
型宣言をしておくと、賢いコンパイラは、型やぶりな関数呼び出しだと推論
できたときは警告やエラーを発するものもある。たとえば(car 1)などね。

0236デフォルトの名無しさん05/01/22 08:51:19
>>233 関数の戻り型ってどう書くの?
http://www.lispworks.com/documentation/HyperSpec/Body/d_ftype.htm
(declare (ftype (function (number) float) sine))
0237デフォルトの名無しさん05/01/22 08:55:23
>> 234
> JAVAみたいにpackageってあるの?
Javaと同等なものかは分からないけど、パッケージはある。

> ありそうなんだけど、書き方がわからない
> 自分で定義した関数や変数を自前のpackageに入れるってできますか?
できる。英語が読めるんなら、最近はネットで入門書がごろごろしていると思うよ。
0238デフォルトの名無しさん05/01/22 09:03:51
>>234
たとえば、「Practical Common Lisp」の
21. Programming in the Large: Packages and Symbols
http://www.gigamonkeys.com/book/programming-in-the-large-packages-and-symbols.html
とかね。俺は読んで無いんで内容の保証はできんけど。
0239デフォルトの名無しさん05/01/22 10:28:26
>>234
Lispのインタラクティブな環境でパッケージを移動して作業してみると、
パッケージってのが単なる名前空間って事が感覚として良くわかる。
0240デフォルトの名無しさん05/01/22 17:37:47
>>231
acl 起動して
(require :aserve)
して、
c:\Program Files\acl62-trial\examples\aserve\examples.cl
をロードして、
(net.aserve:start :port 7777)
して、
http://localhost:7777/
を開く。
0241デフォルトの名無しさん05/01/22 18:44:27
$599のACL7ってどの程度のものなんでしょうか?

個人でちょっと勉強がてらに使うことを考えているのですが?

めちゃくちゃ制限があるのでしょうか?
0242デフォルトの名無しさん05/01/22 19:25:39
このスレの住人は、LISPでどんな「問題」を解いているんですか?
つーか、みんな院生?
0243デフォルトの名無しさん05/01/22 19:26:46
Lispでお洗濯物問題とお夕飯問題を解決しました!
0244デフォルトの名無しさん05/01/23 01:48:12
>>240
動いたよ〜ありがとう♪
しかし、なぜfaslが作れなかったのか・・・
0245デフォルトの名無しさん05/01/23 02:26:31
(defun func()(* 12 12))
func
(defpackage "my-package"
(:export "FUNC"))

funcという関数をmy-packageにexportしたいんですが、defpackageでエラー
になります。何が間違ってるんでしょうか??
0246デフォルトの名無しさん05/01/23 09:21:45
>>245

CL-USER> (defpackage "MY-PACKAGE" (:export "FUNC")) => #<PACKAGE MY-PACKAGE>
CL-USER> (in-package "MY-PACKAGE") => #<PACKAGE MY-PACKAGE>
MY-PACKAGE> (defun func () (* 12 12)) => func
MY-PACKAGE> (in-package "CL-USER") => #<PACKAGE COMMON-LISP-USER>
CL-USER> (my-package:func) => 144
CL-USER> (func) -> undefined function FUNC [Condition of type SYSTEM::SIMPLE-UNDEFINED-FUNCTION]
0247デフォルトの名無しさん05/01/23 09:23:55
246の続き。
CL-USER> (shadowing-import 'my-package:func) => T
CL-USER> (func) => 144
0248デフォルトの名無しさん05/01/23 09:36:56
>>245 あっと、意図を汲み間違えた。cl-user::funcをmy-package内へimportしたいのね。
CL-USER> (defun func()(* 12 12)) => FUNC
CL-USER> (defpackage "MY-PACKAGE" (:import-from "CL-USER" "FUNC")) => #<PACKAGE MY-PACKAGE>
CL-USER> (my-package::func) => 144
CL-USER> (my-package:func) -> #<PACKAGE MY-PACKAGE> has no external symbol with name "FUNC"
[Condition of type SYSTEM::SIMPLE-PACKAGE-ERROR]
CL-USER> (export '(my-package::func) "MY-PACKAGE") => T
CL-USER> (my-package:func) => 144
0249デフォルトの名無しさん05/01/24 03:32:45
>>248
ありがとうございます。出来ました。
これってC++とかのnamespaceと似たようなものと考えていいんでしょうか?
C++だと自作のutilityとかを

namespace my_util{.....}

とかしてるんですが、LISPでは作法的にどうなんでしょうか?
0250デフォルトの名無しさん05/01/24 04:12:25
なんか初心者用に問題でも出してやればいいんじゃない?
一日一問でさ
0251デフォルトの名無しさん05/01/24 06:42:26
lispのVMって無いの?
apatchでlispとか使えないのかな

(個人的にはACLとか大規模なもんじゃなくてclispやxyzzyとapatchが
連携できればいいのになぁ、と思っている)
0252デフォルトの名無しさん05/01/24 07:47:09
>>249
C++のnamespaceと似た役割をします。
たとえば、mail.lispというライブラリを次のように書いたりします。
;;; file mail.lisp starts here
(defpackage "MAIL" (:export "SEND" "RECEIVE"))
(in-package "MAIL")
(defun send () ...)
(defun receive () ...)
;;; file mail.lisp ends here

mail.lispを使う側のパッケージでは特に何も宣言せずに、
mail:send、mail:recieveと書いてアクセスするか、
(use-package "MAIL")と最初に書いておく事で、単にsend, mailとして
アクセスできるようにします。もしくは (defpackage "FOO" (:use "MAIL")))など
としても、その後はパッケージFOO内ではsendとmailと書けます。
■ このスレッドは過去ログ倉庫に格納されています