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


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

【入門】CommonLisp【質問よろず】



1 名前:デフォルトの名無しさん mailto:sage [04/11/25 21:48:56]
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

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

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

609 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 20:16:30 ]
(cdr (assoc 'res `((res . ,a))))


610 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 20:29:24 ]
そんな説明なしで得意げに書かれてもな・・

611 名前:& ◆6g4XpN.URU [2005/10/01(土) 20:35:27 ]
>607

どうもありがとう。
ちなみにiterって初めてみるんだけど、どういう関数なの?

612 名前:608 mailto:sage [2005/10/01(土) 20:53:15 ]
>>609
ありがとうございます。backquoteを使ってなんとかするということですね。
確かにまだよくわからないですが勉強します。

613 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 20:57:32 ]
>>611
labelsの行をじっと見つめてみろ。

614 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 23:13:06 ]
>>612
quoteしたら評価されないって言うことです。
quoteしないようにこんな感じで書けばOK

(setq a t)
(cdr (assoc 'res (list (cons 'res a))))

いちいちこう書くのは面倒だからbackquote構文が用意されてる
って感じかな。

615 名前:デフォルトの名無しさん [2005/10/01(土) 23:15:33 ]
言っとくけど、backquoteもマクロなんだぜ?
マクロって偉大だよなあ・・・

616 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 04:39:29 ]
>>606
宿題だとすると labels の内部関数はつかっちゃだめかも?ということで
親切にも別解だっ.

;; 再帰関数一つ
(defun plus-minus (lst &optional plus minus &aux (x (car lst)) (xs (cdr lst)))
(cond ((null x)
(values plus minus))
((>= x 0)
(plus-minus xs (cons x plus) minus))
(t
(plus-minus xs plus (cons x minus)))))

;; メソッド一つ
(defmethod plus-minus-2 ((lst null) &optional plus minus)
(values plus minus))
(defmethod plus-minus-2 ((lst cons) &optional plus minus)
(if (>= (car lst) 0)
(plus-minus-2 (cdr lst) (cons (car lst) plus) minus)
(plus-minus-2 (cdr lst) plus (cons (car lst) minus))))


617 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 09:38:28 ]
(defun partition (test lis)
(labels ((recur (lis in out)
(cond ((null lis) (values (nreverse in) (nreverse out)))
((funcall test (car lis))
(recur (cdr lis) (cons (car lis) in) out))
(t
(recur (cdr lis) in (cons (car lis) out))))))
(recur lis '() '())))

CL-USER> (partition #'(lambda (x) (>= x 0)) (list 1 -3 0 -2 9 -8))
(1 0 9)
(-3 -2 -8)




618 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 10:59:40 ]
(defun partition (test list)
(let ((in (cons nil nil)) (out (cons nil nil)))
(let ((i-tail in) (o-tail out))
(dolist (x list (values (cdr in) (cdr out)))
(if (funcall test x)
(setf i-tail (setf (cdr i-tail) (cons x nil)))
(setf o-tail (setf (cdr o-tail) (cons x nil))))))))

619 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 11:40:15 ]
(defun partition (pred lis)
(do ((lis lis (cdr lis))
(in '())
(out '()))
((null lis) (values (nreverse in) (nreverse out)))
(if (funcall pred (car lis))
(push (car lis) in)
(push (car lis) out))))


620 名前:おしえて厨 [2005/10/02(日) 23:47:39 ]
clispをwinで使ってるんだけど、lispでウィンドウやダイアログボックスを
だすようなGUI作ることってできないの?できるとしたら
そういう情報はどこにある?

621 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 00:01:59 ]
>>620
例えば www.wxcl-project.org/

622 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 01:27:27 ]
できるよ.(621 は試したことないの別のネタで)
自分で Windows の API を呼べばいい.

A) FFI で必要な API をラップする (hocwp.free.fr/ah2cl/ とか)
B) Lisp 向けの API を実装したライブラリを作る

ただし,どっちもある程度 C の知識がないと難しいかもね.

Corman Lisp とか AllegroCL や LispWorks といった処理系を使う手もある.
AllegroCL や LispWorks はどっちも GUI ライブラリを持ってるよ.

623 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 16:43:37 ]
CommonLispにはpartitionがなかったのか…

