[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 12/31 05:45 / Filesize : 237 KB / Number-of Response : 826
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

(make-thread :name common-lisp :part 5)



1 名前:デフォルトの名無しさん [2008/07/12(土) 12:43:33 ]



lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

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

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

(list
(url pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4))

751 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:46:44 ]
はてなでみつけたけど、こんなのあるんだな。
page14.auctions.yahoo.co.jp/jp/auction/s91370712

752 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:14:51 ]
>>751
オクだからLispMachineでも出てるのかと思ったら
噴いたじゃねぇかゴルァ

753 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:24:21 ]
こっちなら色んな所にありそうなんだがな。
ttp://dl.getdropbox.com/u/215714/20080419193048.jpg


754 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 04:24:30 ]
上品な大人っぽい雰囲気の『CLISP』。

大人っぽい括弧が括弧良くコードに落ち着きを与えてくれます。
お洒落な関数型や手続き型のような雰囲気があります。CLOS、
MOP、FFIなどお仕事を選ばないデザインも長く飽きずに
お使いいただける要素かと思います。


755 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:56:49 ]
大量のハッシュの設定が面倒だったので一気に指定できるマクロを作成しました
修正できる所をご教授願います。

(defmacro sethash (table key word)
`(setf (gethash ',key ,table) ,word))

(defmacro multiple-sethash (table &rest key-word-lst)
`(progn
,@(mapcar #'(lambda (pair)
`(sethash ,table ,@pair))
(group key-word-lst 2))))

(defun group (source n)
(if (zerop n) (error "zero length"))
(labels ((rec (source acc)
(let ((rest (nthcdr n source)))
(if (consp rest)
(rec rest (cons (subseq source 0 n) acc))
(nreverse (cons source acc))))))
(if source (rec source nil) nil)))

756 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 01:10:15 ]
>>755
こうすると hello! が2回表示されるよ?
On Lisp の「マクロのその他の落し穴 」参照。

(defparameter *hash* (make-hash-table))
(defun my-hash ()
(format t "hello! ")
*hash*)

(multiple-sethash
(my-hash)
:foo 1 :bar 2)

757 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 03:36:55 ]
やることの割に長いのがいかんよ。これでよくない?
(defmacro puthashmany (table &rest key-and-value-list)
 `(let ((tbl ,table) (lst ',key-and-value-list))
   (loop for (k v . r) on lst by #'cddr do (setf (gethash k tbl) v))))

758 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 04:11:47 ]
ボケてた。setfを並べるのが目的か。
(defmacro puthashmany (table &rest key-and-value-list)
(let ((tbl (gensym "TBL")))
 `(let ((,tbl ,table))
   ,@(loop for (k v . r) on key-and-value-list by #'cddr collect `(setf (gethash ,k ,tbl) ,v)))))

759 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 08:26:59 ]
こんな処理が遅いのですが、なぜなんでしょう?
(defun speed-test (times)
(do ((i 0 (1+ i))
(sum 0 (+ sum i)))
((= i times) sum)))
実行してみると・・・
CL-USER> (time (speed-test 10000000))
Real time: 5.828125 sec.
Run time: 5.578125 sec.
Space: 159668340 Bytes
GC: 250, GC time: 1.265625 sec.
49999995000000
5秒以上かかります。Javaだとだいたい100msで終わるのですけど。
Spaceをいっぱい食っているのもよく分かりません。環境はCLISPです。



760 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 10:49:25 ]
>>759
とりあえず確認。
コンパイルはした?

761 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 12:23:01 ]
>>759
うちのチープマシンじゃ
clispの場合コンパイルしても1秒かかる orz
sbclだと0.12秒


762 名前:579 mailto:sage [2008/10/03(金) 12:25:44 ]
はい、(compile 'speed-test)はしました。
さらに、ちょっと合っているか分からないですけど、
更にこんな感じでチューニングしてみました。

(defun speed-test (times)
(declare (optimize (speed 3) (safety 0)))
(declare (fixnum times i sum))
(do ((i 0 (1+ i))
(sum 0 (+ sum i)))
((= i times) sum)))
でも、何にも効いてないような・・・。
CL-USER> (compile 'speed-test)
WARNING: SPEED-TEST is already compiled.
SPEED-TEST
NIL
NIL
実行。
CL-USER> (time (speed-test 10000000))
Real time: 6.28125 sec.
Run time: 5.90625 sec.
Space: 159668340 Bytes
GC: 249, GC time: 1.578125 sec.
49999995000000
逆に遅くなってますね・・・。

763 名前:579 mailto:sage [2008/10/03(金) 12:49:48 ]
あれ?>>761さんの環境だと結構速いんですね。

とりあえず、私の書き方が悪いわけじゃなさそうだということが分かって良かったです。
ちなみに末尾再帰で書いてもあんまり改善しませんでした。というか、遅くなりました。

(defun speed-test (times sum)
(if (zerop times)
sum
(speed-test (- times 1) (+ sum times))))

CL-USER> (compile 'speed-test)
WARNING: SPEED-TEST is already compiled.
SPEED-TEST
NIL
NIL

CL-USER> (time (speed-test 10000000 0))
Real time: 6.84375 sec.
Run time: 6.328125 sec.
Space: 159999132 Bytes
GC: 250, GC time: 2.25 sec.
50000005000000
CL-USER>


764 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 13:44:29 ]
>>763
clispは末尾再帰を最適化しない(ことが多い? 全然しないのか少しはするのか知らない)。
末尾再帰の最適化をしない処理系で期待しても無駄というもの。
disassembleしてみりゃすぐわかるから確認すれ。

765 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 15:34:30 ]
>>763
761だけどclispでコンパイルしないと12秒位かかるんよ,(compile 'speed-test)して1秒



766 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 15:40:23 ]
x86_64 clisp 2.42でだけど
ちなみに763のコードはコンパイルしないとスタック足りなかった。

[1]> (defun speed-test (times)
(do ((i 0 (1+ i))
(sum 0 (+ sum i)))
((= i times) sum)))
SPEED-TEST
[2]> (time (speed-test 10000000))
Real time: 10.158625 sec.
Run time: 10.16 sec.
Space: 0 Bytes
49999995000000
[3]> (compile 'speed-test)
SPEED-TEST ;
NIL ;
NIL
[4]> (time (speed-test 10000000))
Real time: 0.780928 sec.
Run time: 0.78 sec.
Space: 0 Bytes
49999995000000
[5]>

767 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 17:57:39 ]
>>794
clispはコンパイルしたら末尾再起はループに展開されるぞ

768 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:50:20 ]
794です。数日先のみ来から来ました。
767 さん。コメントありがとうございます。知らなかったので大変助かりました。
794で悩んだことはおかげさまで解決しました。

769 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 19:57:28 ]
メモリ使用量が多いのは most-positive-fixnum より多きい数字の計算にはメモリを消費するから。
ループを減らして結果が most-positive-fixnum 以下になるようにすると消費メモリが 0 になるのが確認できると思う。
性能は現在のバイトコードインタプリタならこんなもんだろう。タイトループの実行速度でJIT装備のJavaより速いなんてのはムリ。
性能が必要ならトレースキャッシュなJITが実装されるまで待つか、自分で実装するか、別の実装を使うかどちらか。



