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


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

【入門】Common Lisp その4【質問よろず】



1 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:52:46 ]
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))


809 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:35:14 ]
ANSI CommnLispの日本語版が一番安価に入手できる。

810 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:04:10 ]
あれ?とおもったからしらべたけど、
PAIPは1992でANSIは1996だったよ。PCLは2005かな。

811 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:05:25 ]
>>809
あれ難しいわw
つか、Lisp自体が難しいんだろうけど、

812 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:33:57 ]
>>810
内容が。。。

813 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:36:27 ]
>>811
Lispはコード量が少なくて済む分、一行の重みが濃密だからね。
そのかわり、一度臨界点を越えると生産性が高い。

814 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:37:12 ]
>>813
まあ、関数型はみんなそういえるかな。

815 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:44:20 ]
>>813
可読性はどうですか?
修行が足りないせいか、めちゃくちゃ読みにくいです(涙)。

816 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:00:36 ]
>>815
はじめて最初の1〜2ヶ月はバックグラウンド次第ですごく混乱します。
この辺はJava/C++/C組が挫折するところ。これらのグループよりプログラミングバージン
の方が上達が速いかもしれません。

当初のとっつきにくさを乗り越えると、単純な法則のもとでプログラムがかかかれている
のがわかるから、それから理解が深くなってくるよ。

もっとも、自然言語学習と同じでボキャブラリを増やす過程は苦しいかな。
わからんでもいいからとりあえずなれることを重視して続けていけば良い。
感覚的な理解ってのは論理的な理解より時間がかかるんで、そのギャップが多いときは
どうしても辛くなりがちだから。

817 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:09:03 ]
>>816
アドバイス、ありがとうございます。
僕は、まさにその通りのバックグランドを持ってて
再帰に少し慣れてきたかなぁ・・・って段階です。
ちょっと不安が解消されました。

ところで、Lispは可読性が低くないという解釈で良いですか?



818 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:19:26 ]
>>817
s式の括弧を読んでインデントをサポートしてくれるエディタとペアならそれほど苦痛じゃないよ。


819 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:30:23 ]
>>818
インデントの問題はないので、やはりまだ修行が足りないだけですね。
精進します。
ありがとうございます。

820 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:45:34 ]
C++のvirtual, const, explicit, throwsがどうのってのよりは
よほど学びやすいと思うけどな...
Boostのソースとかもう意味不明だし

821 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 03:37:40 ]
読みやすくはねえけど、意味不明ってほどか?