624 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 17:56:31 ]
R5RS には remove-if すらないけどね

625 名前:デフォルトの名無しさん [2005/10/05(水) 15:05:45 ]
質問です。
(my-reverse '(1 (2 3) (4 (5 6))))
を与えたら(((6 5) 4) (3 2) 1) と、
中身が全て反転するような関数my-reverseを定義するやり方を教えてください。
お願いします。

626 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 15:14:34 ]
>>625
>>513-525

627 名前:デフォルトの名無しさん [2005/10/05(水) 17:33:39 ]
>>626
すいません。>>513-525を読んでもわかりませんでした。。



628 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 18:07:07 ]
(defun my-reverse (list)
(let ((result '()))
(dolist (x list result)
(if (consp x)
(push (my-reverse x) result)
(push x result)))))

629 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 19:14:32 ]
>>628
ありがとうございます!!

630 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 19:43:33 ]
>>525

631 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 20:30:40 ]
相変わらずレベル低いよな
おまえら普段何してんの?

632 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 20:35:49 ]
みんな処理系は何使ってんの?

633 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 23:10:51 ]
Gaucheでネットワークプログラミング

634 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 01:30:05 ]
CLISP - 日常的な小物スクリプト書き
SBCL - CLISP では力不足な計算用とかスレッド使いたいときとか
CMUCL - 最近使ってない…互換性検証用か


635 名前:631 mailto:sage [2005/10/06(木) 01:34:37 ]
おまえらレベル低すぎ
俺の使っている処理系を教えてやるから勉強汁
Ruby 1.8.3
ユーザビリティの低いもの使ってんなよ


636 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 01:51:04 ]
>>634
SBCLってCMUCLよりデバッグやりにくくない?

637 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 02:14:31 ]
スレッドまわり以外は特にそんな事おもわないけど?
どのへんがやりにくいとおもう?



638 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 10:11:25 ]
Windowsのアプリに組み込めるLisp、Schemeでいいの無いですかね?

639 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 14:34:43 ]
ないから俺は自作したが。

640 名前:初心者 [2005/10/09(日) 00:25:24 ]
(defun plus-minus (lst &optional plus minus &aux (x (first lst)) (xs (rest lst)))
(cond ((null x)
(values plus minus))
((>= x 0)
(print xs)
(plus-minus xs (cons x plus) minus))
(t
(plus-minus xs plus (cons x minus)))))


このコードのxやxsって再帰のたびに更新されていくけど、a


(defun test (lis &aux (a (first lis)) (b (rest lis)))
(if (not (null (first lis)))
(print b)(test b)))

これのaやbは再帰しても更新されないよね・・・違いはなんなの?
再帰後にもずっと同じ値がはいったままだったり、再帰後には再帰後の
更新された値が入ったりするその違いって?

641 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 01:25:18 ]
(lambda (x y &aux (a form1) (b form2)) ...) は
(lambda (x y) (let* ((a form1) (b form2)) ...)) と同じ。
後半で更新されてないように見えるとしたら、それはちゃんと再帰
してないから。

642 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 08:45:59 ]
>>640
↓こんな動きになってるのは理解できてるの?
CL-USER> (PLUS-MINUS '(1 -3 2))
0: (PLUS-MINUS (1 -3 2))
x: 1 xs: (-3 2)
1: (PLUS-MINUS (-3 2) (1) NIL)
x: -3 xs: (2)
2: (PLUS-MINUS (2) (1) (-3))
x: 2 xs: ()
3: (PLUS-MINUS NIL (2 1) (-3))
x: () xs: ()
3: PLUS-MINUS returned (2 1) (-3)
2: PLUS-MINUS returned (2 1) (-3)
1: PLUS-MINUS returned (2 1) (-3)
0: PLUS-MINUS returned (2 1) (-3)

CL-USER> (TEST '(NIL NIL 2))
0: (TEST (NIL NIL 2))
a: NIL b: (NIL 2)
1: (TEST (NIL 2))
a: NIL b: (2)
2: (TEST (2))
a: 2 b: ()
NIL
2: TEST returned NIL
1: TEST returned NIL
0: TEST returned NIL


643 名前:& ◆RdmUjfVKqQ [2005/10/09(日) 10:34:53 ]
>641, 642

そういう動きになっててほしいけど、
printから出てくる値をみてる感じだと、
2番目のコードだと再帰前のリストのrestとったものがでてるようにみえるんだよ〜

644 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 10:54:00 ]
間違いなくコードが変だからどういう動作を意図してるのか言ってみ。

645 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 12:53:13 ]
642 は SBCL でのトレース結果だよ.CLISP でも同じだた.
意図したように動いているみたいなんで,
640 が動作させた本当のコードと入力値を述べたまえ.


646 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 14:08:21 ]
>>640が何を訊きたいのか判らんが、こう書きたかったんじゃないのか?

(defun test (lis &aux (a (first lis)) (b (rest lis)))
(if (not (null (first lis)))
(progn (print b)(test b))))

647 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 14:40:00 ]
>>646 それでも条件が逆になるけど再帰時にちゃんと lis はあたらしくなるぞ?
思うに,if の条件が意図したやつと逆になっているので期待どうりしていなかっ
たとかそんな事じゃないかな.どーゆう条件でどう動いてほしかったのかを日本語
で説明してもらうのがはやいと思う.




648 名前:おすえて [2005/10/09(日) 20:21:16 ]
(defun test (lis &aux (a (first lis)) (b (rest lis)))
(if (not (null (first lis)))
(print b)(test b)))

これが、(test '(1 2 3 4 5))とやったときに
例えば
(2 3 4 5)
(3 4 5)
(4 5)
(5)
みたいにならないのは、なぜ?

649 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 20:29:11 ]
>>648
なぜそうなると思った?

650 名前:& ◆eDpN.64OYw [2005/10/09(日) 20:48:49 ]
(defun plus-minus (lst &optional plus minus &aux (x (first lst)) (xs (rest lst)))
(cond ((null x)
(values plus minus))
((>= x 0)
(print xs)
(plus-minus xs (cons x plus) minus))
(t
(plus-minus xs plus (cons x minus)))))


↑これだと再帰のたびにxsが変わっていくから、468でもそうだろうと
思ったんだけど

651 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 21:00:36 ]
君のやりたいことは、
(defun test (lis &aux (a (first lis)) (b (rest lis)))
 (cond ((not (null b))
    (print b)
    (test b))))
ってな感じかな。if の定義を再勉強!

652 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 21:04:56 ]
やっぱりな.再帰とか &aux 以前に 2 つ間違いをおかしている.
1. if の構文を間違えている (おそらく)
2. 条件の中身も間違えている
それって,「条件を満しているなら print で b を表示したあと再帰する」って
処理が希望のようだが,書いたコードが,「もしリストの先頭要素が nil 以外なら表示する.そうでないなら再帰する」
なので,表示は一回しかされない.
(defun test (lst &aux (a (first lst)) (b (rest lst)))
(if a
(progn
(print b)
(test b))))
もしくは
(defun test (lst &aux (a (first lst)) (b (rest lst)))
(when a
(print b)
(test b)))
だな.手元の参考書を if の説明をちゃんと読みなおしたほうがいい.

653 名前:& ◆QWv3R1XL8M [2005/10/09(日) 21:14:39 ]
>書いたコードが,「もしリストの先頭要素が nil 以外なら表示する.そうでないなら再帰する」
なので,表示は一回しかされない.

なんで??
再帰二回目だとrestとった値がなんでnilになる???2とか3じゃないの??
ifがどうとか言う以前によくわからんのですが

654 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 21:23:19 ]
再帰しないんだから二回目もクソもないんだよ。
if の説明を確認しろっていわれてんだから素直にそうしな。

655 名前:& ◆QWv3R1XL8M [2005/10/09(日) 21:31:58 ]
なるほど、わかりました。ありがとうございました。
で、

(defun test (lis &aux (a (first lis)) (b (rest lis)))
 (cond ((not (null b))
    (print b)
    (test b))))

↑これ実行できないんですけどこれは何故?

656 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 21:39:12 ]
全角空白までコピペしちゃっているからだろう.
大した手間でもないだろうから手で入力したまえ.

657 名前:おしえて厨 [2005/10/10(月) 19:51:08 ]
lispのsort関数を使わないで、
オリジナルの数字リストの昇順または降順ソートプログラムを
書いてみてください。
できれば初心者でもアルゴリズムが分かりやすいような書き方でおながい



658 名前:デフォルトの名無しさん mailto:sage [2005/10/10(月) 20:35:14 ]
>>657
やだ

659 名前:デフォルトの名無しさん [2005/10/10(月) 20:50:39 ]
xのy乗を求める問題なんだけど、どこか変なところある?
include <stdio.h>
#include <math.h>


main()
{
double x,y,z;

printf("x =");
scanf("%lf",&x);
printf("y =");
scanf("%lf",&y);

z = pow(x ,y);
printf("x\ty = %lf", z);
}


660 名前:デフォルトの名無しさん mailto:sage [2005/10/10(月) 20:52:12 ]
頭が変かもしれんな

661 名前:デフォルトの名無しさん mailto:sage [2005/10/10(月) 21:05:09 ]
書き込むスレの選択が変

662 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 04:45:21 ]
>>620
面白い物見つけた。

ttp://www.geocities.jp/shido_takafumi/lisp/macro3.html

Socket 経由で GUI を作ってるっぽいけど、Windows Native でも
似た様なのがあるんじゃないかな。Mac だとこういうのがある。

www.bluem.net/downloads/pashua_en/

663 名前:おしえて厨 [2005/10/11(火) 08:49:23 ]
(defun small (lis)
(cond ((null (rest lis))
lis)
((< (first lis) (first (rest lis)))
(remove (first lis) lis)
(remove (first (rest lis)))
(cons (first lis) lis)
(cons (first (rest lis) lis))
(small lis)
(t (small (rest lis))))))

↑バブルソートしたくて書いてみた。駄目だった。どこが駄目?

664 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 09:41:52 ]
バブルソートを使うところが駄目。

665 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 10:13:57 ]
(defun merge-sort (lst)
(let ((len (length lst)))
(cond ((< len 2) lst)
((= len 2)
(let ((x (car lst))
(y (cadr lst)))
(if (< x y) (list x y) (list y x))))
(t
(do ((x (merge-sort (butlast lst (ash len -1))))
(y (merge-sort (last lst (ash len -1))))
(r '()))
((or (null x) (null y))
(nconc (nreverse r) x y))
(push (if (< (car x) (car y)) (pop x) (pop y)) r))))))

666 名前:おしえて厨 [2005/10/11(火) 17:25:50 ]
(remove 'a 'a)みたいに一文字だとremoveできないじゃん。
どうやって一文字しかないのを消すの?
あと、(a b c (a ((b))))みたいになってるときのbだけを消して、
(a b c (a (( ))))みたいにする方法って、あるの?

667 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 18:03:53 ]
((lambda (x y)
((lambda (f) (funcall f f y))
(lambda (f y) (typecase y
(list (remove x (mapcar (lambda (y) (funcall f f y)) y)))
(t y)))))
'b '(a b c (a ((b)))))
=> (A C (A (NIL)))



668 名前:おしえて厨 [2005/10/11(火) 19:06:51 ]
関数が定義されていません: typecase

669 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 19:36:09 ]
そりゃ Common Lisp じゃないな。スレ違いだからもうこのスレに来ないように。

670 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 19:37:20 ]
>>668
処理系がまがい物だな

671 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 20:10:17 ]
xyzzy だな

672 名前:おしえて厨 [2005/10/11(火) 20:43:06 ]
xyzzyなんだけど、typecaseつかわずにできないの???

673 名前:デフォルトの名無しさん mailto:sage [2005/10/11(火) 21:12:30 ]
>>672
xyzzy使いのよしみで回答しておくけど、
CommonLisp を勉強するのに xyzzy を処理系として使っちゃダメ。
xyzzy でマクロを書くための勉強ならここで質問するのは間違い。

((lambda (x y)
((lambda (f) (funcall f f y))
(lambda (f y) (if (listp y)
(remove x (mapcar (lambda (y) (funcall f f y)) y))
y))))
'b '(a b c (a ((b)))))
=>(a c (a (nil)))