770 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 20:07:40 ]
>>767
えー
おれが前にやったらだめでガックリした覚えが


771 名前:579 mailto:sage [2008/10/04(土) 07:57:42 ]
>>769
おお!明確な答え、ありがとうございました。
確かに小さな値に対しては速かったんです。
ちょっと処理系を変えながらいろいろ試してみたいと
思います。ありがとうございました。

772 名前:759 mailto:sage [2008/10/04(土) 07:59:21 ]
あ、私は>>759でした。今まで>>579で書いてた。スミマセン。

773 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 00:03:33 ]
sbclを使ってスレッドプログラミングをしています
スレッド間通信をさせたいんですが
なんかそういう目的のためのキューとかメールボックスとか
それ系のデファクトスタンダードなライブラリってないんでしょうか
asdf-installからacl-compat入れてみたんですが
acl-compat.mp:queueはないみたいなんです

774 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 15:31:04 ]
いつのまにかeclでmaxima動くようになってたんですね


775 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 16:48:14 ]
sbclのarm portって進行中なの?
それとも予定は無い?
教えて詳しい人。

776 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 23:03:47 ]
少なくともここ二年くらいはだれも手をつけていないと思う。それ以前は知らね。

777 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 11:57:25 ]
ECL Unicodeサポート開始
ttp://sourceforge.net/forum/forum.php?forum_id=880598
ttp://sourceforge.net/project/screenshots.php?group_id=30035


778 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 23:53:24 ]
(let ((hoge #'(lambda ~~))))と
(let ((hoge (lambda ~~)))) どっちのlambdaが正しいの?
前者だと思ってるけど、GNU CLISP 2.45だとどっちでも同じ意味で通る。

779 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 00:25:41 ]
どっちも正しいよ。HyperSpecで Macro: LAMBDA のページを読むといい。
(macroexpand '(lambda () ())) => #'(lambda () ()) みたいな関数に展開されるマクロとなってる。
どっちを好むかはlisperの中でも好みはわかれるところ。このマクロ導入の経緯はPCLに書いてあるよ。



780 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 00:47:18 ]
ありがとう!どっちも正しいのか。
On Lispでは#'だったから疑問に思ってた。
仕様書よんでみます〜 ^o^

781 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 23:43:29 ]
(test '(1 2 3 4) '(1 2 3 4 5))
とかやると
(append '(1 2 3 4) '(1 2 3 4 5))
見たいなリストが得られるマクロ(?)がほしいんだけど
そのままevalに渡したら,そのまま実行できるやつ形式に出力してくれるやつ.

(defmacro test (a b)
`(list 'append ,a ,b))

こういう風に書いたんだけど,どうしても
(APPEND (1 2 3) (1 2 3))
クオーティングされちゃうんだよな...

a, bに渡されたものがそっくりそのままa, bに入るようにはかけないものか?

782 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 23:50:42 ]
つ (defmacro test (a b) `'(append ,a ,b))

783 名前:782 mailto:sage [2008/10/29(水) 23:54:28 ]
名前からしてテスト系のマクロを作りたいのかな?
とりあえず実践Common Lispの9章まで読んでみるといいと思うよ。
英語OKならPractical Common Lispでもいい。

784 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 00:09:05 ]
>>781
aまたはbがコンスで、かつそのcarが'QUOTEの場合だけ、事前にもういっちょquoteしてやったらどうよ

785 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 02:37:06 ]
>>783
逆だろ。
「英語がダメなら実践Common Lispでもいい」じゃないのか普通は。
原書である上にタダで読める方を後にもってくる理由がわからん。

786 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 08:33:55 ]
そんな怒らなくても…日本語版しか読んでないです。やっぱり原著よまないと駄目なんですか?

787 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 08:50:17 ]
>>785
言いたいことはわかる。でもその「理由がわからん」ってのは嘘だねw
「レスって何ですか?」とかの親戚。「あるべき道しか理解できないキャラ」作るの好きだよな、マって。

788 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 09:18:43 ]
>>787
天然だろ。
キャラ作るという発想は陰謀論の親戚。

789 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 09:47:38 ]
言葉だけでは人は分かり合えないのさ!



790 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 10:06:32 ]
>>788
なんで?

791 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 10:26:39 ]
オッカムの剃刀みたいなものだ

792 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 12:12:08 ]
荒れてしまってごめんなさい。英語勉強してから出直します…

793 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 12:47:58 ]
2chで下らない煽り合いを気にしてたら禿げるぞ

(defmacro test (fun &rest lists)
(let ((form `(,fun ,@lists)))
`(format t "~S => ~A" ',form ,form)))

(test mapcar #'+ '(1 2 3) '(4 5 6) '(7 8 9))

(mapcar #'+ '(1 2 3) '(4 5 6) '(7 8 9)) => (12 15 18)

こーゆーのはちょこちょこ使う。

794 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:12:24 ]
>>793
なんでわざわざ引数わけてるの?
(defmacro test (&rest form)
 `(format t "~S => ~A" ',form ,form))
じゃダメなん?

795 名前:793 mailto:sage [2008/10/31(金) 01:04:40 ]
うわ。2行目とか全然無駄だね、なんで分けたんだろ

796 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 06:59:48 ]
(test) を引数が足りないエラーにするためじゃない?

797 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 18:14:47 ]
Lisp in a box (ttp://common-lisp.net/project/lispbox/)
を入れてVista上で使いはじめところなんですが、質問があります。

グラフィック系のプログラム(3D-CADや2Dグラフ表示)を
作りたいんですが、お勧めのライブラリとかありますか?

検索でこれ(ttp://www.cliki.net/graphics%20library)を
見つけたんですが、多すぎてどれを選べません。 orz

できるだけインストールが簡単なものがいいです。
お知恵をお貸しください。m(_ _)m


798 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 19:18:18 ]
蝶オススメ
ttp://miyamuko.s56.xrea.com/xyzzy/cairo/intro.htm


799 名前:797 mailto:sage [2008/11/03(月) 01:23:54 ]
>>798
ありがとうございます。
さっそく動かしてみます!

3D系のものも、何かないでしょうか・・・。
3D CADのブール演算のようなものを作りたいんですが、
そのプリ・ポストに使う予定です。



800 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 14:15:00 ]
slimeでステップ実行デバックはできないのでしょうか?

801 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 01:12:57 ]
slime上で
(require :hunchentoot)
すると落ちる

コンソール上だと落ちない

802 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 08:16:51 ]
SLIME+CLISP
REPLバッファで式を評価すると
---
error in process filter: slime-dispatch-event: Elisp destructure-case failed: (:presentation-start 1 :repl-result)
error in process filter: Elisp destructure-case failed: (:presentation-start 1 :repl-result)
error in process filter: slime-dispatch-event: Elisp destructure-case failed: (:presentation-end 1 :repl-result)
error in process filter: Elisp destructure-case failed: (:presentation-end 1 :repl-result)
---
みたいなエラーがミニバッファに表示されて、それから結果が返ってきます
何が悪さをしているんでしょう?
Emacs側なのかそれともLisp側なのか


803 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 10:30:30 ]
>>801
実行環境を書かないと同じ経験した人ですら書き込み不能と思われ

804 名前:801 mailto:sage [2008/11/05(水) 14:16:58 ]
>>803
ubuntu8.04
でapt-getでinstallされるsbclとslime
emacs22
を使いました
hunchentootはasdfでinstallしました

805 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 19:52:19 ]
clispでLtkを使っています。
saveinitmem関数で実行形式のGUIアプリケーションを作ったのですが
これはポータブルなのでしょうか?それともダウンロードしたユーザーのマシン内にclispや
tcl/tk,ltkがインストールされていないと配布しても実行できないのでしょうか?

もし実行できないのならLispからGUIを呼び出したアプリケーションの
配布方法を御享受願います。ほかにもCUIのツールがあるのですが
どのように配布すればいいのかわからないのでよろしくお願いします。

806 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 11:19:53 ]
common lispで数値計算簡単にできるようにしようと
maximaの関数をsbclから直接利用しようとしたら
lapack呼ぶ関数がgclでしか動かないみたいなのだけど

数値計算したかったらgclを使えってことなんでしょうか

807 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 01:14:28 ]
clispを使っているのですが ext:run-program をネストするには
どのようにすればいいのでしょうか?
開発環境がdebianなので他のOSに有るのかはわかりませんが
su-to-rootとという内部コマンドがあり-XオプションをつけるとX上のダイアログで
rootになれさらに-c cmdオプションでcmdをroot権限で実行する事ができます。
これとLtkを利用してボタンを押すとsu-to-rootでroot権限を手に入れて
cmdを実行するという事をしたいのですがその実行したいcmdにも引数が必要だと
(ext:run-program "su-to-root" :arguments '("-X" "-c" "cmd" "cmd-option"))
と言う風にするとcmd-optionがsu-to-rootの引数と認識されてしまいます。
そこで
(ext:run-program "su-to-root" :arguments '("-X" "-c" "cmd cmd-option"))
としてみても動作は同じでした。
これを解決するにはどのようにすればいいのでしょうか?
よろしくおねがいします。


808 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 01:22:36 ]
>>807
CLの質問じゃない気がするが。俺の環境じゃ "cmd cmd-option" で動く。

809 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 06:02:53 ]
そうですか...
このような微妙な質問は何処ですればいいのか....



810 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 13:31:38 ]
cmuclのrequireがアプリによって動いたり動かなかったりするのはバグですか?

811 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 21:34:10 ]
やっぱスレタイがよくないと思うんだ
頭のmake-thread nameが余計だ
一瞬何のスレだかわからん
これにせいで明らかに失速してる

812 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 21:54:50 ]
そのせいで失速したかは知らないが
前の【入門】Common Lisp そのn【質問よろず】 ってスレタイは
初心者にも優しい感じがして好きだったなあ

813 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 22:57:23 ]
俺も前のスレタイの方がいいと思うな
次にスレ建てするときは戻すのを希望

814 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 23:12:55 ]
(make-thread :name common-lisp :part 5)

した結果が common-lisp :part 5 というスレだよな〜とは思っていた。


815 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 14:21:31 ]
○ Common Lisp
× common-lisp

816 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 20:41:07 ]
>>812
最初にlispの情報を集める時は

入門 tourotial lisp

で検索する
今のスレタイだと検索にひっかからない

817 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 20:49:36 ]
tourotial は必須だよな

818 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 21:20:26 ]
ポーランド語?

819 名前:デフォルトの名無しさん mailto:sage [2008/12/02(火) 22:13:54 ]
どうでもいい事に時間を使わない
それが神のlisper



820 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 00:14:25 ]
どうでもいいレスありがとう。

821 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 14:47:37 ]
適当にスペル間違ってもgoogleが自動補正してくれるからな


822 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 17:57:00 ]
(unsigned-byte 8)のarrayのポインタを指定バイト数だけ進めるのはどうしたらよいのだろうか?
サイズを制限(?)するのであればfill-pointerが使えるようだが,書込み開始のオフセット
アドレスを指定する方法がわからん

誰か教えてください

823 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 21:01:33 ]
>>822
make-arrayの:displaced-toと:displaced-index-offset引数を指定で可能かと
ttp://www.lispworks.com/documentation/HyperSpec/Body/f_mk_ar.htm


824 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 14:35:30 ]
GUIに関して質問です。
LTK、SDL、CLIMなどがあるということはわかったのですが、それぞれの特徴なんかを教えていただけたらと思います。

825 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:02:24 ]
あLispスレ1000いったか






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef