07/10/22 22:49:39
>>769
破壊的にやってみた
(defun shuffle (list)
(let ((st (make-random-state t))
(len (length list)))
(dotimes (i len list)
(rotatef (car (nthcdr (random len st) list))
(car (nthcdr (random len st) list))))))
771:デフォルトの名無しさん
07/10/23 20:25:05
ありがとうございます。参考にします。
772:デフォルトの名無しさん
07/10/25 22:56:58
8パズルを盲目的探索、深さ優先探索、幅優先探索を用いて解け
盲目的探索
初期状態#(8 3 1 0 4 7 6 5 2)
深さ優先探索
初期状態#(0 8 1 4 3 7 6 5 2)
幅優先探索
初期状態#(4 8 1 0 3 7 6 5 2)
この3つの目標状態は#(1 2 3 4 5 6 7 8 0)とする
実行フォームは(time...)で囲むこと
この問題が全くわかりません。。。どなたかお願いします
773:デフォルトの名無しさん
07/10/25 23:35:20
SBCLに組み込まれている関数のリファレンスとかありませんか?
あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・
→トップレベルで (setf xxx 111)で定義したxxxの一覧とか
774:デフォルトの名無しさん
07/10/25 23:57:23
HyperSpec
775:773
07/10/25 23:58:15
自己レスだが、リファレンス見つけた
全部英語だが・・・ orz
URLリンク(www.cs.cmu.edu)
>あと、現在定義されている変数の一覧とか確認できると便利なんですが・・・
>→トップレベルで (setf xxx 111)で定義したxxxの一覧とか
↑これはご存知のかた教えてください m(_ _)m
776:デフォルトの名無しさん
07/10/26 01:32:57
(loop for s being the symbols in *package* if (boundp s) collect s)
とか?
777:デフォルトの名無しさん
07/10/26 16:55:01
777ゲット!
778:デフォルトの名無しさん
07/10/28 16:24:23
与えられた引数が文字列であるか数値であるかを判断する…ってのはどないしたらいいんでしょうか。。
779:デフォルトの名無しさん
07/10/28 16:29:18
numberpとかstringpじゃだめなの?
780:デフォルトの名無しさん
07/10/28 16:33:16
>>779
ありがとうございました。
781:デフォルトの名無しさん
07/11/02 00:36:22
Lispからテーブル形式のデータを出力して、エクセルなどで開いたり、逆に表形式のデータを読み込んで変数に値を貼り付けたりしたいのですが、そういうことは可能なのでしょうか。
Lispは、Allegro Common Lispを使っています。
782:デフォルトの名無しさん
07/11/02 00:53:10
>>781
CSV
783:デフォルトの名無しさん
07/11/02 01:35:10
CSVファイルを読み書きするプログラムを書けばいいんですね。
頑張ってみます。ありがとうございます。
784:デフォルトの名無しさん
07/11/03 00:19:42
2つ以上続くアルファベットを、文字列に変換するにはどうしたらいいですか。
例えば以下のように。
abc -> "abc"
coerseだと一文字の場合しか変換できなくて困ってます。
785:デフォルトの名無しさん
07/11/03 00:28:39
(string 'abc)
"abc"
とか
(format nil "~A" 'abc)
"abc"
とか?
xyzzyだとできるけど、他のはわからん
できないならスレ違いすまんw
786:デフォルトの名無しさん
07/11/03 00:32:07
>>784
エスパーレスすると、君の知りたいのは symbol-name
787:デフォルトの名無しさん
07/11/03 15:32:34
>>785
string使えました。ありがとうございます。
>>786
symbol-nameで、やりたかったことができました。
勉強不足ですみません。
788:デフォルトの名無しさん
07/11/04 21:48:52
Lispって何ができますか?
789:デフォルトの名無しさん
07/11/04 22:33:52
プログラムの記述ができます
790:デフォルトの名無しさん
07/11/05 01:29:11
初心者に適した本はない?
もしくはサイトでもOK。
興味が沸いてきた。
791:デフォルトの名無しさん
07/11/05 01:34:58
URLリンク(usir.kobe-c.ac.jp)
792:デフォルトの名無しさん
07/11/05 01:44:58
いまANSI Common Lisp読んでる
793:デフォルトの名無しさん
07/11/05 01:54:11
>>791
GIFアニメが鬱陶しくて集中できないw
794:デフォルトの名無しさん
07/11/10 17:44:40
URLリンク(www.ibm.com)
きたぁぁぁぁぁぁっぁぁぁぁぁぁぁぁlっぁああああああぁぁぁぁl!!!!!!!!!!!!!!!!!!!!!!
795:デフォルトの名無しさん
07/11/11 07:56:47
>>794
I love emacs だけど Cusp は気になるなー。
796:デフォルトの名無しさん
07/11/11 10:52:05
気になるが、本スレ向けの話題じゃね?w
797:デフォルトの名無しさん
07/11/11 17:00:05
本スレは最近調子がわるいのだ
798:デフォルトの名無しさん
07/11/11 18:10:04
Eclipse自体が重いうえに、ちょっとした拡張にも手間がすげーかかるんで正直あんまり魅力を感じない…。
でもEmacs使わない層には評判いいね。見た目とか、IDEをマウスで操作したい層にはいいのかも。
799:デフォルトの名無しさん
07/11/12 16:20:48
Emacs + slimeで十分だろ,常識的に考えて...
800:デフォルトの名無しさん
07/11/12 19:02:27
JavaとかC++とかそのへんの、人間が面倒な手間を強要される言語だと
かなり便利なんだよ、IDE。
801:デフォルトの名無しさん
07/11/13 00:45:43
>>799
emacsの代わりにeclipseなだけで基本slimeだから
エディタとのインターフェースにelisp使うかjava使うかってだけな話だよねぇ?
802:デフォルトの名無しさん
07/11/16 21:15:11
newlisp使ってる香具師いる?
803:デフォルトの名無しさん
07/11/17 00:50:35
CMUCLやSBCLでPOSIX Pipeなどを使って外部プロセスと
データのやり取りをするにはどうすればいいのでしょうか?
804:デフォルトの名無しさん
07/11/19 11:09:27
doxygen みたいな自動ドキュメント化ツールってありますか?
日本語が使えると嬉しいのですが.
805:デフォルトの名無しさん
07/11/19 22:11:15
>>804
作ればいいだろ。
それがLispクオリティ
806:デフォルトの名無しさん
07/11/19 22:25:20
確かに Lisp でなら3日で作れそうな気がするな
気がするだけだがw
807:デフォルトの名無しさん
07/11/19 22:43:22
>>806
(loop for x being each symbols in :mypkg
when (and (fboundp x) (eql (symbol-package x) (find-package :mypkg)))
collect (list x (documentation x 'function)))
とりあえずドキュメント文字列取りだしたから、後は任せた
808:デフォルトの名無しさん
07/11/19 23:30:25
>>804
doxygenを使えばいいのかと
日本語も使えるわけなんだし。
809: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