674 名前:おしえて厨 [2005/10/11(火) 21:57:05 ]
(defun del-atom (n lis)
(cond ((null lis)
nil)
((atom (first lis))
(cond ((eql n (first lis))
(del-atom n (rest lis)))
(t (cons (first lis) (del-atom n (rest lis))))))
((listp (first lis))
(cond ((listp (first (first (first lis))))
(cond ((eql n (first (first (first lis)))))
(del-atom n (rest lis)))
(t (cons (first lis) (del-atom n (rest lis))))))
(cond ((listp n (first (first lis)))
(cond ((eql n (first (first lis)))
(del-atom n (rest lis))))
(t (cons (first lis) (del-atom n (rest lis)))))))))



↑自分でもやってみようとしたら、こんなんなっちゃったよ〜〜〜〜
どこが駄目???

675 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 00:50:11 ]
((listp (first lis))
(cons (del-atom n (first lis)) (del-atom n (rest lis))))

676 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 00:51:18 ]
first とか rest って使われてるんだなぁとそちらのほうに感動してたりする俺。

677 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 17:12:58 ]
>>676
それはね、「xyzzy Lisp Programming」のページで、first と rest を推奨す
る、と書かれているからだよ。
www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp02.html




678 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 17:23:12 ]
>>677
「first と rest を使うことが推奨されています」なんて書いてるが、「誰が」推奨
しているのか不明だな。少なくとも CLtL2 にも ANSI にもそんな記述は見あた
らないが。(もし見落としてたら教えてくれ)

679 名前:おしえて厨 [2005/10/12(水) 17:33:11 ]
P.H.ウィンストンという人が書いた緑の本に推奨されていた。
まあそれはさておき675さんの指摘がよくわかりません。
どこを直せばいいの??

680 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 18:08:58 ]
>>679
> どこを直せばいいの??
頭の中身。
お前さんは九九も覚えてないのに数学の問題を見てわからないとわめいてるの
と同じなので、677 が紹介してるサイトの Common Lisp 入門を全部読んで
理解してからもう一度いらっしゃい。

681 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 03:51:47 ]
ウィンストンって培風館の奴か?

car,cdrの方が好き
ハード寄りで

682 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 11:14:21 ]
>>681
いつの時代の方ですか?

683 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 12:23:03 ]
平成17年

684 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 12:27:20 ]
漏れも car cdr のほうが好きだが、さすがに IBM 7090 (だっけか)は使ったことない。

685 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 14:01:44 ]
8月からLisp触り始めた超初心者だけど
car、cdrのほうが好きだな。

686 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 17:17:44 ]
>>679,681
俺もその本持ってる。そのせいか first、rest 派。
自分では使わないから、car や cdr ならともかく caddr ぐらいでもわけわからん。

687 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 17:23:31 ]
>>686
caddr と third とどっちがわかりやすいかだわな。
個人的には視覚的にわかる caddr のほうが好き。



688 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 22:48:16 ]
nthは邪道ですか、そうですか

いや、俺も使わないけど

689 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 14:56:32 ]
(nth 3 L) ≡ (fourth L) なのがなんとも

690 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 15:05:25 ]
>>689
nth は aref とともに elt の特別版ということだな。
むしろ、この3つの中で nth だけ引数順が違うのが気になる。

691 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 18:18:47 ]
ルプラカ ルプラクドゥ
パンプルピンプルパムポップン
カッドゥルゥァー
クックドゥー

692 名前:デフォルトの名無しさん mailto:sage [2005/10/18(火) 22:37:29 ]
オブラディ オブラダ
(・∀・)スンスンスーン

693 名前:デフォルトの名無しさん [2005/10/19(水) 19:16:22 ]
;;ある基点となるフォルダより下のフォルダのフルパスを全て取得するには再帰でどう書けばいいですか?

694 名前:デフォルトの名無しさん mailto:sage [2005/10/19(水) 20:40:03 ]
実装依存

695 名前:デフォルトの名無しさん [2005/10/19(水) 20:42:51 ]
xyzzyでは??

696 名前:デフォルトの名無しさん mailto:sage [2005/10/19(水) 20:45:20 ]
板違い

697 名前:デフォルトの名無しさん mailto:sage [2005/10/19(水) 20:55:26 ]
(directory PATHNAME) あたりで調べると良いかも。



