【入門】Common Lisp その3【質問よろず】at TECH
【入門】Common Lisp その3【質問よろず】 - 暇つぶし2ch809:804
07/11/20 00:25:15
質問した私がアホでした。皆様ありがとうございます。
凝った事をしないで自分専用のツールにするんだったら、
html ぐらいまでは簡単に出来ますね。

>>807
パッケージの中の定義済みシンボルもそうやってすれば取り出せるんですね。

810:デフォルトの名無しさん
07/11/20 14:58:45
PracticalCommonLisp の第22章だけ訳してみたんだけど、
投下してみるべき? それともチラシの裏に留めるべき?

811:デフォルトの名無しさん
07/11/20 17:09:52
とりあえず投下してみるよろし。

812:810
07/11/20 18:43:39
URLリンク(www.uploda.org)
機械翻訳並みでもよければ…

813:デフォルトの名無しさん
07/11/22 06:41:28
パッケージ a と b を両方共存させる方法はないですか?
(in-package a)
(in-package b)
とすると、a のパッケージで定義されたシンボルが
未定義になってしまいます。

814:デフォルトの名無しさん
07/11/22 06:47:23
もうひとつ。異なったディレクトリにあるパッケージを、
C の include, libxxx.a の仕組みの様に使う一般的方法はありますか?
今の所以下の様にしていますが、allegro でしか使えません。
(setq system:*load-search-list*
'(:first
(:newest-do-compile
#.(make-pathname :type "fasl")
#.(make-pathname :type "cl"))
(:newest-do-compile
#.(make-pathname :directory "~/src/lib-lisp"
:type "fasl")
...


815:デフォルトの名無しさん
07/11/22 11:50:47
>>812
もっかいうpたのむ

816:デフォルトの名無しさん
07/11/22 13:12:38
俺からもうpたのむ

通報するから

817:810
07/11/22 18:44:50
>>815
物持ちのいいうpろだ探し中

>>816
原著がネットで公開されててもまずいかなやっぱり

818:デフォルトの名無しさん
07/11/22 19:04:18
基本的には、原著作者が、翻訳して公開することを明示的に許可してないと ×

819:デフォルトの名無しさん
07/11/22 21:16:36
>>816
どうでもいいだろ,地下文章なんだから
堂々とWebに公開したらそりゃまずいだろうけど
pass付きzipで短期間だけ公開なら問題ないだろ

820:デフォルトの名無しさん
07/11/22 21:54:34
lions' 本も現在なら
ファーストコピーのスキャン画像が流通するのかしらん

821:803
07/11/22 21:58:25
(´・ω・`)

822:デフォルトの名無しさん
07/11/22 22:01:16
>>821
socketじゃだめなのか?

823:デフォルトの名無しさん
07/11/22 22:10:19
これが革命の狼煙になるとは思いもしない819であった。



824:デフォルトの名無しさん
07/11/22 23:35:19
>822
socketに対応していない外部プログラムと繋げられたらばと考えまして
もっともsocketの使い方も勉強できたらうれしいです

825:デフォルトの名無しさん
07/11/23 00:53:58
>>813
つか、常にパッケージ名に::を付ければ参照できる。冗長だけど。
多分本当にしたいのは以下のような事だろ?
省略したけど use-package とすればまるごとimportできる。

cl-user(2): (defpackage :a)
#<The a package>
cl-user(3): (defpackage :b)
#<The b package>
cl-user(4): (in-package :a)
#<The a package>
a(5): (defvar *foo* 813)
*foo*
a(6): (find-symbol "*foo*")
*foo*
:internal
a(7): :pa :b
b(8): (find-symbol "*foo*")
nil
nil
b(9): (import 'a::*foo*)
t
b(10): (find-symbol "*foo*")
*foo*
:internal
b(11): *foo*
813


826:813
07/11/23 09:39:00
>>825
import と use-package ですね。これで相当便利になりました。

827:デフォルトの名無しさん
07/11/26 00:38:07
on lispの翻訳も最初はこんなのりだったなw

828:デフォルトの名無しさん
07/11/26 14:02:25
texのドキュメントを自動生成するscriptのsampleなどどこかに
ないでしょうか?

829:デフォルトの名無しさん
07/11/26 22:37:26
slimeビデオの通りに

; SLIME 2007-11-19
CL-USER> (make-hash-table)
#<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>
CL-USER> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>

と、すると以下の通りに怒られます。

SB-INT:SIMPLE-READER-ERROR at 2 (line 1, column 2) on #<SB-IMPL::STRING-INPUT-STREAM {AD3B641}>:
illegal sharp macro character: #\< [Condition of type SB-INT:SIMPLE-READER-ERROR]

環境は、

debian etch
emacs22
sbcl-1.0.11-x86-linux
slimeはcvsで取ってきたものです。

.slime.lispには

#+sbcl (setq sb-impl::*default-external-format* :utf-8)
(asdf:operate 'asdf:load-op 'swank)
(setq swank::*coding-system* "utf-8-unix")
(setf swank:*use-dedicated-output-stream* nil)
(swank:create-server :port 4005 :dont-close t)

と、設定しています。
他に何か設定が必要でしょうか。

830:デフォルトの名無しさん
07/11/26 22:54:23
>>829
slimeのビデオって何か知らないけど、、
「#<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>」は手で入力したの?

「#<」ってのは read して元に戻らないものを表示するための記号。
(もとに戻るのは配列とかリストとかね)
よって、手で入力したんだとしたら何か勘違いしてるんだと思う。

831:デフォルトの名無しさん
07/11/26 23:48:25
>>830
> >>829
> slimeのビデオって何か知らないけど、、

slimeのビデオです(サイズ150MBほどあります)。
URLリンク(common-lisp.net)

これによると

CL-USER> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>

の後に

CL-USER> (eq #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>)
T

こんなことしてるんですが
私の環境ではコケてしまいます。


832:デフォルトの名無しさん
07/11/27 14:01:23
829の勘違いというかビデオを理解していないで終了。

833:デフォルトの名無しさん
07/11/27 15:10:34
830を1兆回読むべきだろうな

834:810
07/11/27 19:27:26
原著者の Peter さんに勢いで
「日本のフォーラムに翻訳を投下したいんだけど許可くれ」
ってメールしてみたんだけど、数日経った今日返信キタ

日本語化の動きは既にあるんで
グループを手伝うかどうかは君に任せるよ、とのこと

835:デフォルトの名無しさん
07/11/27 21:29:18
829です。
>>830
手で入力しなおして気付きました。

>>832
> 829の勘違いというかビデオを理解していないで終了。

はい、理解してませんね
もうちょっと勉強します。

>>833
> 830を1兆回読むべきだろうな

さすがに1兆回はw
でも3回ほど読み直しました。

Emacs側の設定 face? mouse? 見直してみます。
みなさんコメントありあがとうございました。
お騒がせしました。


836:デフォルトの名無しさん
07/11/27 22:15:54
>>834
その翻訳グループの詳細plz

837:デフォルトの名無しさん
07/11/28 01:21:11
なんか、ひどい言われようだな。

slimeの#<で始まるのは、手入力やC-yで張ったものではないと思われます。
面倒くさいので、videoは見ていませんが。

私の環境では、
> CL-USER> (make-hash-table)
> #<HASH-TABLE :TEST EQL :COUNT 0 {ACEED81}>

の、返り値表示の上にカーソル置いてEnter、若しくはマウスで中クリックを
することによって、#<で始まる文字列が新規のプロンプト上にコピーされます。

この文字列は、lispのobjectとして評価可能です。
eqで比較も出来ます。

ちなみに、マウスの右クリックでメニューを出すと、色々選べて面白いです。


838:デフォルトの名無しさん
07/11/28 01:57:25
>>837
どこがひどい言われようなんだ?
質問者の方に問題ありすぎで、829のような質問じゃ仕方ない流れだろう。

839:デフォルトの名無しさん
07/11/28 18:59:01
流れをぶった切ってしまって申し訳ないのですが、ちょっと質問させてください。

たとえばPythonにはrange関数があって、0~10のリストとか簡単に作れますが、
Common Lispにはrangeのような関数はないのでしょうか?
そのようなリストが欲しければmake-sequenceでリスト作ってdolistで回して初期化とかそんな感じなんですかね??


840:デフォルトの名無しさん
07/11/28 19:25:37
loop はどうかね?
(loop for i from 0 below 10 collect i)


841:839
07/11/28 21:27:44
>>840
おおお、ありがとうございます!
loopマクロでできないかチラッと見てみたことはあったんですが、
浅く踏み込んだだけだったのでbelowを知りませんでした。

前々から気になっていたイディオム(?)なのでスッキリしました。
どうもありがとうございます。

842:デフォルトの名無しさん
07/11/28 22:39:55
>>841
URLリンク(www.unixuser.org)

843:839
07/11/29 01:58:10
>>842
どうもありがとうございます。
勉強してきます。

loopマクロって結構面白いですね。

844:デフォルトの名無しさん
07/11/30 03:06:35
マクロの活用による典型的なミニ言語だよね。
みんなが好き勝手にこんなもの作りだしたら煩雑になってたまらん、って
思いとどまったのがschemerでいいじゃん別に便利なんだから、って
開き直ったのがlisperなんじゃないかと個人的には理解している。

LOOPマクロマンセー

845:デフォルトの名無しさん
07/12/01 17:15:09
829です。
>>837
> の、返り値表示の上にカーソル置いてEnter、若しくはマウスで中クリックを
> することによって、#<で始まる文字列が新規のプロンプト上にコピーされます。

私の環境ではこれがうまく機能していませんでした。
そこで、slimw-2.0を入れてみたところ出来るようになりました。

>
> この文字列は、lispのobjectとして評価可能です。
> eqで比較も出来ます。

そういう事なのですね。

>
> ちなみに、マウスの右クリックでメニューを出すと、色々選べて面白いです。

これから試してみます。
コメントありがとうございました。

846:デフォルトの名無しさん
07/12/02 14:24:01
日本語文字コードの変換とかPOP3とかMD5とかGUIとか
そういう実用的なライブラリはあるんでしょうか・・・
有象無象に見える多数の処理系に様々な機能が分散して
るように見えて何がなんだかわかりません・・・。
今までPerlとTclを使ってやってたことを、Lispでやりたいんですが・・・

847:デフォルトの名無しさん
07/12/02 14:47:51
>>846
URLリンク(www.cliki.net)
あたりで探してみたら?
ASDFが使える処理系なら、
asdf-installをガンガンインストールすればいいので手間もかからんし。

ただし、もともとテキスト処理のために作られた言語でないので、
そこら辺はperlのような充実っぷりを期待しても無駄です。
GUI環境の整備も主たる言語の中では相当遅れていると言って良いです。
McCLIMも最近ようやくあまり落ちなくなったという程度だしw

848:デフォルトの名無しさん
07/12/02 19:08:42
>>846
847の書いてる通り。
商用のAllegroCLなら、さすがに大分まし、だよ。


849:デフォルトの名無しさん
07/12/03 00:10:26
オープンソースでフリーな商用CLに期待しましょう

850:デフォルトの名無しさん
07/12/03 02:30:21
どうやって商売成り立たせんの、それ。

851:デフォルトの名無しさん
07/12/03 13:50:46
MySQL方式かな

852:デフォルトの名無しさん
07/12/03 20:46:35
いちおう、最後の砦として、ffi というのもあるけど、
なんでもかんでもリンクし始めたら、lisp を使ってる意味が無くなるかな。

853:デフォルトの名無しさん
07/12/03 23:31:43
質問です。CLの正しいプログラムexprは
(or (atom expr) (symbolp (car expr)) (eq 'lambda (caar expr))
を必ず満たしますか?

854:デフォルトの名無しさん
07/12/03 23:44:30
>>853
正しいプログラムってどういう意味?
正しい式の意味?

855:デフォルトの名無しさん
07/12/03 23:55:41
>>854
(1 2 3)のようなものを式と呼ぶのか分かりませんが、
要するにevalを適用してエラーが出ないもののことです。

あと括弧閉じ忘れてますねすいません

856:デフォルトの名無しさん
07/12/05 05:53:16
>>853
貴方の意図を汲み取るのが非常に難しい。
とりあえず答えてみると、
exprの部分を例えば(list 2 3 4)で置き換えた場合、
その式を満たしていないことになるけど、
それは自明だからたぶん意図を外しているのだろう。

一々、S式で書かないで、言葉で説明してみたら?


857:デフォルトの名無しさん
07/12/05 07:51:02
>>856
予想すると、>>853はlisp処理系をlispで書こうとしているのでは。
知りたいのはフォームの定義と見た。
で、CLHS: Section 3.1.2.1 を見ると、>>853の定義でだいたい
当っているような気がする。


858:デフォルトの名無しさん
07/12/05 09:25:01
(,,゚Д゚)∩先生、S式って何ですか?

        (´ー` ) >>853

 (  ゚д゚) ……

 ( ゚д゚ )


859:デフォルトの名無しさん
07/12/05 09:59:34
処理系を書くとか、そういうのって適当にやると結局後で困るんだよね。
最初から定義を見て形式保ってやっていく方がいい。

860:デフォルトの名無しさん
07/12/05 19:19:23
そうだLispを作ろう
 ↓
第一級でないオブジェクトってなんなの?
 ↓
リストの先頭に現れるらしい
 ↓
むしろリストの先頭に第一級オブジェクトが現れるのがおかしい
 ↓
リストは全部スペシャルフォームってことにすれば……
 ↓
……リストの先頭は必ずシンボルになる
 ↓
それなんてCL ←今このへん

861:デフォルトの名無しさん
07/12/05 19:22:00
オブジェクトはすべて平等ですよ。
第一級オブジェクトという考え方自体がオブジェクト差別主義に毒されてます。

862:デフォルトの名無しさん
07/12/05 19:24:24
ウィンストンのlispの3版に
lispでlisp処理系を作るとか
そういうのが載っていそうな気がする

863:デフォルトの名無しさん
07/12/05 21:55:00
残念でした~。CLではシンボル以外にlambda式もフォーム先頭にこれるんだな。

864:デフォルトの名無しさん
07/12/05 21:57:49
ああそれはわかっているのか、ごめん。

865:デフォルトの名無しさん
07/12/05 21:58:02
>>863
>>853にはちゃんとそう書いてありますね。

lispでlispを作るって一見無駄に見えますけど、
xyzzy lispでxyzzy schemeを作ったら便利そうですね。
とっくの昔に誰かが書いてそうですが。

866:デフォルトの名無しさん
07/12/06 01:47:04
なぜ便利そうだと思ったのかkwsk


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch