(make-thread :name c ..
[2ch|▼Menu]
751:デフォルトの名無しさん
08/09/30 13:46:44
はてなでみつけたけど、こんなのあるんだな。
URLリンク(page14.auctions.yahoo.co.jp)

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

753:デフォルトの名無しさん
08/09/30 20:24:21
こっちなら色んな所にありそうなんだがな。
URLリンク(dl.getdropbox.com)


754:デフォルトの名無しさん
08/10/02 04:24:30
上品な大人っぽい雰囲気の『CLISP』。

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


755:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/03 10:49:25
>>759
とりあえず確認。
コンパイルはした?

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


762:579
08/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
08/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:デフォルトの名無しさん
08/10/03 13:44:29
>>763
clispは末尾再帰を最適化しない(ことが多い? 全然しないのか少しはするのか知らない)。
末尾再帰の最適化をしない処理系で期待しても無駄というもの。
disassembleしてみりゃすぐわかるから確認すれ。

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



766:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/03 17:57:39
>>794
clispはコンパイルしたら末尾再起はループに展開されるぞ

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

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

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


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

772:759
08/10/04 07:59:21
あ、私は>>759でした。今まで>>579で書いてた。スミマセン。

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

774:デフォルトの名無しさん
08/10/10 15:31:04
いつのまにかeclでmaxima動くようになってたんですね


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

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

777:デフォルトの名無しさん
08/10/25 11:57:25
ECL Unicodeサポート開始
URLリンク(sourceforge.net)
URLリンク(sourceforge.net)


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

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

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

781:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/29 23:50:42
つ (defmacro test (a b) `'(append ,a ,b))

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

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

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

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

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

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

789:デフォルトの名無しさん
08/10/30 09:47:38
言葉だけでは人は分かり合えないのさ!

790:デフォルトの名無しさん
08/10/30 10:06:32
>>788
なんで?

791:デフォルトの名無しさん
08/10/30 10:26:39
オッカムの剃刀みたいなものだ

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

793:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/30 23:12:24
>>793
なんでわざわざ引数わけてるの?
(defmacro test (&rest form)
 `(format t "~S => ~A" ',form ,form))
じゃダメなん?

795:793
08/10/31 01:04:40
うわ。2行目とか全然無駄だね、なんで分けたんだろ

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

797:デフォルトの名無しさん
08/11/02 18:14:47
Lisp in a box (URLリンク(common-lisp.net))
を入れてVista上で使いはじめところなんですが、質問があります。

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

検索でこれ(URLリンク(www.cliki.net))を
見つけたんですが、多すぎてどれを選べません。 orz

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


798:デフォルトの名無しさん
08/11/02 19:18:18
蝶オススメ
URLリンク(miyamuko.s56.xrea.com)


799:797
08/11/03 01:23:54
>>798
ありがとうございます。
さっそく動かしてみます!

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

800:デフォルトの名無しさん
08/11/04 14:15:00
slimeでステップ実行デバックはできないのでしょうか?

801:デフォルトの名無しさん
08/11/05 01:12:57
slime上で
(require :hunchentoot)
すると落ちる

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

802:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/05 10:30:30
>>801
実行環境を書かないと同じ経験した人ですら書き込み不能と思われ

804:801
08/11/05 14:16:58
>>803
ubuntu8.04
でapt-getでinstallされるsbclとslime
emacs22
を使いました
hunchentootはasdfでinstallしました

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

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

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

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

807:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/25 01:22:36
>>807
CLの質問じゃない気がするが。俺の環境じゃ "cmd cmd-option" で動く。

809:デフォルトの名無しさん
08/11/25 06:02:53
そうですか...
このような微妙な質問は何処ですればいいのか....

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

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

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

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

814:デフォルトの名無しさん
08/11/30 23:12:55
(make-thread :name common-lisp :part 5)

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


815:デフォルトの名無しさん
08/12/01 14:21:31
○ Common Lisp
× common-lisp

816:デフォルトの名無しさん
08/12/02 20:41:07
>>812
最初にlispの情報を集める時は

入門 tourotial lisp

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

817:デフォルトの名無しさん
08/12/02 20:49:36
tourotial は必須だよな

818:デフォルトの名無しさん
08/12/02 21:20:26
ポーランド語?

819:デフォルトの名無しさん
08/12/02 22:13:54
どうでもいい事に時間を使わない
それが神のlisper

820:デフォルトの名無しさん
08/12/03 00:14:25
どうでもいいレスありがとう。

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


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

誰か教えてください

823:デフォルトの名無しさん
08/12/24 21:01:33
>>822
make-arrayの:displaced-toと:displaced-index-offset引数を指定で可能かと
URLリンク(www.lispworks.com)


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

825:デフォルトの名無しさん
09/01/13 23:02:24
あLispスレ1000いったか


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

4067日前に更新/237 KB
担当:undef