698 名前:デフォルトの名無しさん mailto:sage [2005/10/21(金) 00:53:04 ]
ECL使って実現されているプロジェクトでそこそこの規模のやつって誰か知りません?
C/C++とCommon Lispを混ぜた開発したいんだけども、実際の使われ方を見て勉強した方が
理解が早いかなと思って。
それともUFFI使うのが定説ですかね。

699 名前:デフォルトの名無しさん mailto:sage [2005/10/21(金) 01:37:09 ]
どうなんだろう.最近は CFFI とかも出てきてるしねぇ.
まず Lisp 側のインターフェースを決めて,それが十分に抽象化できていれば
その下は UFFI だろうが処理系の FFI だろうがたぶん問題ない.

ECL はあんまり触ったことないので本題には答えられない.スマソ.
キーワードハイライトつきのエディタ作ったとか Planet Lisp に出てたような.

700 名前:698 mailto:sage [2005/10/21(金) 01:58:32 ]
>> 699
ありがと。Planet Lisp行ってきます。
スレ違いって怒られるかも知れないけど、Gaucheとかだと結構事情が違ったりする?
確か開発目標に他の言語と仲良くするってのがあったような。でも最終的には
ネイティブコードで走らせたいんだよなぁ・・・

701 名前:デフォルトの名無しさん mailto:sage [2005/10/21(金) 02:08:50 ]
ネイティブコードってことは性能が欲しいの?
それでフリーなのがいいならCMUCLやSBCLがいいんじゃないかな。
Cの呼び出しやCからのコールバックもそれほど面倒じゃないし。

702 名前:698 mailto:sage [2005/10/21(金) 02:45:04 ]
Planet Lisp行ってきました。
簡単なアナウンスだけ出ててsourceforgeに誘導されてみたらスクリーンショットも
公開されてました。CVS HEADにコードが入っているみたいなのでこれから調査します。

いまはプロトタイピングの段階なので実現可能性の検証が主体です。アルゴリズムの設計と
検証はLispであ〜でもないこ〜でもないやりながら考えた方がお手軽なのですが
プロジェクトの他のメンバがC/C++でコード書いてるので現状は

・Lispでアルゴリズム練る → C++で等価なコードを書いてリポジトリにチェックイン

してます。二度手間でアホらしいんですが最初からC++であれこれ書けないんですよ。
C++の汚さに辟易して大分昔に標準化の動向追いかけるのやめていたこともあって。
で、どうせならLispのコードそのままC/C++に埋め込んじゃうことはできないのかな〜と
たくらんでいるところです。


スレ違いになりますが最近STLやらBoostやらLokiやら勉強してみて驚愕しました。
何であんな大変な思いをしてまでC++使うんですかね・・・不思議でたまらん。

703 名前:デフォルトの名無しさん mailto:sage [2005/10/21(金) 02:54:10 ]
>>702
ずいぶんと怪奇なことになってるよね。>C++
でも、すべてインラインに開いちゃうから確かに速い。
そのかわりコードサイズが大爆発。w

704 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 00:24:33 ]
今ポールグラハムのlisp本でお勉強中なのですが、lispでは
soketを開くとかプロセス制御するとか低レイヤな処理をする場合
どーすんのでしょうか。処理系にそうしたライブラリがなかったりする場合は?

705 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 00:34:49 ]
socketです。typoっす。すんません。

706 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 01:12:37 ]
>>704
どうにもなりません。そういうライブラリが存在するか、ネイティブコードを
呼ぶなどの方法でなんとかできる処理系を選びましょう。

707 名前:704 mailto:sage [2005/10/25(火) 01:53:21 ]
>>706
むぅ。そういうもんなんですか。教えて頂いて有難うございます。
そういったことは一旦置いておくとすると、学習向けに
オススメの処理系があればご教授頂けると助かります。
今のところ本読んでるだけなのですが手続き型が染み付いた頭には
関数プログラミングって難しい…。



708 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 02:04:53 ]
>>707
WindowsならCLISP、UNIX系ならSBCLがいいんじゃないかな。
どちらもソケットなどの拡張機能は持っているよ。

709 名前:704 mailto:sage [2005/10/25(火) 02:12:34 ]
>>708
どもです。SBCLっての調べてみます。。






[ 続きを読む ] / [ 携帯版 ]

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

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