(make-thread :name common-lisp :part 5)
at TECH
1:デフォルトの名無しさん
08/07/12 12:43:33
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)
ま、ゆっくりたりましょう。
「いいものの本質は、いかなる時代においても変わらない」byパワーズ
(list
(url スレリンク(tech板)l50 :part 1)
(url URLリンク(pc11.2ch.net) :part 2)
(url URLリンク(pc11.2ch.net) :part 3)
(url スレリンク(tech板)l50 :part 4))
2:デフォルトの名無しさん
08/07/12 12:45:26
((お勧めの Common Lisp 処理系)
(SBCL: URLリンク(sbcl.sourceforge.net)
:プラットフォーム UNIX, Linux, Mac, Windows(移植中)
:開発 活発
:日本語 使える(UCS4, UTF8, EUC)
:特徴 一番お勧めのコンパイラ。)
(CLISP: URLリンク(clisp.cons.org)
:プラットフォーム UNIX, Linux, Mac, Windows
:開発 そこそこ活発
:日本語 使える
:特徴 バーチャルマシン。遅いがフットプリントが小さい。)
(CMUCL: URLリンク(www.cons.org)
:プラットフォーム UNIX, Linux, Mac
:開発 そこそこ活発
:日本語 使えない(回避法有り)
:特徴 高速コンパイラ。SBCL の元になった。)
(Clozure CL: URLリンク(openmcl.clozure.com)
:プラットフォーム PPC-Linux, Mac, x86_64-Linux と x86_64-FreeBSD に移植中
:開発 そこそこ活発
:日本語 使えない (pre ver 1.1なら多少扱える。)
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))
3:デフォルトの名無しさん
08/07/12 12:46:04
((商用CL) ;;誰か補間よろ
(Allegro: URLリンク(jp.franz.com)
:プラットフォーム Windows ,Mac OS X , Freeを含む各種UNIX
:開発 ほとんど本陣
:日本語 使える(内部UTF16,外部 プラットフォーム毎)
:特徴 お高いがもっとも頼れる。申し込みが必要だがFree Express Editionあり )
(LispWorkss: URLリンク(www.lispworks.com)
:プラットフォーム Windows ,Mac OS X
:開発 半年にいっぺんくらいアップデート
:日本語 使えるみたい(完全に対応しているかはちとわかりかねまする)
:特徴 IDEベースです、フリー版はconsセルの上限が来るとダイアログがでてしまいます、SDLとかで遊ぶとすぐに引っかかります ))
((その他)
(ABCL: URLリンク(armedbear-j.sourceforge.net)
:特徴 JavaVM 上で動く。JavaVM のバイトコードを生成。)
(GCL: URLリンク(www.gnu.org)
:特徴 日本発 Kyoto Common Lisp の直系。)
(ECL: URLリンク(ecls.sourceforge.net)
:特徴 Lisp->C コンパイラ。組み込み可能らしい。こちらもKCLの系譜))
4:デフォルトの名無しさん
08/07/12 12:47:33
ANSI Commn Lisp 仕様関係
URLリンク(www.lisp.org)
URLリンク(www.cs.cmu.edu)
URLリンク(lispdoc.com)
日本語のチュートリアル
URLリンク(web.sfc.keio.ac.jp)
URLリンク(www.h7.dion.ne.jp)
URLリンク(www.geocities.jp)
URLリンク(home.soka.ac.jp)
URLリンク(www.haun.org)
URLリンク(wisdom.sakura.ne.jp)
URLリンク(www-kasm.nii.ac.jp)
5:デフォルトの名無しさん
08/07/12 12:57:16
進んだ話題が欲しい人に...
(和文)
URLリンク(www.geocities.co.jp)
URLリンク(www.geocities.co.jp)
URLリンク(lispuser.net)<)
URLリンク(www.cl-user.net)<)
URLリンク(planet.lisp.org)
URLリンク(groups.google.co.jp)
URLリンク(www.cliki.net)
URLリンク(cl-cookbook.sourceforge.net)
URLリンク(www.gigamonkeys.com)
( URLリンク(www.apress.com) よりpdf版が入手可能)
URLリンク(www.psg.com)
URLリンク(www.cs.cmu.edu)
その他の情報
Wikipedia項目リンク
6:デフォルトの名無しさん
08/07/12 12:59:00
((おまけの処理系
(POPLOG: URLリンク(www.cs.bham.ac.uk)
Lisp, Prolog, ML のコンパイラ)
(WCL: URLリンク(wcl.kontiki.com)
Shared Library として使える Lisp)
(Movitz: URLリンク(common-lisp.net)
フルスクラッチの Lisp OS)
(CADR LispM: URLリンク(www.heeltoe.com)
MIT で使われていた LispM のソースを公開したもの))
((その他のリンク
(lush: URLリンク(lush.sourceforge.net)
Lisp Universal Shell)
(Meme channels: URLリンク(meme.b9.com)
Lisp の IRC Log)
(Paul Graham の ANSI Common Lisp:
URLリンク(www.pearsoned.co.jp)
Common Lisp の 参考書を探しているならこれ一択))
7:デフォルトの名無しさん
08/07/12 17:17:57
テンプレ置き場
URLリンク(wiki.fdiary.net)
8:デフォルトの名無しさん
08/07/12 17:29:44
URLリンク(wiki.fdiary.net) ここはテンプレ置き場に急遽wikiを作った。
自由に編集してください。
id:guest password:cl
です。ブログを持っていないけどインストールログをメモして起きたいと
いう用途に使っていただいてもOKです。lispに関するものでしたら、ご自由に
ページを作成してください。
9:デフォルトの名無しさん
08/07/12 22:29:14
>>1
The variable COMMON-LISP is unbound.
10:デフォルトの名無しさん
08/07/12 22:37:13
>>9
失敗したが、そこはマクロを被したということでごまかしておく (^^〃)
11:デフォルトの名無しさん
08/07/14 09:00:54
>>10
どういうマクロ?
12:デフォルトの名無しさん
08/07/14 12:11:26
>>11
(defmacro make-thread (&key name part)
`(make-thread# :name ',name :part ,part))
13:デフォルトの名無しさん
08/07/15 12:14:59
整数のリストを渡すと任意の個数で合計が任意の数になるリストを
返してくれる関数を作りたいのですが、これを作成するには
OnLispの非決定性を導入するしか無いのでしょうか?
そこまでの力量が有る自信が無いので他に方法が有ればご教授願います。
14:デフォルトの名無しさん
08/07/15 14:39:06
は?
15:デフォルトの名無しさん
08/07/15 14:43:48
ナップザック問題でもやりたいのだろうとエスパー
16:デフォルトの名無しさん
08/07/15 14:46:21
どうでもいいが実践Common Lispはまだ発売せんのか?
17:デフォルトの名無しさん
08/07/15 15:32:57
>>14-15
すいません。
わかりづらい書き方をしてしまいました。
(numlist '(1 2 3 4 5) 2 7)
の様にすると
(3 4)または(2 5)と返してくれるような関数が作りたいのですが
どのようにすれば良いのかと思いまして。
18:デフォルトの名無しさん
08/07/15 16:28:13
漏れも、実践Common Lispの発売を待ち望んでいるが
クオリティを下げるくらいなら、若干の延期でも構わん。
ただ、延期のアナウンスだけはしてほしいな。
19:デフォルトの名無しさん
08/07/15 16:46:15
>>15
7/27(sun)にケテーイ
20:デフォルトの名無しさん
08/07/15 16:47:07
ずれたw
>>15は>>16へのレス
21:デフォルトの名無しさん
08/07/15 16:54:06
>>19
どこで知った?
22:デフォルトの名無しさん
08/07/15 17:12:28
Amazonだと26日になってるね。
23:デフォルトの名無しさん
08/07/15 17:27:33
>>17
エスパるけど、
(namelist list size total)かな?
24:デフォルトの名無しさん
08/07/15 17:51:51
>>17
決して綺麗じゃないが
(defun @numlist@ (list size total return)
(if (eql size 1)
(let ((found (list (find total list))))
(and (car found) (append return found)))
(loop for ( i . j ) on list do
(let ((answer (@numlist@ j
(1- size)
(- total i)
(append return (list i)))))
(if answer (return answer))))))
(defun numlist (list size total)
(@numlist@ list size total nil))
25:デフォルトの名無しさん
08/07/15 18:29:10
似たようなのがいくつか本スレ辺りの過去ログにあったような気がする
26:デフォルトの名無しさん
08/07/15 19:02:27
>>23-24
ありがとうございます。有難いです。
OnLispを読んでいるのですが、そこの非決定性の章で
簡単に実装していたので非決定性を実装しなければ成らないかと
思っていたのですが、継続などにも自信が無いので何か方法がないかと
思っていたのです。
ありがとうございました。
精進したいと思います。
27:デフォルトの名無しさん
08/07/15 23:22:39
そういえば実践common lispは2冊別々のがでるの?
たしか翻訳している人が二人いたよね。
28:デフォルトの名無しさん
08/07/15 23:39:06
共訳では?
29:デフォルトの名無しさん
08/07/15 23:40:40
おちつけ。まだ慌てるような時間じゃない。On Lispは一年以上待ったんだぜ。
30:デフォルトの名無しさん
08/07/16 13:43:31
>>27
Amazonで確かめれば分かるよ。
31:デフォルトの名無しさん
08/07/16 17:01:00
clisp処理系でfastcgiを使いたいんだが*feature*してもfastcgiが出てこない
この場合どうやってインストールすればいいのか誰か教えてください
32:デフォルトの名無しさん
08/07/16 19:06:19
>>25-26
このへんでSchemeで非決定性をやってるね。
スレリンク(tech板:1-110番)
Common Lispに直すのを簡単な練習問題と思ってやってみれば?
典型的な失敗例もあるしw
33:デフォルトの名無しさん
08/07/16 20:11:54
CommonLispでその言葉に何かが設定されているかどうか
を判断する関数は無いでしょうか?
>x としたときに何か値が返るか(nilも含む)
>x
*** - EVAL: variable AOIMONO has no value
と表示されてしまうかどうかを判断できるような関数は無いでしょうか?
よろしくお願いします。
34:33
08/07/16 20:12:41
AOIMONOは間違いです
*** - EVAL: variable X has no value
です
よろしくお願いします。
35:デフォルトの名無しさん
08/07/16 20:14:14
つ boundp
36:デフォルトの名無しさん
08/07/16 21:08:59
>>33
> CommonLispでその言葉に何かが設定されているかどうか
言葉→シンボル、設定→束縛、ね。
この辺の用語は、検索して何かを調べるときに結構大事だから、ちゃんと覚えておいたほうがいい。
37:デフォルトの名無しさん
08/07/16 22:53:39
slimeをインストールしようとしたら
1]> ;; Loading file /usr/share/common-lisp/source/slime/swank-loader.lisp ...
*** - READ from #<INPUT BUFFERED FILE-STREAM CHARACTER #P"/usr/share/common-lisp/source/slime/swank-loader.lisp" @134>: there is no package with name "CLC"
The following restarts are available:
ABORT :R1 Abort main loop
となってとまってしまいました.clispのversionは2.46です.
最新バージョンを自分でコンパイルして入れたらこうなってしまいました
どなたか助言を...
38:デフォルトの名無しさん
08/07/16 23:04:16
俺もUbuntuでSBCLの最新版を自分で入れてみたら同じエラー出たんで元に戻したよ。
素人なんで自重してパッケージになってるのを使う事にした。
39:37
08/07/16 23:12:50
すみません,自己解決しました.
なんかいじってたら動きましたw
40:38
08/07/16 23:41:30
ちょwwなにいじったか教えて!!
41:デフォルトの名無しさん
08/07/17 00:59:40
format 中で ")" を表示させたい場合どうすれば良いのでしょうか
よろしくお願いします
42:デフォルトの名無しさん
08/07/17 01:01:05
CL-USER> (format t ")")
)
NIL
CL-USER> (format t "\")\"")
")"
NIL
43:デフォルトの名無しさん
08/07/17 04:17:29
>>31
あなたのブログを発見してしまった。藁
漏れもclispのffiコンパイルの不具合はあってこまっとる。
44:デフォルトの名無しさん
08/07/17 14:12:32
CommonLispでは真の乱数を返す事はできないでしょうか
(random x)だと答えが疑似乱数なのでxの値が同じだと
同じ順番で回答がかえってきてしまいます。
これを完全にばらつきが有るようにするにはどうすれば良いのでしょうか
一つ思いついたのですが
(random ((car (multiple-value-list (get-decoded-time))))
とすれば秒を基本としているのである程度ばらつきが有ると思ったのですが
どうでしょうか?
よろしくお願いします。
45:デフォルトの名無しさん
08/07/17 17:09:40
どの言語でも真の乱数は返せないよ。返せるのは疑似乱数だけ。
(loop repeat (get-internal-run-time) do
(setf *random-state* (make-random-state t)))
46:デフォルトの名無しさん
08/07/17 17:50:36
/dev/(u)randomとかがある環境ならそれ開いて読み込めば。
47:デフォルトの名無しさん
08/07/17 19:46:11
ひさしぶりにLisp以外の(サンプル)プログラムを読んで、
Lispってわかりにくいな、と感じたのですが、
慣れれば他の言語と同じくらい読めますか?
48:デフォルトの名無しさん
08/07/17 21:35:01
>>47
僕は簡単に読めていますよ。
むしろJavaとかの方がごちゃごちゃしていて読みづらいと感じました。
ですが確かに適切なインデントのできていないソースコードは大変です。
ですが、それは他の言語も同様だと思います。
すいません
(setq x (read))
としてxにkotobaなどを代入したときに
xを使ってkotobaに値を代入する事はできないでしょうか
xに言葉を代入→代入された言葉に値を代入と言う作業をしたいのです。
(format t "言葉:")
(setq x (read)) ;;これでxに言葉が代入される。(例えばringo)
その後ringoにリストを代入したい場合
(setq x(ringoに置き換え) '(a b c))
とやってringo='(a b c)と成るようにできないでしょうか
49:デフォルトの名無しさん
08/07/17 22:00:32
(eval `(setq ,x '(a b c)))
50:デフォルトの名無しさん
08/07/17 22:06:46
(setq x 'ringo)
(setf (symbol-value x) '(a b c))
51:デフォルトの名無しさん
08/07/17 22:30:25
(setq x 'ringo)
(set x '(a b c))
52:48
08/07/17 23:46:08
>>49-51
ありがとうございます
参考にして
(defun make-group (x y)
(if (boundp x)
(setq x (append x y))
(progn (setq x nil) (setq x (append x y)))))
(format t "何か知りたいな:")
(setq kotoba (read))
(format t "それは何?:")
(setq group (read))
(eval `(make-group ,group '(,kotoba)))
とやってみたのですが
*** - EVAL: variable KUDAMONO has no value (group にはkudamonoを入れました)
と成ってしまいます。
どのようにすれば良いか教えて頂けないでしょうかよろしくお願いします。
行いたい処理はgroupに何か束縛されていればkotobaをリストに追加
束縛されていなければ普通に代入としたいのでmake-groupと言う関数を作ってみました。
よろしくお願いします。
53:デフォルトの名無しさん
08/07/18 00:08:00
何言ってるかわかんねえ。
仕様をもっと分かりやすく書いて。
54:デフォルトの名無しさん
08/07/18 00:19:38
>>48
君はJavaの方が向いている。
無理しなくておけ。
55:デフォルトの名無しさん
08/07/18 00:57:31
(setq table (make-hash-table))
(defun make-group (&aux kotoba group)
(format t "何か知りたいな:")
(force-output)
(setq kotoba (read))
(format t "それは何?:")
(force-output)
(setq group (read))
(let ((l (gethash group table)))
(setf (gethash group table) (cons kotoba l))))
> (make-group)
何か知りたいな:ringo
それは何?:kudamono
(ringo)
> (gethash 'kudamono table)
(ringo)
t
56:デフォルトの名無しさん
08/07/18 02:10:49
(defun make-group (x y)
(cond ((boundp x) (set x (append (eval x) y)))
(t (set x y))))
(format t "何か知りたいな:")
(setq kotoba (read))
(format t "それは何?:")
(setq group (read))
(make-group group (list kotoba))
(format t "group=~s~%" group)
(format t "evalgroup=~s~%" (eval group))
たぶんこんな感じのことがしたいのだと予想
どうでもいいけど関数(サブルーチン)の中で破壊的に書き換えするのは趣味じゃないなぁ
関数は値だけを返してメインでその値を使って代入なりなんなりする方がいいと思う
57:デフォルトの名無しさん
08/07/18 12:14:51
>>56
それならハッシュテーブルを複製してから書き換えれば元のデータが残る。
関数プログラミングはアロケーションが増える覚悟でやらないと。
58:52
08/07/18 17:27:56
すいません
まだ慣れていないものでどのように書けば
良いのか解らないもので
言葉を入力して貰いその言葉がどのような
集合に属するのか入力してもらい
集合が出来ていなかったら新たに作り
入力してもらった言葉を入れて
集合が出来ていたらリストの先頭に追加する
という処理をしたかったのです
Lispに慣れていないので、手続き型言語脳で
プログラムを書いてしまうのですが
どのようにするのがベストでしょうか?
よろしくお願いします。
59:デフォルトの名無しさん
08/07/18 18:46:40
何がしたいのかより、なぜやりたいのかを教えてもらった方がエスパーしやすいかもしらんね
60:デフォルトの名無しさん
08/07/18 19:31:24
>>52
メインでgroupdataって変数を作ってそこにgroupとkotobaの連想リストをつっこんでみた
(defun make-group1 (x y)
(setq groupdata (acons x (cons y (cdr (assoc x groupdata))) groupdata))
)
(setq groupdata nil)
(make-group1 group kotoba)
でもこれだとgroupdataを別の名前にしたらサブルーチンも書き直さなきゃならいよね
て訳で変数の書き換えはメインにまかすようにすると
(defun make-group2 (gd x y)
(acons x (cons y (cdr (assoc x gd))) gd)
)
(setq groupdata nil)
(setq groupdata (make-group2 groupdata group kotoba))
メインでいちいちsetq書くのが面倒くさいならマクロ使って
(defmacro make-group3 (gd x y)
`(setq ,gd (acons ,x (cons ,y (cdr (assoc ,x ,gd))) ,gd))
)
(setq groupdata nil)
(make-group3 groupdata group kotoba)
関数の中からめたらやったらグローバル変数をいじるのはあんまりしない方がいいと俺は思うんだ
いや別に駄目とは言わないけど、他に変な影響を与えたくないからね
61:デフォルトの名無しさん
08/07/18 20:34:32
>(acons x (cons y (cdr (assoc x groupdata))) groupdata)
間違いではないが、なんかすごいことになってるな
62:デフォルトの名無しさん
08/07/18 21:01:27
ていうかメモリリークじゃね?
63:52
08/07/18 21:04:30
ありがとうございます。
Lispを始めてみたところで
人工知能のための言語と噂されたこともある
言語なのだから人工無能を作れるのではないだろうか
と思って人工無能をつくろうとしてました。
そのために言葉のデータベースを作るための関数を作ろうとしてました
64:デフォルトの名無しさん
08/07/18 22:15:49
>>62
aconsされる側のgdにremove-ifでも使って前のデータから古いキーのやつを消せばいいけど
面倒くさいんで手抜きしてましたw
(defun removedata (key data)
(remove-if #'(lambda (x) (equal (car x) key)) data)
)
気になるならこれでもつっこんどいてw
(defun make-group2 (gd x y)
(acons x (cons y (cdr (assoc x gd))) (removedata x gd))
)
こんな感じで
65:デフォルトの名無しさん
08/07/18 23:14:27
>>64
手抜きは悪いことじゃないよ。ハッカーは怠惰だというしね。
でも手抜きするなら破壊的でいいじゃんって思った。好みの問題かな。
66:デフォルトの名無しさん
08/07/19 09:22:03
>>63なるほどね。シンボル(あなたは「シンボル」で「言葉」を表現
する事に決めたわけだけど、他人にLISPで話すときは共通の語彙を使おう)
をデータベースがわりにするというとこんなんでだろうだろう?
(defun message-read (message)
(format t "~A" message)
(finish-output)
(read))
(defun select-item (symbol)
(let* ((lst (symbol-value symbol))
(n (random (length lst))))
(nth n lst)))
(defun input-database ()
(let* ((symbol (message-read "何か知りたいな:"))
(what (message-read "それは何?:")))
(unless (boundp symbol)
(setf (symbol-value symbol) nil))
(pushnew what (symbol-value symbol))))
(defun query-database ()
(let ((symbol (message-read "何がしりたい:")))
(if (boundp symbol)
(format t "~Aは~Aのことだよ~%" symbol (select-item symbol))
(format t "~Aは知りません~%" symbol))))
67:デフォルトの名無しさん
08/07/19 09:27:54
自分用のライブラリを作りたいのですが、
cc -Llibdir -llibname や
emacs lisp の load-path みたいに、
他の directory に置いたライブラリをロードする、
良くやる手を教えてください。
68:デフォルトの名無しさん
08/07/19 09:58:40
こんなかんじ。
0) asdf.lisp をロード (SBCLみたいに標準でついてくるものもある)
1) asdf:*central-registry* に .asd を集めるディレクトリを設定する (~/lisp/asd)
2) 好みのディレクトリにライブラリ名のディレクトリをつくって溜めていく。(例えば、~/lisp/lib/ライブラリ名)
3) あとは、~/lisp/lib/ライブラリ名/ライブラリ名.asd を ~/lisp/asd/ライブラリ名.asd にシンボリックリンクする
あとは (asdf:oos 'load-op ライブラリ名) でロードしてます。
頻繁につかう、かつ、更新が頻繁じゃないライブラリはイメージに取り込んでしまいます。
69:デフォルトの名無しさん
08/07/19 10:18:12
テンプレwikiからのお知らせ
よくありそうな質問をwikiでまとめておこうと思うので
よくありそうな質問と(回答ができそうな人は回答を)
書いてくれませんか?質問と回答のフォーマットは
一応決めてあります。
URLリンク(wiki.fdiary.net) (id:guest pass:cl)
70:67
08/07/19 12:49:13
>>68 とっても助かりました。
>>68 ログインして Edit までしたのですが、FAQ のページにどうやって追加していいのか。と言うか、書き込む勇気が、、、
71:67
08/07/19 12:50:05
あ、2つ目の >>68 は >>69 です。
72:デフォルトの名無しさん
08/07/19 17:18:30
>>70
気楽に追加してください。
fdiaryはmatz lispで作られたサイトなんですが、時々書き込めなかったり
重くて読み込めなかったりします。matz lispにはもう少し頑張ってほしい。
73:デフォルトの名無しさん
08/07/19 17:23:24
(make-thread :name |Common Lisp| :part 5)
の方が良かったんじゃないか?
難民が出ているみたいだが。
74:デフォルトの名無しさん
08/07/19 17:27:49
俺も唐突にスレッド名が変わって混乱した覚えがある
75:デフォルトの名無しさん
08/07/19 17:47:25
スレタイといえば入門がなくなっちゃった。初心者が気後れしないかな。
(make-thread :name "Common Lisp" :part 5 :入門 :ok)
76:デフォルトの名無しさん
08/07/19 17:57:06
正直気持ち悪い
こんなとこでオナニーすんなよ
77:75
08/07/19 18:05:24
気分を害したならすまなかった。そこまで入門を嫌う人がいるとは想像できんかったな。俺が浅はかだった。
78:デフォルトの名無しさん
08/07/19 18:07:35
>>77
つまんないやつは相手にする必要はないよ。
>>73 >>75
スレタイは行きすぎたかも。次スレのときにいい名前になればいいね。
79:デフォルトの名無しさん
08/07/19 18:11:28
検索しにくくて難民がでるってのはマズイな。スレタイは元の形式がいいのかも。
いきなりS式ってもの入門者を拒絶してる(むしろS式が気持ち悪いと言われてる?)ように見えるのかもしれん。
80:デフォルトの名無しさん
08/07/19 18:45:15
>>79
find.2ch.netの検索は引っかかるよ。
81:デフォルトの名無しさん
08/07/19 18:53:22
かちゅーしゃでlispで検索すると一瞬わからないスレタイ
82:デフォルトの名無しさん
08/07/19 19:34:54
俺が初心者だからフィルタかかってるのかもしれんが
>>76は入門という語を嫌ってるんじゃなく
(make...ってスレタイのほうを嫌ってるんじゃないか?
俺みたいなのには入門ついてるスレもあったほうが嬉しいが
スレタイで不必要にわかりにくくする必要はないと思う
83:デフォルトの名無しさん
08/07/19 20:24:30
Lispが小文字で始まってる上にハイフンで繋がってるから検索に引っかからない。
マジで>>75ぐらいで留めてくれ。探せない。今回はScheme Lispスレから辿れたけど。
84:デフォルトの名無しさん
08/07/19 20:37:59
>>81
検索するツールをLispで書けばいいと思うよ。
85:デフォルトの名無しさん
08/07/19 20:48:20
OpenJaneで見てるんだが
タブ表示がこんな感じになっちゃってる
Debian GNU... | Lisp Schem... | (make-thre... |
以前のスレタイに戻して欲しいに一票
86:デフォルトの名無しさん
08/07/19 21:28:43
戻すも戻さないも スレ作りを他人任せにしたつけだよ。
これを機会に、これまでのほうがよいと思うなら積極的に
スレ作りに協力して欲しい。
87:デフォルトの名無しさん
08/07/19 21:51:18
>>85の一票もスレ作りへの積極的な協力ですよ
88:デフォルトの名無しさん
08/07/19 23:10:56
>>87
それは違うな。他人任せを積極的とは言わない。
89:デフォルトの名無しさん
08/07/19 23:14:38
いったいどういう協力をしてほしいんだ?
金か?w
90:デフォルトの名無しさん
08/07/19 23:16:05
スレタイ付けの自由らしいぞw
91:デフォルトの名無しさん
08/07/19 23:22:48
そう思うならば、950越えたあたりになったら
作って、スレにアナウンスする。
これが積極的なスレへの協力だろ?
92:デフォルトの名無しさん
08/07/19 23:28:04
それは協力というよりスレ立てそのものだな
93:デフォルトの名無しさん
08/07/19 23:37:05
しかしウンコなスレタイだよな。
94:デフォルトの名無しさん
08/07/19 23:41:33
例えば(setq common-lisp "Common Lisp")されてるのか、
それともmake-threadは関数でないのか? とか微妙
95:デフォルトの名無しさん
08/07/20 01:58:39
ていうかそういう思考をスレタイに持ち込むのがウンコだと思う。
スレタイとしての「使い勝手」の悪さと引き替えには遊ばないで欲しい。
96:デフォルトの名無しさん
08/07/20 02:00:59
本人は面白いと思ってやってるんですよ
97:デフォルトの名無しさん
08/07/20 03:36:49
CL-USER> (get '>>1 'life)
0
98:デフォルトの名無しさん
08/07/20 04:16:00
>>91が言ってるのは、スレ立てしろとかじゃないし、いくらセンスが悪くても>>1乙だろってことだよ。
スレタイを良くしたいならもう少しアクティブな住人が多くないと>>1もみんなの意向がわからないし。
99:デフォルトの名無しさん
08/07/20 06:39:48
>>91をどう解釈してもスレ建てを積極的にしろになる件
んな事したら不毛なスレ建て合戦になるだろうが。
100:デフォルトの名無しさん
08/07/20 11:49:07
俺が初めてスレ立てた時はこんな感じだった。懐かしい
スレタイ変更→次スレで元に戻らず→数ヵ月後俺が地味なスレタイに戻す→大混乱
101:デフォルトの名無しさん
08/07/20 12:19:19
スレタイで遊んでも構わないが、このスレのはセンスがない。
俺の使っているエディタにはインテリセンスがない。
102:デフォルトの名無しさん
08/07/20 12:32:20
>>101
うまいこと言ったつもりか?w
103:デフォルトの名無しさん
08/07/20 13:05:37
センスでうちわ揉めすんな
104:デフォルトの名無しさん
08/07/20 13:08:19
>>103
これはうまい
105:デフォルトの名無しさん
08/07/20 13:08:59
>>103-104
なんというあからさまな自作自演
106:デフォルトの名無しさん
08/07/20 13:28:50
>>104-105
お前それは急ぎすぎだ
107:デフォルトの名無しさん
08/07/20 15:46:13
どーでもいいからLispの話しようぜ。
でもおれは最近Lisp使えてないけど…
泥粘土で遊びながら考えたいよ。
108:デフォルトの名無しさん
08/07/20 16:37:11
>>73以降、Lispの話が出ていない orz
109:デフォルトの名無しさん
08/07/20 17:39:22
>>94あたりは(Lispの話題として)ぎりぎり合格だと思う
110:デフォルトの名無しさん
08/07/21 02:42:50
いま検索してて引っ掛ったんだけど
地獄Lispってサイトってなに?
地獄Schemeってサイトも有るんだけど・・
なんか恐い感じで開けていない
111:デフォルトの名無しさん
08/07/21 03:15:25
>>110
こっちのスレに作者の人がいるから、直接聞いてみるのがいいと思う。
【魔法】リリカル☆Lisp【言語】
スレリンク(tech板)
112:デフォルトの名無しさん
08/07/21 10:13:41
>>110
Wikipedia項目リンク
これにひっかけた名前
113:デフォルトの名無しさん
08/07/21 13:20:32
普通にLisp系のサイトだったんですね。
良かったです。
ありがとうございました。
114:デフォルトの名無しさん
08/07/21 15:53:03
テンプレWikiへの添付ファイルはできないですか?
とりあえず、テンプレWikiに入門スレの自分の持っている過去ログへの
リンクを貼りました。
たぶん1〜3スレは不完全なので、訂正できる方はお願いします。
Janeのログを上げてもらえれば、私が差し替えます。
115:デフォルトの名無しさん
08/07/21 23:14:07
>>114
できるよ。エディットの下にattemptがあるので
116:デフォルトの名無しさん
08/07/21 23:41:40
>>115
そこでエラーが出て添付出来なかったんです。
使い方がマズかったかな。
また試してみます。
117:デフォルトの名無しさん
08/07/22 00:20:32
>>116
確認しました。fdiaryの管理人にお願いしておきました。しばらくすれば使えるようになる
と思います。URLリンク(wiki.fdiary.net) で確認してみてください。
118:デフォルトの名無しさん
08/07/22 00:52:55
>>117
確認ありがとうございます。
119:デフォルトの名無しさん
08/07/22 01:21:24
clisp処理系ってプロファイラないのですか?
120:デフォルトの名無しさん
08/07/22 20:02:53
すいません。
CommonLispでプログラミングをしている中で、
作ったプログラムは関数を定義したファイルを作成しておいて
毎回それをインタプリタにロードして関数を使うのが王道なのでしょうか?
私はプログラミングのときには、
関数をファイルの先頭の方で定義しておいて
後半でUIの部分つまり
(format t "x:")
(setq x (read))・・・・
などとして
ファイルの一行目に#!・・・(インタプリタの場所)
を書き込んで使っています。(つまりユーザーはインタプリタを目にしないで良いようになっている)
これは不純な方法でしょうか?
すこし自分のプログラミングスタイルに疑問を感じてきたのでよろしくお願いします。
121:デフォルトの名無しさん
08/07/22 20:51:43
それで済めば、それでいいのと違う?
ライブラリとして管理したければ、別ファイルにして読み込めばいい。
必要になってからでも遅くない。
122:デフォルトの名無しさん
08/07/22 21:10:37
ありがとうございます。
123:デフォルトの名無しさん
08/07/22 22:30:08
>>119GNU CLISPのこと?それともCommon Lisp一般のはなし?処理系によっては標準で備えてるものもあるし、
別途もってこないとダメなものもある。単純な比較なら標準のTIMEマクロでも結構便利だよ。
124:デフォルトの名無しさん
08/07/22 22:52:20
CLISP なんて略語で Common LISP 一般を指すことは少ないと思う
125:デフォルトの名無しさん
08/07/23 00:01:53
>>120
イメージ生成後にそれを起動する手順なら処理系依存としか言えない。
ポーティング先の都合ってのもあるから。
126:デフォルトの名無しさん
08/07/23 23:27:51
wikiの過去ログですが、 bcvrf.yahoo.comが見つかりませんということで開けませんでした。
共有設定がなされてるでしょうか?よろしければご確認を。
URLリンク(help.yahoo.co.jp)
URLリンク(help.yahoo.co.jp)
127:デフォルトの名無しさん
08/07/24 01:49:59
>>126
報告どもです。
Lisp schemスレはまとめて同じフォルダに入れてるんで、
共有設定のミスではないです。
ミスなら全部見れなくなるはずです。
たぶん、時間かアクセス数でURLが変わるんだと…
ファイル置き場変えながら、直しておきます。
128:デフォルトの名無しさん
08/07/24 17:39:47
Common Lisp入門を参考に、プログラムを書きました。
問題点、改善案など、何かアドバイスをもらえないでしょうか?
動作確認はxyzzyとclispで行いました。
●実現したいこと
ファイルから特定の行を抽出し、その行のみ新たにファイルへ書き出す。
動作確認がしやすいように、行の位置は変えないようにする。
●自分でおかしいと思ってる点
・1行ずつ読み込んでる力ワザ
・progn 使いすぎ?
・引数に nil が使われないように'(10000)を lst にバインドしている所
・行の指定が昇順でなければならない所
(progn
(setq str1 (open "in.txt"))
(setq str2 (open "out.txt" :direction :output))
(setq eos (cons nil nil))
(setq lst '(10 30 400)) ;取り出したい行をリストで指定、必ず昇順
(defun kakikaki (x)
(setq str0 (read-line str1 nil eos))
(cond ((eq str0 eos) (princ "STOP"))
((< x (car lst)) (progn (format str2 "~%" )
(kakikaki (+ 1 x))))
((not (eq str0 eos)) (progn (format str2 "~a~%" str0)
(setq lst (cdr lst))
(and (not lst) (setq lst (list 10000)))
(kakikaki (+ 1 x))))
(t "END")))
(kakikaki 1)
(close str1)
(close str2)
)
よろしくお願いします。
129:デフォルトの名無しさん
08/07/24 17:58:17
>>128
行数はsort関数を使えば自由に入力できるように成ると思う。
130:デフォルトの名無しさん
08/07/24 18:03:53
おれがまずおかしいと思った点
・名前が異常 str0 str1 kakikaki・・ アホか
・破綻したロジック
>・引数に nil が使われないように'(10000)を lst にバインドしている
意味不明。10000行目は必ず出力するってことか?
131:129
08/07/24 18:05:48
>>128
最初と最後を結んでるprognは何のため?
ファイルは基本上から処理していくと思うからいらないような気がする。
132:デフォルトの名無しさん
08/07/24 19:12:06
prognん中にdefun入れて良かったんだっけか
133:デフォルトの名無しさん
08/07/24 19:23:40
釣りなのか本気なのか判断に迷う
134:128
08/07/24 21:00:52
>>129
ありがとうございます。
sort関数で昇順に並べ変えられそうです。
>>130
>名前が異常 str0 str1 kakikaki・・ アホか
これはプログラミングのマナーに反しているということでしょうか?
良かったら、マナーに則った命名を教えてください。
>>破綻したロジック
>>・引数に nil が使われないように'(10000)を lst にバインドしている
>意味不明。10000行目は必ず出力するってことか?
関数に nil を渡さないようにしたいのですが、上手いやり方が分かりませんでした。
そこでこのプログラムを使うつもりのファイルにはありえない行数を使い、
ファイルの終端まで入力を続けるようにしました。
>>131
>最初と最後を結んでるprognは何のため?
xyzzy の lisp-interaction-mode で Ctr-J 一回で動作させるには?
と、考えて書きました。どうもかなりマズイんですね。
>>132
>prognん中にdefun入れて良かったんだっけか
良いかどうか、考えずにやってしまいました。
>>133
>釣りなのか本気なのか判断に迷う
本気です。
初心者対象のスレだと >>1 にあったので、投稿しました。
プログラム経験は fortran で数値計算の入門を経験した程度です。
他に相応しいスレがあれば誘導をお願いします。
135:デフォルトの名無しさん
08/07/24 22:01:25
>>134
まあ焦らないことだな
URLリンク(www.geocities.jp)
基本を頭に入れないうちに強引に書くことができなくもないが
そういうのは発想が根本から違うので直す気にもならない
質問したければ別に構わないが
なんでも掲示板に聞きに来るのはかえって効率が悪い
136:129
08/07/24 22:08:47
>>134
がんばれ
>>最初と最後を結んでるprognは何のため?
>xyzzy の lisp-interaction-mode で Ctr-J 一回で動作させるには?
>と、考えて書きました。どうもかなりマズイんですね。
なるほどそれならわかった。
windowsでは一行目に#!〜ってやつはできないんだっけ。
>>All
UNIXの一行目に#!〜ってやつはなんと言う名前でしたっけ。
毎回こう書くのは大変なので技術名を教えてください。
137:デフォルトの名無しさん
08/07/24 22:26:05
>>132
初心者では普通はしないが、マクロでまとめてマクロや関数を作るときは
ないことはない。
>>136
わすれた。それだけは検索で引っ掛けようにも簡単に引っ掛けられないね。
>>134
フォートラン的なlispはつくれるけど、(グリーンブラット的とも言う。)
lisp的に見えないのが弱点かな。もう少ししたらいい参考書が発売になるし
手に入れてみたらいいよ。
138:デフォルトの名無しさん
08/07/24 22:35:21
たしかシェバングだっけ?
>>134
焦らず頑張れ
139:デフォルトの名無しさん
08/07/24 22:39:13
shebang というらしい
URLリンク(en.wikipedia.org)(Unix)
が、「一行目に#!〜ってやつ」のほうが通じやすいと思う。w
140:129
08/07/24 22:44:59
>>137-139
ありがとうございます。
通じるのはUNIX板だけかもしれないですね。
ググっても0件だったので検索に引っかからなかったので困ってました。
ありがとうございます。
141:128
08/07/25 00:24:41
>>136
>>138
励ましが嬉しかったです。
作ってみたい気持ちが先走り過ぎてました。
sort関数は凄いです。
おかげで昇順に並べ替えられるように直せました。ありがとうございました。
sort は偶数や奇数でも並べ替えできるようで、調べるうちにどんどん使ってみたくなります。
Common Lisp入門に載ってない、この関数を知れたことが大収穫です。
>>135
> 質問したければ別に構わないが
> なんでも掲示板に聞きに来るのはかえって効率が悪い
ずっと本を読みながら試行錯誤していて、とりあえず動作したところで途方にくれてしまい、
思わず勢いで書き込んでしまいした。
動作するけど、何かが違う感がぬぐえなかったです。
ご指摘の通りまるで基本ができていません。反省します。
>>137
>lisp的に見えないのが弱点かな。もう少ししたらいい参考書が発売になるし
>手に入れてみたらいいよ。
発売する頃には、いい参考書のその良さがわかるようになっていたいです。
僕の書き込みに時間を割いてくださった方々、ありがとうございました。
142:デフォルトの名無しさん
08/07/25 01:17:01
>>128Common Lisp入門って書籍?俺はこの場合だとNILは別に困らないなぁ。
一人で悩むよりはどんどん相談したほうがいいと思う派。どーせ最近はネタもないし。
こんなんなった。open は with-open つかえば安心確実。loop 使えば(ANSI CLなんできっとxyzzyでは動かないけど)
ループ毎に i を 1 ずつ増やし、line 一行呼んでソート済みの lst の先頭と行番号を比較して〜。
(defun kakikaki (lst &key (input "in.txt") (output "out.txt")
&aux (lst (sort lst #'<)))
(with-open-file (in input :direction :input)
(with-open-file (out output :direction :output :if-exists :supersede)
(loop for i from 1 by 1
for line = (read-line in nil :eof)
until (eql line :eof)
do (cond ((eql i (car lst))
(write-line line out)
(setf lst (cdr lst)))
(t
(write-line "" out)))))))
143:デフォルトの名無しさん
08/07/25 01:49:18
こんなん見つけた
URLリンク(cadr.g.hatena.ne.jp)
144:デフォルトの名無しさん
08/07/25 04:08:11
>>143
うはぁ、時々伺うサイトで速攻取り上げられているとは。
145:128
08/07/25 07:05:14
>>142
> >>128Common Lisp入門って書籍?
はい、岩波から出ている本です。
> こんなんなった。open は with-open つかえば安心確実。
わざわざ、書いていただいてありがとうございます。
僕の知識不足に配慮してもらってるようで、助かります。
CLISP で動作できました。
キーワードの使い方など、知識と理解があると出来ることが広がるんだと思えてモチベーションが上がります。
> ループ毎に i を 1 ずつ増やし、line 一行呼んでソート済みの lst の先頭と行番号を比較して〜。
loop に関する記述が手元の本に少ないので、これから検索しながらこのプログラムを読み込んでいきます。
だんだん楽しくなってきました。
でも・・・・・・
比べて振り返ってみると、今更自分のプログラムの幼稚さがよく分かる (´・ω・`)
得るものが大きかったんで後悔はないが…… 恥ずかしぃ orz OTZ
>>128 はなかったことに…… 見た人の ( ゚д゚)ポカーン が目に浮かぶよぅ〜
専ブラ使ってる人はあぼーんしてくれーヽ(`Д´)ノ
あと3日でdat落ちしてくれないかな、このスレ(´・∀・`)
146:デフォルトの名無しさん
08/07/25 08:27:14
>>145
元コードの主旨に従った物を書いてみた。
xyzzy は使ったことないんで通るかどうかは不明だが…
(defun kakikaki (lines &key (in-file "in.txt") (out-file "out.txt"))
(with-open-file (is in-file)
(with-open-file (os out-file :direction :output :if-exists :supersede)
(labels ((rec (count lines)
(let ((l (read-line is nil :eos)))
(cond ((eq l :eos) "END")
((eql (car lines) count)
(write-line l os) (rec (1+ count) (cdr lines)))
(t (write-line "" os) (rec (1+ count) lines))))))
(rec 1 (sort lines #'<))))))
(kakikaki '(10 30 400) :in-file "in.txt" :out-file "out.txt")
loop 極めるのは結構大変なんで時間かけて覚えた方がいいと思う。
147:デフォルトの名無しさん
08/07/25 08:33:35
>>145
入門者にいきなりエレガントなコード書かれたら、
この道のプロの人たちは失業の危機じゃないか?
自分のコードの拙さを気にする奴は伸びる。
地道に頑張れ。
148:デフォルトの名無しさん
08/07/25 09:48:28
読む価値のあるコードを書く凄いプログラマが登場したら楽しいじゃないか。
149:デフォルトの名無しさん
08/07/25 10:32:01
こういう良い志を持ったプログラマ希望の人が
増えますように・・・・・
Lispプログラマに幸あれ
150:デフォルトの名無しさん
08/07/25 13:17:58
>>147
プロにはエレガントでないコードの需要が山のようにあるので失業しませんよw
151:デフォルトの名無しさん
08/07/25 18:12:53
>>150
んまぁ。。
最適化をやりだすとかなり泥臭いコードに変わるから、どろどろした速いコードは多いと思うよ。
マクロを使わなければ…
152:デフォルトの名無しさん
08/07/25 20:03:01
「エレガントでないコードの[後始末]という需要」だったらかなりイヤゲ
153:128
08/07/25 22:24:55
>>146
> >>145
> 元コードの主旨に従った物を書いてみた。
これはすごく参考になります。
自分で作っていて、関数定義の中で with-open 使った上で再帰すると、 close せずに再びファイルを open しようとしてエラーになるだろうし、lambda式では関数に名前を付けらず再帰できないし、と悩んでた部分が解決されてる!!
局所関数と局所変数をあわせて使うんですね。
自分の分かってなさもよく分かってくる…
それでも視界が広がった感じがあります。
> xyzzy は使ったことないんで通るかどうかは不明だが…
xyzzy では write-line が定義されてないので、そこを format で書き換えるだけで動きました。
ありがとうございました。
>>147
はい、地道にやっていきます。
ここ数時間で本に貼った付箋の数が、今までの5倍以上になって充実した時間が過ごせてます。
こんなに興味をもってプログラムを読めるとは、思わなかったです。
154:デフォルトの名無しさん
08/07/25 23:47:14
ふっふっふっふ。。。大量に平積みだよ。
URLリンク(raido.sakura.ne.jp)
155:デフォルトの名無しさん
08/07/26 00:40:42
>>154
AMOP 誰か、訳さんかのぉ
OO 系の LL user には福音のはずなんじゃが…
156:デフォルトの名無しさん
08/07/26 00:45:50
発送通知まだ来ない(´・ω・`)
157:デフォルトの名無しさん
08/07/26 01:28:40
>>153
> 関数定義の中で with-open 使った上で再帰すると
ここがそもそも勘違いのもとだと思う. 先にファイルって言う実体があるわけだ.
stream の実体はファイルでもいいし文字列でもいし ...中略... でもいい
何かの stream から読んで、その他の stream に出力する. で, 読み書き対象は?
と, 考えた結果が >>146 だと思う.
ちなみに >>146 の with-open-file は, 入出力をファイルに割り当てる操作.
(with-open-file (is ... ==> (with-input-from-string (is ...
(with-open-file (os ... ==> (let ((os *standard-output*)) ...
でも動作したりしないかい?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4038日前に更新/237 KB
担当:undef