【入門】Common Lisp その6【質問よろず】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/02/18(水) 00:22:16初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)
ま、ゆっくりたりましょう。
「いいものの本質は、いかなる時代においても変わらない」byパワーズ
(list
(url http://pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url http://pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url http://pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url http://pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4)
(url http://pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5))
□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
0175デフォルトの名無しさん
2009/05/08(金) 13:07:33pdfならapressのページで登録すれば配布されているんだよ。<PCL
もっとも原著だろうが訳書だろうが、本をもってるほうがなにかと
便利なんだが。
0176デフォルトの名無しさん
2009/05/08(金) 15:58:21本は目にやさしいしね
力尽きたときに寝転がりながらパラパラ読めるのがいい
全体把握もしやすいし、索引がしっかりしていれば検索もしやすい
pdfってうざいなあと思っちゃうんだけど、これは印刷して読んでください用ということなのかな?
emacsでpdfって読めないのかなw
そしたら便利なんだが
slime便利だね
関数補完(一覧)が出るだけでも勉強効率があがって、すごく助かる
0177デフォルトの名無しさん
2009/05/08(金) 16:51:39あれよくないの?
0178デフォルトの名無しさん
2009/05/08(金) 17:25:50目次からジャンプしたり好き勝手に検索したりというのは紙じゃ無理だ。
単にスキャンしただけというのは駄目だけど。
形式は別にPDFじゃなくてもいいんだけど、数式や特殊記号や図が多く
なりがちな専門書は他にいい形式がないんだよね。
本を何冊も持ち運ぶのは大変だけど、データなら何冊あっても楽だ。
もう紙の辞書なんか誰も使ってないのはこの便利さがあるからでしょう。
ただ寝転んだままノートパソコンの画面をみるのはつらいので、
日本でもKindleが使えるようになって欲しい。とりあえず日本語出なくても
いいから。洋書の専門書は重いんだよなあ。
0179デフォルトの名無しさん
2009/05/08(金) 17:32:29見覚えのあるテキストをもう一度読みたくてざっとめくるってのができないのが電子書籍の欠点なので僕は紙の媒体を捨てられない
0180デフォルトの名無しさん
2009/05/08(金) 19:13:52>もう紙の辞書なんか誰も使ってないのはこの便利さがあるからでしょう。
羅和とか大漢和とか古語辞典も全部電子化されればいいのになあ
紙媒体しかない辞書が多過ぐる
0181デフォルトの名無しさん
2009/05/08(金) 20:30:36他に何を仕込まるか分からないとか、そういうのをやめてくれたらなあ
0182デフォルトの名無しさん
2009/05/09(土) 12:09:450183デフォルトの名無しさん
2009/05/09(土) 14:23:45例えばOn Lisp って本に↓のように書かれてたんですが
(apply #'format *query-io* args)
これって
(format *query-io* args)
ってやるのと変わらないですよね?
シンボルの値に関数が入ってるんだったら apply を使う意味はあると思うんです。
例えば関数を 仮引数 fn で受けてるんだったら
(fn args)
は動作しないから
(apply fn args)
ってやると思うんです。
でも最初の例のように 関数は format って分かってるのに apply を使う意味は何なんでしょうか?
0184デフォルトの名無しさん
2009/05/09(土) 14:47:34(apply #'list 1 2 '(3 4 5)) => (1 2 3 4 5)
(list 1 2 '(3 4 5)) => (1 2 (3 4 5))
0185183
2009/05/09(土) 14:51:29http://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/functions.html
> 以下の4個の式はみな同じ働きをする:
> (+ 1 2)
> (apply #'+ '(1 2))
> (apply (symbol-function '+) '(1 2))
> (apply #'(lambda (x y) (+ x y)) '(1 2))
これだと関数が分かってるときに
何でわざわざ apply を使うのかますます分からないです。
気にするなって事なんでしょうか。
0186デフォルトの名無しさん
2009/05/09(土) 14:58:54(+ '(1 2))とか(funcall #'+ '(1 2))だとエラーになるよね
0187183
2009/05/09(土) 15:13:20引数をリストで渡せて、その要素が一つ一つ関数への引数として渡せるのが便利だからって事ですよね。
確かにそれだと納得できます。ありがとうございます。
a が (1 2 3) として
(list a) のように関数を先頭にした表記で
実際には (list 1 2 3) と引数を展開して実行できるやり方はないんですか。
0188デフォルトの名無しさん
2009/05/09(土) 15:39:44sbclrcでシェバング対策やらasdfのインポートやらをしていたら
sbclを立ち上げてから*のプロンプトが出るまでに5秒ぐらいかかるように
なったのですが、皆さんもこれぐらいなのでしょうか?
よろしくおねがいします。
あと、sbclに履歴機能をつける方法とEmacsキーバインドで
操作できる方法が有ればよろしくおねがいします。
0189デフォルトの名無しさん
2009/05/09(土) 15:46:34>あと、sbclに履歴機能をつける方法とEmacsキーバインドで
>操作できる方法が有ればよろしくおねがいします。
Slimeでも何でもいいからEmacsの中で使えばいいのでは。
0190デフォルトの名無しさん
2009/05/09(土) 15:49:21sbclrcの内容を foo.lisp とかに移してからそれをコンパイルして
foo.fasl にし、sbclrc はそれをロードするだけにするとか。
0192デフォルトの名無しさん
2009/05/09(土) 18:59:29そうしました、しかしsbclに標準でそういった機能がつくと
うれしいですね。(rc-compile)見たいな...
0193192
2009/05/09(土) 19:09:09もしかしたら、sbclrc.faslというファイルが有ればそちらを
優先して読み込むと言う設定に改造してコンパイルすれば
良いかもしれませんね。ついでに(rc-compile)関数を組み込みにして
ファイル名を指定しなくても組み込みのsysinit-pathname
という関数を利用して適切なsbclrcファイルを選択してコンパイル
してくれるという関数が作れそうです。
0194デフォルトの名無しさん
2009/05/09(土) 21:58:39の中身をみたいなのだけど
clispだと
#'foo リターン
だけで関数のソースみれる
sbclだとできない
sbclでfooのソースが帰ってくる関数ないのでしょうか
0195デフォルトの名無しさん
2009/05/10(日) 00:15:100196デフォルトの名無しさん
2009/05/10(日) 00:25:570197デフォルトの名無しさん
2009/05/10(日) 00:50:160198デフォルトの名無しさん
2009/05/10(日) 12:17:48これで高速なcmuclが日本語でも使える。ただし、32bit x86 のみ
0199デフォルトの名無しさん
2009/05/10(日) 14:32:19最新じゃ無くてもutf8は使えてたぞ
日本語はダメだったけど
0200デフォルトの名無しさん
2009/05/10(日) 14:59:37こういう便利なものってみんなどうやってみつけてるの?
0201デフォルトの名無しさん
2009/05/10(日) 16:19:01いろいろコードの手直ししないとコンパイル通りませんよね?
最後にlispのコードよむところで
ffiがどうとかいうエラーでてあきらめたのですが
0202デフォルトの名無しさん
2009/05/10(日) 21:10:48式の評価をいろいろ試せる環境なわけじゃないんだね
0203デフォルトの名無しさん
2009/05/10(日) 23:53:070204デフォルトの名無しさん
2009/05/11(月) 09:26:05inferior-maxima-modeと組み合わせてみればできるんだけど、その方法はあまりかかれてないね。
0205デフォルトの名無しさん
2009/05/11(月) 11:20:080206デフォルトの名無しさん
2009/05/11(月) 21:18:440207デフォルトの名無しさん
2009/05/11(月) 21:47:36皿洗いも済ませてしまいたいのですが、そういうことは可能でしょうか?
アイコンを見ている限りは何とか出来そうな気もするのですが。。。
ご教示いただければ幸いです。
0208デフォルトの名無しさん
2009/05/11(月) 22:41:23インターネット経由で皿洗い機に接続するモードを用意すれば出来そうです。
http://ascii24.com/news/i/topi/article/2000/01/11/606333-000.html
0209デフォルトの名無しさん
2009/05/12(火) 11:24:270210デフォルトの名無しさん
2009/05/13(水) 12:31:58#+test
でテストコード挿入する方法があるんだね
便利そうだけど使い方わかんない
0211デフォルトの名無しさん
2009/05/13(水) 13:18:08この辺から見てみるといいよ。
http://www.lispworks.com/documentation/HyperSpec/Body/24_ab.htm
0212デフォルトの名無しさん
2009/05/13(水) 20:46:53ダウンロードして解凍、CCLのフォルダができたのですが、
その後、どうしたらいいのでしょう?
0213デフォルトの名無しさん
2009/05/13(水) 23:04:50それでインストールできてるんじゃね?
何がわからんのかわからん
0214デフォルトの名無しさん
2009/05/14(木) 06:12:02Mac OSX 10.5.7環境なのですが、
ClozureCL1.3が出たのでバージョンアップしようと思い(1.2を使ってました。)
サイトからsvnでダウンロードして./dx8664を起動した所
Error: Reader error: No external symbol named "MAKE-EXTERNAL-FOMAT" in package #<Package "CCL"> .
> While executing: CCL::%PARSE-TOKEN, in process Listener(6).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Create and use the internal symbol CCL::MAKE-EXTERNAL-FOMAT
> Type :? for other options.
1>
といきなりエラーが出てしまいます。
これはClozureCLのバグだと思うのですが、どうなのでしょうか?
解決法などありましたらご教授ください。
0215デフォルトの名無しさん
2009/05/14(木) 18:53:33こういう関数がパッケージになっているのは何故ですか?
パッケージにせずに単にloadする場合との違いは何でしょうか
0216デフォルトの名無しさん
2009/05/14(木) 23:11:26http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/packages.html
0217デフォルトの名無しさん
2009/05/15(金) 01:09:13フィボナッチの計算で比べてみたら3倍ぐらい速かったわ
0218デフォルトの名無しさん
2009/05/15(金) 01:12:25速い部分もあれば、遅い部分もあるよ。
ベンチマークが公開されてるから、見ると結構面白いと思う。
Allegroとかとの比較もあるよ。
0219デフォルトの名無しさん
2009/05/15(金) 01:33:51ピープホール持ってない sbcl/cmucl に言ってはならないことを…
0220デフォルトの名無しさん
2009/05/15(金) 03:39:02ありがとうございます。
名前が重複しないように、ということですね。
0221デフォルトの名無しさん
2009/05/15(金) 15:46:48(pushnew 0 l) -> l= (0)
(push 0 l) -> l=(0 0)
こんなことおきるんだね
ゼロって怖い
0222デフォルトの名無しさん
2009/05/15(金) 16:19:42よく考えたらあたりまえだった
0223212
2009/05/15(金) 21:35:51> Error: value NIL is not of the expected type (OR STRING PATHNAME STREAM).
> While executing: PATHNAME-DIRECTORY, in process Initial(0).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Skip (possibly crucial) startup function CCL::INIT-LOGICAL-DIRECTORIES.
> Type :? for other options.
> Error: value NIL is not of the expected type CCL::RECURSIVE-LOCK.
> While executing: CCL::RECURSIVE-LOCK-PTR, in process Initial(0).
> Type :POP to abort, :R for a list of available restarts.
> Error: value NIL is not of the expected type CCL::RECURSIVE-LOCK.
> While executing: CCL::RECURSIVE-LOCK-PTR, in process Initial(0).
> Type :POP to abort, :R for a list of available restarts.
0224デフォルトの名無しさん
2009/05/15(金) 23:16:57どんな方法が有るのでしょうか?
formatについて調べてみたのですがそういう物は無いようですし。
よろしくおねがいします。
0225デフォルトの名無しさん
2009/05/15(金) 23:52:16(format t "hello~%yahoo")
0226デフォルトの名無しさん
2009/05/16(土) 00:05:07そちらではなくて復帰のほうです。
引き続きよろしくおねがいします。
0227デフォルトの名無しさん
2009/05/16(土) 00:28:26(princ (code-char 13))
じゃないかな。本当にスクリーンコントロールしたいならcl-ncursesとかを使ったほうがいいと思うけど。
0228デフォルトの名無しさん
2009/05/16(土) 01:10:25ありがとう御座います。
ロード画面のように
棒がのびるエフェクトをつけたかったのでキャリッジリターンを
知りたかったのです。インタプリタだと確認できないので
ファイルに書いて試してみたいと思います。ありがとう御座いました。
0229デフォルトの名無しさん
2009/05/16(土) 13:00:24ある意味matlabより便利なのに,思ったより使ってる人すくないのかなあ
0230デフォルトの名無しさん
2009/05/16(土) 13:36:20どのようにすれば良いでしょうか?
'(hello world)というリストの
各要素の長さを別のリストに移したいのでmapcarをつかおうと思うのですが、
legthは文字列でないと受け取ってくれないので、どうしようかと
思っています。
よろしくおねがいします。
0231デフォルトの名無しさん
2009/05/16(土) 14:09:310232デフォルトの名無しさん
2009/05/16(土) 14:35:320233デフォルトの名無しさん
2009/05/17(日) 10:30:29lispファイルからmcclimをrequireしてもmcclimが見つからないようです。
http://mcclim.cliki.net/Getting%20started%20using%20clbuild
ここを参考にしたのですが、他に何かやることがあるのでしょうか?
0234デフォルトの名無しさん
2009/05/17(日) 12:09:23裏で動いてるのはsbclらしい。
0235デフォルトの名無しさん
2009/05/17(日) 22:29:13HyperSpecやらCLtL2やら
ANSI X3.226-1994 Information Technology - Programming Language - Common Lisp
やらが出てきてどれが本物なのかがわかりません。
少し聞いた話がANSIが仕様書でCLtL2はその仕様書の編纂途中の様子とかを記録した物で
HyperSpecは辞書のような物だと聞いた事が有ったような....
できれば書籍で販売されているとうれしいです。
0236デフォルトの名無しさん
2009/05/17(日) 23:15:450237デフォルトの名無しさん
2009/05/17(日) 23:28:46ANSI/INCITS 226-1994
http://www.techstreet.com/cgi-bin/detail?product_id=56214
$350.00 USD
0238デフォルトの名無しさん
2009/05/18(月) 00:27:090239デフォルトの名無しさん
2009/05/18(月) 00:35:580240デフォルトの名無しさん
2009/05/19(火) 00:14:37(defmacro lbd (arg body)
`(lambda ,arg ,body))
というのを書いたのですが、replで
(lbd (x) (* x x))と打つと普通にlambdaの文と同じ無名関数として処理されるのですが
((lbd (x) (* x x)) 2)とすると
とたんに
((lbd (x) (* x x)) 2)のcarはlambda式でも関数でもないと帰ってきてしまいます。
これを回避するにはどのようにすれば良いのでしょうか?
よろしくおねがいします。
0241デフォルトの名無しさん
2009/05/19(火) 01:12:37carにlambda式を置くというバッドノウハウは無視して
常にfuncallを使うようにすれば良いと思います
0242デフォルトの名無しさん
2009/05/19(火) 06:03:18はまる人の少ないところだからあまり知られてないけれど。
http://www.lispworks.com/documentation/HyperSpec/Body/03_abab.htm
>If the car of the compound form is not a symbol,
>then that car must be a lambda expression,
>in which case the compound form is a lambda form.
ということで car は symbol じゃないなら lambda で始まるリストじゃなきゃ駄目です。
リーダマクロなら評価の前に式の変形を行うからいけるはずだけど。
0243233
2009/05/19(火) 14:09:39なんとかmcclimを読み込んでhello worldを表示することができたのですが、
今度は日本語表示を表示しようとmcclim-truetypeをrequireして実行すると、以下のエラーが出ます。
unhandled ZPB-TTF::BAD-MAGIC:
Bad magic value in font header: #x4F54544F (expected #x00010000 or #x74727565)
見ての通りZPB-TTFというライブラリが何かエラーを起こしているようなのですが、対処法はありますでしょうか?
0244デフォルトの名無しさん
2009/05/20(水) 15:05:060245233
2009/05/23(土) 13:25:12返信ありがとうございます。
フォントとなると環境が絡んでくるのですね。
後からになって申し訳ないのですが、MacOSX(leopard)、SBCLを使っていまして、
調べてみたところOSはOpenTypeFontには対応しているようです。
また、代わりにmcclim-freetypeをrequireすると、
unhandled SIMPLE-ERROR: attempt to multiply define ENUM FREETYPE:GLYPH-FORMAT-
というエラーが出て、こちらも駄目でした。
Lispはエラーを検索しても解決策が出てくることが少ないですが、皆さんはどう対処しているのですか?
SBCL含め全て再インストールした方が良いでしょうか・・
0246デフォルトの名無しさん
2009/05/24(日) 02:13:30こちらではほとんど同じ環境ですが、mcclim-freetypeもmcclim-truetypeも
使えているようです。mcclimはclbuildで入れました。mcclim-truetype.asdでのcl-aaへの
依存を取り除いた以外は特に変更を入れていません。
0247233
2009/05/26(火) 12:08:56返信ありがとうございます。
長々と場所を取ってしまいすみません。
今、部分的に再インストールしてみたりして試行錯誤しているのですが、
clbuildでmcclimを入れ、truetypeを使おうとした時に、「cl-paths-ttfがrequireしているzpb-ttfがありません」というエラーは出ませんでしたか?
下のような感じです。
component "zpb-ttf" not found, required by #<SYSTEM "cl-paths-ttf" {12E438F9}>
zpb-ttfを入れるためにclbuildを使おうとしたところ、サポートされていなかったようなのでasdf経由で入れたのですが、これがマズかったのでしょうか?
その他、clbuildだけではインストールされなかったライブラリ等あれば、お教えいただけると幸いです。
0248246
2009/05/26(火) 18:05:45gitは入れていますか?zpb-ttfをclbuildで入れるときにこれが必要だったような気がします。
(macportsで入れました)
0249デフォルトの名無しさん
2009/05/28(木) 12:23:500250233
2009/05/29(金) 05:58:43返信ありがとうございます。
どうにもならないようなので、一度すべて再インストールしてみることにしました。
アンインストールしてから、SBCL、darcs、clbuild、Gitを再インストールし、
clbuildを使ってmcclim、cl-vectors、zpb-ttfを入れましたが、
truetypeは>>243のエラー、freetypeは>>245のエラーがやはり出ます。
これ以上場所を取るのも悪いので、以降は自分で何とかしてみることにします。
また新しく何か分かった時は質問させていただくかもしれないので、その際は宜しくお願いします。
0251246
2009/05/29(金) 06:25:07ほかの話題を邪魔してしまってる訳でもないし、スレチでもないので別にいいのでは?
エラーメッセージから推測するに、特定のフォントのフォーマットが合わないのかも
しれませんね。
http://www.xach.com/lisp/zpb-ttf/#sect-limitations
によると、ユニコードマップがないフォントはだめと書いてあるのでもしかしたら
互換性のないフォントのせいでこけているということもあり得ます。
追加で入れたフォントをいったん外してみたらどうでしょう?
0252233
2009/05/29(金) 13:23:54すみません、恐れ入ります。
ターミナルに表示される処理から察するに「ヒラギノ丸ゴ ProN W4」を参照しており、wikiによればこれがJISのようでしたので、
一旦これを取り除いて再度実行すると「ヒラギノ丸ゴ Pro W4」を参照して同様のエラー、ヒラギノ系をすべて取り除くと、以下のエラーが出ました。
因みに、デフォルト以外のフォントは入れていないです。
debugger invoked on a MCCLIM-TRUETYPE::MISSING-FONT:
Cannot access /Library/Fonts/ヒラギノ丸ゴ Pro W4.otf
Your *truetype-font-path* is currently /usr/share/fonts/truetype/ttf-dejavu/
The following files should exist:
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/ヒラギノ丸ゴ Pro W4.otf
/Library/Fonts/Microsoft/Meiryo Bold.ttf
/Library/Fonts/Microsoft/Meiryo Italic.ttf
/Library/Fonts/Microsoft/Meiryo Bold Italic.ttf
/usr/share/fonts/というディレクトリは存在しないのですが、一応ちゃんとライブラリフォルダを参照しているようです。
また、上記のマイクロソフト系のフォントファイルは存在しています。
仰る通り、適当なフォントを読み込めば何とかなる気はするのですが、*truetype-font-path*を変更すれば良いのでしょうか?
しかしながら、そもそも*truetype-font-path*には存在しないディレクトリが与えられていて、それでもライブラリフォルダを参照しているので、どう変更したものか、というところです。
もう少し考えてみます。
0253246
2009/05/31(日) 22:08:45パッケージをロード/実行した際でしょうか?
こちらで少し試してみたところ、ヒラギノはTTFでなくOTF (open type)なのでzpb-ttf
では読み込めないようです。M+フォントやIPAモナーフォントはOKでした。
もし(require :mcclim-truetype) が通るのであれば、そのあとで
mcclim-truetype::*families/faces*パラメタの方を修正してやればとりあえずごまかせる
かもしれません。>>252のフォントのリストはこのパラメタ (assocリスト)の値のリスト
なので、ヒラギノに対応する項目を適当なフォントのパスに付け替えれば動くかもしれません。
また、*truetype-font-path*の方はこれらの値のうち相対パスになっているものにだけ
使われるので、今は気にしなくて良さそうです。
0254デフォルトの名無しさん
2009/06/01(月) 19:37:290255デフォルトの名無しさん
2009/06/02(火) 01:52:27なんだか注文した事が後悔されているように読めて悲しい。
技術書の良くできた本って読み物としても良くできてるんだよね。
そしてOn lispは読み物としてもおもしろい本だったよ
他のlisp本だと実践CommonLispが楽しかった。
;;; 小生は活字中毒なのもあるかもしれんが
0256デフォルトの名無しさん
2009/06/02(火) 02:12:190257デフォルトの名無しさん
2009/06/02(火) 02:13:220258デフォルトの名無しさん
2009/06/02(火) 02:18:11On Lispは明瞭かつ流暢な日本語で書かれているので、100点を付けてもいいよ
0259デフォルトの名無しさん
2009/06/02(火) 02:42:29それで悩んだのはクヌース本の初版だけだったな、ASCII版は普通によめた
でも算符とか鍵盤とかの訳語は好きだぜw
0260デフォルトの名無しさん
2009/06/02(火) 16:24:50確かに昔の技術書や科学書は硬い言葉使いが多くて読みづらかったけど、
それでも何とかなっちゃう秀才が大学教授になって、やはり硬い文章を
再生産するのかもしれないなあと思ったりして。
0261デフォルトの名無しさん
2009/06/02(火) 19:36:51(defun make-run-length-encode (list)
(reduce #'(lambda (first rest)
(cond ((listp (car rest))
(if (eq first (car (car rest)))
(cons (cons first (1+ (cdr (car rest)))) (cdr rest))
(cons first rest)))
(t (if (eq first (car rest))
(cons (cons first 2) (cdr rest))
(cons first rest)))))
list :from-end t :initial-value nil))
これってもっとかっこよくエレガントに書けませんかね?
パターンマッチとか使えるといいんだがなぁ...
0262デフォルトの名無しさん
2009/06/02(火) 21:30:21(defun my-rle (list &optional (res nil))
(if (not list) res
(let* ((head (car list))
(cnt (position head list :test-not #'eq)))
(if (not cnt) (setf cnt (length list)))
(my-rle (nthcdr cnt list)
(append res (list (if (= cnt 1) head (cons head cnt))))))))
0263233
2009/06/04(木) 00:09:40返信ありがとうございます。
requireの下に、
(setf (cdr (nth 8 mcclim-truetype::*families/faces*)) #P"/Library/Fonts/Arial Unicode.ttf")
を追加したところ、ようやく日本語が表示されました。
色々説明不足であったにもかかわらず、何日もに渡ってお教えいただき、本当にありがとうございました。
初めの方に返信を下さった方々もありがとうございます。
Lisperの皆さんの優しさにちょっと感動です。
0264デフォルトの名無しさん
2009/06/04(木) 05:38:14* (time (fact 45))
Evaluation took:
0.000 seconds of real time
0.000008 seconds of total run time (0.000007 user, 0.000001 system)
100.00% CPU
9,971 processor cycles
0 bytes consed
119622220865480194561963161495657715064383733760000000000
* (time (fact-cps 45))
Evaluation took:
0.000 seconds of real time
0.000010 seconds of total run time (0.000009 user, 0.000001 system)
100.00% CPU
13,546 processor cycles
4,080 bytes consed
119622220865480194561963161495657715064383733760000000000
と末尾再帰がたのfact-cpsの方が若干遅かったのは驚きました。
タイミングの問題ですかね?
0265デフォルトの名無しさん
2009/06/04(木) 07:01:08むしろ末尾再帰のために引数が増えたりすると、スピード面ではデメリットになっているかもしれない。
0266デフォルトの名無しさん
2009/06/04(木) 10:59:58コンパイルした?
>>265
なことはない。
0267デフォルトの名無しさん
2009/06/04(木) 11:59:07a->b b->c c->d・・・みたいな
0268デフォルトの名無しさん
2009/06/04(木) 12:09:260269デフォルトの名無しさん
2009/06/04(木) 12:36:39Clinger の "Proper tail recursion and space efficiency" でも読みなされ。
0270264
2009/06/04(木) 13:07:42(proclaim '(optimize speed))
を忘れていたので帰ったら試して見ます
0271デフォルトの名無しさん
2009/06/04(木) 22:00:17tail call 用の引数の計算にスタック上のデータが必要だと、
処理が少しだけ面倒くさくならない?
なんかうまいやり方があるのかな。
0272264
2009/06/05(金) 01:03:18以下のようにちゃんと末尾再帰版が速くなりました。
* (time (fact 45))
Evaluation took:
0.000 seconds of real time
0.000016 seconds of total run time (0.000009 user, 0.000007 system)
100.00% CPU
9,581 processor cycles
4,096 bytes consed
119622220865480194561963161495657715064383733760000000000
* (time (fact-cps 45))
Evaluation took:
0.000 seconds of real time
0.000008 seconds of total run time (0.000007 user, 0.000001 system)
100.00% CPU
9,412 processor cycles
0 bytes consed
119622220865480194561963161495657715064383733760000000000
0273デフォルトの名無しさん
2009/06/05(金) 07:34:02何回かやってみると必要サイクル数は少し変動してるし(ガベコレのタイミングのせい?)。
うちの環境ではどちらが早いとも言えなかった。
0274デフォルトの名無しさん
2009/06/07(日) 11:14:44いったいどういう理由なんですか?
■ このスレッドは過去ログ倉庫に格納されています