822 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 09:42:30 ]
>>821
まじでか。
boost/iterator/*の怒涛のコメント読むだけで知恵熱出そうだが。


823 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:37:47 ]
C++のテンプレやマクロはプログラムに密に作用するから
ブラックボックスとして使いにくいんだよな。
他のテンプレと競合したりする割に、やけにパーツ分割にこだわるし。
思想についていけない。


824 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:43:14 ]
boost lambda は確かに動くなぁと確かめたきりで実戦で使った記憶が無い。

825 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:51:53 ]
boostはvisual studio必須だと思った
lisp の自動インデントみたいなもの

826 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:32:03 ]
リストの各要素を足す関数はどのように作れば良いですか
例えばxが'(1 2 3 4)だとすると
(lsadd x)の様にして>10とかえってくるような関数を作りたいのです。
よろしくお願いします。

827 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:57:57 ]
applyという機能を見つけて作成することができました
CommonLispに搭載されている関数はどこで確認できるのでしょうか



828 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:00:43 ]
Lisp ってあの括弧がなぁ~
インデントで、なんとかならんの?

829 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:10:57 ]
>>827
(apropos シンボル)でひっかけてみな
あとはHyperSpecをググって

830 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:38:24 ]
>>828
式の解析、マクロを生成するマクロでは、インデントのみだと扱いが難しい。
AST(抽象構文木)と同様の構造だから、いろいろ実験できるんじゃないか?

831 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:39:31 ]
Lisp のコードを読む分には括弧は無視していい。
ちゃんとインデントつけて綺麗に書けばね。
で、書く時はエディタに助けてもらえばいい。

832 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:52:13 ]
>>828
インデントベースのlispと言う物はschemeの規格に既にあるが。

833 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:06:32 ]
>>831
それは良く聞くんだけど、実際は書きながらエラーがでない程度に
間違ってしまうこともあるし、
読むときも、しっかりと読んでおかないと、対応関係がインデントと
微妙にずれたコードもすくなからず存在する。


834 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:08:59 ]
>>833
> 読むときも、しっかりと読んでおかないと、対応関係がインデントと
> 微妙にずれたコードもすくなからず存在する。
読むときもエディタで一度インデントしなおせばいいんじゃ?

835 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:58:40 ]
与えられた「変なインデントのソース」を、何もいじらずそのまま読む必要は無いよね。
これはLispに限らず、C系でも「整形しなきゃ読めねえよ!」なソースは、多かれ少なかれ
自分でインデントいじって読むと思う。

836 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:08:17 ]
おい、変態インデントはここでは禁句だぞw


837 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:29:14 ]
Googleなどで探してみたのですが
解決できないのでよろしくお願いします。
ある数の約数をリストにして出力してくれる関数はどのように
作れば良いのでしょうか?



838 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:06:43 ]
宿題丸投げの季節か……

839 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:12:41 ]
>>838
すいません
宿題ではなくて作業自動化のために自主作成しているアプリケーションの
一部なのですが・・・・
まだLisp脳になっていないようで考え方がいまいちつかめないのです


840 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:12:56 ]
>839
何にしてもLisp以前の問題
数学勉強し直せ

841 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:03:39 ]
>>839
「自分のコードでは遅くて使い物にならない」ならまだしも、
「どのように作ればいいか?」は馬鹿にされても仕方ないんじゃないかな。
お前さん、ある数の約数を得たいとき、どういう風に計算する?

842 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:19:53 ]
>>841
初心者さんが最初に感覚を掴めないってのはざらにあるから、バカにしないほうがいいよ。

>>839
感覚が掴めないのはなれるしかないから。最初は大きなものを作ろうとするより、ちいさな
ユーティリティーでいいよ。とかく経験をつんでいけば大丈夫だから。


843 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:34:13 ]
↑ばーかばーか

844 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:02:05 ]
>>839
Cでも何でもいい、まずお前さんが使える言語で書いてみたら?
それをLispに移植すればいいんじゃない
Lispは手続き型言語みたいに書くこともできるんだし
Lispっぽく書くのはその後でもいいと思うよ

845 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:18:38 ]
>>842
俺自身は馬鹿にしないけど、>>840とかへのフォローもできない。

約数を求める数学的な知識があって、
Lispの入門書とか、マニュアルとかがあって、
さらにGoogleまで使えるなら、効率が悪かろうが、動かなかろうが、
自分なりの物くらいは作れると思うんだよ。

プログラミング初心者とかなら分かるんだけど、
そんな人間が「Lisp脳になっていない」とか言うか?
関数的な書き方が分からない、とかなら分かるんだけど。

846 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:39:15 ]
>>239
PerlとGaucheで書いてみた
sub yakusuu {
my $x=shift;
my @y;
for (my $i=2;$i<$x;$i++) {
if (($x % $i)==0) {push @y,$i}
}
return @y;
}
print yakusuu(100);
sub yakusuu2 {
my $x=shift;
return grep {(($x % $_)==0) ? $_ : 0} (2..$x-1);
}
print yakusuu2(100);

847 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:39:42 ]
こっちはGauche
(define (yakusuu x)
(let ((y ()))
(do ((i 2 (+ i 1)))
((>= i x))
(if (= (remainder x i) 0) (push! y i)))
(reverse y)
)
)
(print (yakusuu 100))
(use srfi-1)
(define (yakusuu2 x)
(filter (lambda (a) (if (= (remainder x a) 0) a #f)) (iota (- x 2) 2))
)
(print (yakusuu2 100))
どっちも似たような感じになってるのが分かると思う
あんまり変に考えないで気楽にLispに触れるのがいいよ
そのうち馴れるさ
yakusuu2はおまけですw
Lisp脳ってたぶんこんな感じのを想像したんじゃないかな?




848 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:41:49 ]
239ってなんだよorz
>>846の239は839な

849 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:07:31 ]
「Paul と Graham で書いてみた」に見えた
寝よ…

850 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:25:16 ]
あえてコモンリスプ以外で書いたのですね
わかります

851 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:45:51 ]
>>847
SRFI-42マジオススメ。

852 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 06:34:36 ]
>>840-851
ありがとうございます。
C言語では
#include <stdio.h>

int main(void){
int a,b=1;
printf("start:");
scanf("%d",&a);
while(b<=a){
if(a%b==0){
printf("%d¥n",b);
b=b+1;
}
else{
b=b+1;
}
}
return 0;
}

となりました。
「Lisp脳」という言葉を使ったのは
偉大なLispHackerの皆さんは意外なそして美しいコードで
いつも解決しているので、何か簡潔な方法が有るのではと思い使いました。

853 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:44:36 ]
>>852
それは「早すぎる最適化」かもしれない
より良い方法を探すのは、必要に迫られてからでよい
それに、探し出すよりも偶然見つかることのほうが多い

854 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 09:41:37 ]
(defun yakusuu (n)
  (let ((head '()) (tail '()))
    (loop for i from 1 to (sqrt n)
          if (zerop (mod n i)) do
      (push i head)
      (push (/ n i) tail))
    (nreconc (if (= (car head) (car tail)) (cdr head) head)
             tail)))

855 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:16:09 ]
mod関数はCommonLispでも使えるんですね!!
余りを出す関数があると自力でも出来そうです

856 名前:855 mailto:sage [2008/06/10(火) 17:35:22 ]
できました
皆さん本当にありがとうございました!!

(defun numlist (x)
(let ((nlist '()) (i 1))
(loop (if (> i x) (return (reverse nlist))
(if (= (mod x i) 0)
(progn (push i nlist) (incf i 1))
(incf i 1))))))

857 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:15:28 ]
>>856
よかったな。これからもcommon lispをかわいがってやってください。
甘えすぎは非難の元だけど、分からなかったらいつでもおいでね。



858 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:30:08 ]
>>856-857
名作みたいな展開。

859 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 07:32:31 ]
WindowsでCLISPをやりたいと思って、
EclipseでCUSPをいれてちょこちょことやってるんだけど、
GUIとか、もうちょっとDLLを呼び出して、DirectXを操作とかとなると大変?
GUIだとなんか幾つかそれっぽいのが見つかるんだけど(MacOSXとかLinux・Unixが目立つが)
DLLを呼び出すのは無理??

860 名前:入ってしまえば天国なんだね…。 mailto:sage [2008/06/11(水) 11:01:38 ]
LISPに最初から挫折しそうになって、あちこち見ています。

使用者例が少なすぎて発想パターンを断言できないけど、
思考‐発想タイミングから言えば基本的に敷居「だけ」が
高い言語のようだし、初心者を甘やかしても良さそう。

ところで、この言語で言えば印欧語族のロシア語みたいな
性格を見て今、ぐぐってみたんだが…ちょw大当たりww
これは…すごいのはキャラが立ってるLISPだなwww

これが、印欧語族の中では英語的なC言語系だと…
ぐぐってみた…ごめん、もう何も言う事ないwwww
(英語は「敬語」を始め、高度習得が困難です。)

対照的すぐる…(もうちょいがんばれば、あるいは…?

861 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:15:00 ]
独り言はチラシの裏かnotepad.exeに書けよ。

862 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:17:59 ]
というかどう見てもbotです
本当にありがとうございました

863 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:37:43 ]
英語とかロシア語に例えるから挫折しそうになるんじゃないのかなw

864 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:17:05 ]
>>859
cffiではdllをよべるみたいだが、詳しくはonjoさんところみてくれ。
lispuser.net/memo/lisp/2007-08-08-23-53.html

865 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:50:56 ]
Lispは素晴らしい言語だと思うのですが
Lispが生き残ってるのはEmacsのおかげ
実用には耐えないが一部ハッカーの趣味で使われている
など否定的な意見のみが見られてイマイチ本気になれません
Lispで作られたアプリケーションを教えていただけないでしょうか

866 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:04:59 ]
無理に使う必要はないよ。
アプリは↓この辺ね。
wiki.alu.org/Industry_Application

それから独断で単純に割り切って無視しようとするのは、
プログラマとしてはそんな性格だよ。
よいところはどんどん吸収するようにしないと頭が固くなる。

867 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:19:56 ]
>>865
emacs



868 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:38:58 ]
>>866
ありがとうございます。
自分としては気に入っているのですが
周りがそんな事をいってくるので
ちなみにLispが向いている方面を教えてください

869 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:56:06 ]
ご自分の発言を良くお読み頂き、
用法・用量を守って、正しくご使用下さい。

870 名前:865 mailto:sage [2008/06/11(水) 18:19:03 ]
>>869
>Lispは素晴らしい言語だと思うのですが
これが僕の意見
>Lispが生き残ってるのはEmacsのおかげ
>実用には耐えないが一部ハッカーの趣味で使われている
これが周りの意見
>イマイチ本気になれません
Lispいいよねって周りにいうと
「やめとけよ役に立たない」とかいわれるので・・・

871 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:27:46 ]
>>868
お前の人生は何に向いてますか?

>>870
Lispに向いているものをやるもんじゃなくて
解きたい問題をLispで解くもんだ。
フレームワークについての話ならともかく
汎用言語はみんなそんなもんだ。

おまえの人生や周りの事情なんか知らん。

872 名前:865 mailto:sage [2008/06/11(水) 18:33:31 ]
>>871
ありがとうございます。
たとえば望んでいたreplyはLispでMacOSXで動作するGUI動画再生ソフトは
作りづらいとおもうのですが
そんな感じでどちらかというとこんな感じのを作るときには
苦労するよというようなものだったのです
すいませんでした

873 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:38:08 ]
自分で良い物を判断できないってのは、現代の病なのか?

874 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:51:39 ]
>>872
>MacOSXで動作するGUI

ここ何か意味あるの?
Mac OS X 上の Lisp 環境は他のプラットフォームと遜色ないし、
Cocoa を呼び出すのも他の言語に比べて難しいとは思わないけど。

875 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:16:43 ]
ぅぁ…半分寝てた時の文だw
ときどきイルカ状態になるんだ…orz
(特定能力だけ寝てる。脳内血行が偏る珍体質。
 血流検査結果見たら昔の級友は爆笑&納得)
吊って来る… ああ、LISPって論理綺麗だな…

876 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:33:21 ]
病院行け。

877 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:44:20 ]
自分が良いと思っても周りがそうでないならばそれに迎合してしまうおれはチキンorz



878 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:47:34 ]
>ぅぁ…半分寝てた時の文だw
責任転嫁がお上手ですね。
その調子で残りの人生も済むといいね。


879 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:54:32 ]
>>872
mcl系をしらべたらいい。最近フリーになったし。また、
closure cl(旧openMCL)はMACのGUIに合わせてるよ。

880 名前:859 [・∀・] mailto:sage [2008/06/11(水) 20:05:25 ]
>>864さん ありがとうございました。
これから、ちょっとづつ弄くって勉強してみます。

881 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:12:00 ]
>>875
pc11.2ch.net/test/read.cgi/tech/1118944895/662-666

眠い時に書きまくるなよ。



882 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:47:51 ]
>>875
そのレスも半分寝てるようだな

883 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:13:57 ]
>>875
その特異能力を生かして、普通のやつらの斜め上を行ってください。
きみならできる。

884 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:31:41 ]
>>883
ナナメかよ!


885 名前:865 mailto:sage [2008/06/11(水) 23:15:16 ]
>876-884
なんだか皆さんの雰囲気をみだしてしまったようですいません
なんだか気になるので一応かいておきますが>>865>>875ですよ

886 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:14:13 ]
www.bk1.jp/product/02997001

Practical Common Lispの日本語版がとうとうでるみたいだね。原著の
評判はかなりいいので楽しみですね。
今は洋書の値段も上昇ぎみだって時だから、5000円って高価だけど
和書のほうが易くすみそうですね。
個人的には原著を持ってるのでかわないけど、訳が素晴らしければ
おすすめできますよ。でもね。なまえをみてonjoさん(lispuse.netの中
の人)でしょ。それなら予約しても大丈夫だと思う。

887 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:17:02 ]
訳者も出版社も勇気あるなあ
モニタに向かってPDFで読むの好きじゃないから出たら買わせてもらうよ



888 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:12:11 ]
訳書のタイトルは『実用Common Lisp』になるのかな、と思ってたけど、違ってたか。

889 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:23:41 ]
表紙が心配だな

890 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:31:58 ]
まだ翻訳作業中?らしいんだが来月ってマジか?

891 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:43:13 ]
Schemeと違って教科書採用もあてにできないし、数がでないから高いんだろうな…。


892 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:49:45 ]
サイズは書いてないけど、原書の太さを考えるとそこそこの太さになるんじゃないか?

893 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:45:05 ]
原書が昨日届いたばかりだ。

894 名前:865 mailto:sage [2008/06/13(金) 20:01:45 ]
CommonLispで使用できるライブラリはどこで確認できるのでしょうか

895 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:25:20 ]
aproposとかdescribeの事?
それともHyperspecの方?
プロダクト探すんだったらclikiとか?



896 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:58:15 ]
>>895
回答ありがとうございます。
現状では関数を羽で作っているだけなので
これからCommonLispで本格的にアプリケーションを作るにあたり
利用できるライブラリは利用する方が便利ですし、
ライブラリのソースコードをみて学習することで自分の学習にもなりますので
下さったページで学んでみたいと思います。
ありがとうございました。

897 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:17:23 ]
「実践Common Lisp」の出版日は7月何日なんだろう?



898 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:25:52 ]
timeマクロで,関数単位でベンチが取れますが.
値はprintで表示されてしまいますよね.
これをプログラムの中に取り込んで加工したいのですが,その場合
どうすればいいのでしょうか?

899 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:38:53 ]
printを再定義すればおk

900 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:14:40 ]
*standard-output*に何か別のストリームつっこんで取り出しちゃえば?



901 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 07:19:49 ]
time の結果なら
(with-output-to-string (*trace-output*) (time ...))
print した値なら
(with-output-to-string (*standard-output*) (time ...))
でどうだろう。


902 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:01:53 ]
マクロで(newaddres x y z)と入力すると
(setf (get 'x 'y) 'z)と属性リストに代入することができるようにする
マクロはどのように実現すれば良いのでしょうか

903 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:24:32 ]
(defmacro newaddres (x y z) `(setf (get ',x ',y) ',z))
だが、本当にあなたがやりたい事はマクロが必要なのかな?
(defun f (x y z) (setf (get x y) z))
でもいいんじゃないの?

904 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:11:17 ]
>>903
>(defmacro newaddres (x y z) `(setf (get ',x ',y) ',z))
ありがとうございます。
',の部分がわからなかったので助かりました。
>(defun newaddres (name title contents) (setf (get name title) contents))
としたのですが
定義した後(newaddres tanaka live yokohama)とするとTANAKA has no value と言うエラーが出てしまいます。

905 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:23:30 ]
それだと、tanakaというシンボルを評価した結果 == 未定義な変数TANKAを参照しちゃう。評価を止めるには、'クォートをつける。
(newaddres 'tanaka 'live 'yokohama)
クォートするのが面倒だって?だが、評価を ' で ON/OFF できるっつーことはだ、↓のようにできるってこと。
(setf yokohama-list '(tanaka yamada sato steve))
(dolist (who yokohama-list)
(newaddress who 'live 'yokohama))
そもそもシンボル?評価?意味不明というならまた別途説明するよ。

906 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:51:27 ]
いや、結構です。

907 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:10:49 ]
>>906
やめて下さいよ
違う人がレスするのは



908 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:13:59 ]
そういう用途にシンボル使う時は、印字表現に注意。特に空白。

909 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:31:41 ]
scをみたけど、
巷にはcでlispインタプリタを作ってみたって人は多い。逆に
lispでcインタプリタを作ってみたという人はきいたことがないな。
作る必要もないものね。

910 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:58:18 ]
てか不可能。

911 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:00:45 ]
cでcインタプリタは昔Cマガで見たな。
c++ならまだしもcのインタプリタなんて教育用途でも微妙だと思ったが。

912 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:32:10 ]
>>910
理由は?

# 「性能とかの実用性は度外視して」が前提だが。

913 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:40:25 ]
Cインタプリタくらいあるだろ
ttp://wiki.osdev.info/?C%2F%A5%A4%A5%F3%A5%BF%A5%D7%A5%EA%A5%BF

914 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:59:40 ]
2進数を10進数に変換する関数なのですが
(defun two2ten (x)
(let ((n 0) (goukei '()))
(loop (if (< (1- (length x)) n) (return (lsadd goukei))
(progn (push (lsadd (mapcar #'(lambda (a) (* a (expt 2 n))) x)) goukei) (1+ n))))))

と言う関数がどこかが終わらないのか15秒ほど待ってみても答えが出ません。
何処に原因が有るのかおしえていただけませんでしょうか?

lsadd:与えられたリストの全要素の合計を数で返す関数
自作ですがこれは確実に動作します。
xはリスト形式で式に与えています。(1 0 0 1 1 0)の様な形式です。



915 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:41:06 ]
>>914
下を見れば分かるかな。その変数 n を出力してみるといいよ。
1+ だけじゃ値は増えてないから。

cl-user(12): (setq x 10)
10
cl-user(13): (1+ x)
11
cl-user(14): x
10


916 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:59:58 ]
>>715
ありがとうございます。
忘れてしまっていました。
ありがとうございます。


917 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:21:57 ]
忘れるなよ。



918 名前:デフォルトの名無しさん [2008/06/21(土) 07:42:57 ]
LispでDLLを作って他のプログラムから呼び出すことはできますか?

919 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 08:10:47 ]
LispWorks, ECL はできるよ。CLISP, SBCL はできない。他の処理系はしらない。

920 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:38:23 ]
CommonLispのメーリングリストを開設しようと思うのですが
Yahooの提供サービスで良いのでしょうか
YahooIDをお持ちでない先輩がいらっしゃるといけないので

921 名前:920 mailto:sage [2008/06/21(土) 19:43:34 ]
GoogleMLは広告が入らないそうなのでこちらも良さそうなのですが
これについても上と同様の質問についてお答え願います。







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

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

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