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


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

CommonLisp Scheme Part13



1 名前:デフォルトの名無しさん [2005/05/12(木) 21:44:01 ]
過去スレ
Part1: piza2.2ch.net/tech/kako/987/987169286.html
Part2: pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part3: pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part4: pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part5: pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part6: pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part7: pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part8: pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/
Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/
Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/
Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/

関連リンクは>>2-10あたり

72 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:23:16 ]
重要なのは、言語でなくライブラリだよ

73 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:28:59 ]
>>72
だよねー

74 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:42:32 ]
また頭悪そうなのが粘着しはじめたな

75 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:46:28 ]
言語仕様(意味論込)として、scheme 以上にすっきりした言語
ってなにがありんすか?


76 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:48:10 ]
○ransk?

77 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:03:40 ]
アセンブリ

78 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:05:48 ]
万能チューリング機械

79 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:10:23 ]
brainf*ck

80 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:25:38 ]
>>50
>・名前空間
>(せめてパッケージ)はぜひとも導入して欲しい。
>いつまでも大域letで囲むなんて馬鹿げてる。
遅レスすまそ。let使ってパッケージもどきを作る方法があるの?
Schemeだとlet内でdefineしてもグローバルに反映されないから無理だと
思ってたんだけど(Common Lispならできる)。
モジュールじゃおおげさな時に使いたいので教えて。




81 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 07:56:06 ]
横スレだが、わたしゃこうしてる。
(define export:foo #f)
(let () (define foo ...) ... (set! export:foo foo))
(define foo export:foo)

82 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 09:15:39 ]
それならグローバルなハッシュテーブルに詰め込んでおく方が。

パッケージとは別に、CommonLisp風のset!(ローカルでunboundなら
グローバルにbindする)ができたら便利だとは思うが、Schemeじゃ多分無理。

83 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 09:29:09 ]
俺はこうかな
(define foo #f)
(define bar #f)
(let ()
 (define hoge ...)
 (set! foo (lambda (...)...))
 (set! bar (lambda (...)...))
)
でも、最適化が効きにくくて>>81より遅くなりそうだな...(考え中)

>それならグローバルなハッシュテーブルに詰め込んでおく方が。
それってどんなやりかた?

84 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:15:02 ]
えぇー、scm.libとかでやってる方法がデフォルトだと思ってた

85 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:20:08 ]
(make-hash-table xxx-package)

(let (pi 3.141692)
(define hoge ...)
(hash-table-put! xxx-package 'foo (lambda (...) ...))
(hash-table-put! xxx-package 'bar (lambda (...) ...))
)

(define foo (hash-table-get xxx-package 'foo))
(define bar (hash-table-get xxx-package 'bar))

>>83 こんな感じ。実際こうやって使ったことないからちゃんと動くかわからないけど。
>>84 それはパッケージ管理?CommonLisp風のset!の提供の方?

86 名前:84 mailto:sage [2005/05/21(土) 11:40:44 ]
>>85
パケージ管理の話してるんだろ、ここ?

87 名前:84 mailto:sage [2005/05/21(土) 11:57:22 ]
slibの話のつもりだったんだけど・・・あれ?パッケージ管理してねぇや。。。スレ汚しすまそ

88 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:58:31 ]
slibの話のつもりだったんだけど・・・あれ?パッケージ管理してるけど名前空間は分けてないや。。。スレ汚し^2すまそ

89 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:11:23 ]
つまらんことで悩んでないで Common Lisp 使え

90 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:14:26 ]
うぜ



91 名前:83 mailto:sage [2005/05/21(土) 15:17:48 ]
>>85
なるほどそういう使い方があったのか THX!
すると例えば
(define-syntax define-package
 (syntax-rules (export)
  ((_ pkgname (export id ...) body ...)
    (begin (define pkgname (make-hash-table))
     (let ()
      body ...
      (hash-table-put! pkgname 'id id) ...)
     (define id (hash-table-get pkgname 'id)) ...))))
とやって
(define-package foo-package
 (export foo bar)
 (define hoge 9)
 (define foo (lambda (x) (- x hoge)))
 (define bar (lambda (y) (+ y hoge))))
とすれば
hoge => #unbound
(foo 10) => 1
(bar 10) => 19
となるわけか。
実装に依存したくない時はいいかも!


92 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 16:11:17 ]
hash-table自体が実装に依存する罠
まあ後付で作れるけどさ

93 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 03:54:25 ]
すごく遅くてもいいならalist使えばいい。


94 名前:ミミ [2005/05/22(日) 19:28:26 ]
Scheme でクラスを定義する場合、
メンバ変数の命名規則はどうしていますか?

Java や C++ だと m_var とか _var とか var_ とかで
命名すると思いますが、Scheme でアンダースコアは
あまり使われませんよね。

95 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:43:35 ]
>>94
そうでもない。アンダースコアも普通に使うよ。

96 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:55:17 ]
入力したlistを整数倍してlistで返すにはどうすればいいんですか?(list 3 4) → (list 6 8) みたいな感じです。
consでかえるようにならできたんですが。

97 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:56:18 ]
map

98 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:58:57 ]
>>96
(map (lambda (elt) (* elt 2)) (list 3 4))
--> (6 8)
ってことかな?

99 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:59:39 ]
((cut map * 2 <>) '(3 4))
=> (6 8)
cut :: SRFI 26: Notation for Specializing Parameters without Currying


100 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:02:09 ]
(map (lambda (n) (* n 2)) (list 3 4))
LISPなど全く知らない俺が適当に書いてみました



101 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:16:22 ]
(define-syntax m-list
 (syntax-rules ()
  ((_) ())
  ((_ dat ...) (list (* dat 2) ...))))
(m-list 3 4)
--> (6 8)

102 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:23:36 ]
(define-syntax rewrite-list
 (syntax-rules (list)
  ((_ n (list dat ...))
  (list 'list (* dat n) ...))))
(rewrite-list 2 (list 3 4))
--> (list 6 8)

103 名前:ミミ [2005/05/22(日) 23:28:13 ]
>>95
クラスのメンバ変数をアンダースコアで命名していますか?

104 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:36:35 ]
クラスのメンバ変数など存在しない

105 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:46:45 ]
ハイフォンが使えるのにアンダースコア使う理由って何?
と、LISPなど全く知らない俺が適当に聞いてみる

106 名前:ミミ [2005/05/22(日) 23:50:28 ]
>>104
どういうこと?

107 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 00:03:56 ]
>>105
単に単語の区切りの意味でハイフンは使うから区別したいんじゃね?

108 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 00:08:48 ]
>>107
わかるようなわからんような、実例プリーズ

109 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 03:27:32 ]
すみません。scheme というか lisp 初めたばかりなのですが、
list と cons の意味がわかりません。
(cons 1 2) と (list 1 2) はどう違うんでしょうか。
両方とも car と cdr の結果は同じですよね?


110 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 03:36:08 ]
>>109
car は同じだけど、 cdr は違うよ。

(car (cons 1 2))
1
(cdr (cons 1 2))
2

(car (list 1 2))
1
(cdr (list 1 2))
(2)




111 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 04:07:51 ]
はい。
(cdr (list 1 2))
が (2) になるのはどういった理由かわからないのです…


112 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 04:18:46 ]
あぁ、pair と list の項目を読んでみたら、なんとなくわかった気がします。
スレよごし、スミマセン。


113 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 08:34:12 ]
>>112
cons は「core」で、list は「library」みたいな区別をしてみるのもいいかも.
「library」は「core」から導くことができるんだね. 例えば
list は (lambda x x) と等価とかね ( もちろん lambda は「core」).
後になって、define-syntax とかでマクロを組むときに、きっと役に立つよ.

雑談スマソ

114 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 09:25:14 ]
わざわざオレ用語で説明せんでも。


115 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 11:07:33 ]
>>113
lambda は「library」でいいじゃん
(define-syntax λ
(syntax-rules ()
((_ formals body1 body2 ...)
(let-syntax ((dummy (syntax-rules () ((dummy) #f))))
(define (proc . formals)
body1 body2 ...)
proc))))

116 名前:3歳児 mailto:sage [2005/05/23(月) 11:13:33 ]
たんなることばのもんだいだと思いまちた

117 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 17:04:35 ]
>>111
(cadr (list 1 2))が2になる、って言ったら解る?
(car (cdr (list 1 2)))と同じ。

あと、(list 1 2)は(cons 1 (list 2))と同じ

図で描くと解りやすいけど、図入りの本は持ってないの?

118 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 17:11:34 ]
最もプリミティブなのは点対だからね。
(a b c) ってのは (a . (b . (c . ()))) の略だということを思い出そう。

119 名前:3歳児 mailto:sage [2005/05/23(月) 17:15:23 ]
このすれのれべる、がくっとさがりまちたねぇ

120 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 17:28:09 ]
>>114
R5RS読めば?



121 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 18:09:23 ]
R5RSの「primitive」のことを「core」なんて命名してるからオレ言語と
揶揄されてるんじゃないの?

122 名前:Scheme 初心者 mailto:sage [2005/05/23(月) 23:57:52 ]
>>115

define は lambda を使って定義できると思うのですが・・・

123 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 00:08:48 ]
>>122
つか (define (f args...) body...) って (define f (lambda (args...) body...) の省略形だから(ry

124 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 00:21:28 ]
let も lambda で書ける

125 名前:112 mailto:sage [2005/05/24(火) 00:40:23 ]
>>115 >>123

1変数関数の場合で、例えばフィボナッチ数列を
求める関数をdefineを使わないで定義したいときは、

(((lambda (f)
((lambda (p)
(f (lambda (arg) ((p p) arg))))
(lambda (p)
(f (lambda (arg) ((p p) arg))))))
(lambda (fib)
(lambda (n)
(if (<= n 1)
1
(+ (fib (- n 1)) (fib (- n 2)))))))
10)

で定義できるから、lambdaがprimitiveでdefineはlibraryじゃないの?
マジで初心者だから教えてよママン!

126 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 01:53:11 ]
>>125
基本的には正しい。lambdaがあれば変数の束縛もできるからdefineの代用になる。

127 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 02:18:50 ]
トップレベル以外はな

128 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 08:02:54 ]
トップレベルもset!があればR5RS的には○。IEEE的には●でなかったっけ?

129 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 09:21:37 ]
R5RSだと、define で割り当てされてないと set! はエラーじゃなかったっけ

130 名前:?デフォルトの名無しさん mailto:sage [2005/05/24(火) 11:52:15 ]
R5RS 5.2.1 の最後の段落の日本語訳によれば
「Schemeの実装によっては、初期環境として、可能なあらゆる変数がなんらかの場所に束縛されており、そしてその場
所の大多数が未定義値を入れている、という環境を使う。このような実装ではトップ・レベル定義は代入と全く等価である。」
とあるんだけど....
これはそういう実装でもかまわないって意味なのかねぇ?



131 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 11:59:00 ]
そういうこと。


132 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 16:24:30 ]
手元の処理系 (Gauche、Guile、PLT Scheme) では、未定義変数の参照、変更
はいずれもエラーになったな。>>130 からするとエラーにしなくてもかまわない
みたいだけど、そういった処理系ある?

133 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 19:45:26 ]
petite chezではエラーにならないようだ。
SCMもオプションでそうできた記憶があるけど未確認ですまぬ。

134 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 21:25:05 ]
schemeのquasiquote書いてみました。これで合ってます?

(define-syntax qq
 (syntax-rules (quote quasiquote unquote unquote-splicing)
  ((qq x)           (qq "in" 0 x))
  ((qq "in" lv (quote x))   (list 'quote (qq "in" lv x)))
  ((qq "in" lv (quasiquote x)) (list 'quasiquote (qq "in" (1 . lv) x)))
  ((qq "in" 0 (unquote x))   x)
  ((qq "in" (1 . lv) (unquote x))
   (list 'unquote (qq "in" lv x)))
  ((qq "in" 0 (unquote-splicing x))
   x)
  ((qq "in" lv ((unquote-splicing x) . xs))
   (append (qq "in" lv (unquote-splicing x)) (qq "in" lv xs)))
  ((qq "in" lv (x . xs))    (cons (qq "in" lv x) (qq "in" lv xs)))
  ((qq "in" lv #(x ...))    (list->vector (qq "in" lv (x ...))))
  ((qq "in" lv x)       (quote x))))


135 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 00:57:22 ]
LISP の歴史
community.computerhistory.org/scc/projects/LISP/

INTERLISP の絵が可愛い

136 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 04:29:05 ]
>>135
可愛いね。壁紙にしよう。

137 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 09:20:32 ]
すごく2chのAAっぽいんだが。

138 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 09:24:53 ]
>>137
2chのやりすぎ(w

139 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 15:42:08 ]
>>136
壁紙には風太くんの写真だよ。

140 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 01:33:40 ]
やった、LISP をものにしたぞ!



141 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 03:57:12 ]
>>140
悟れた?

142 名前:デフォルトの名無しさん mailto:age [2005/05/30(月) 09:14:27 ]
Windows/VC++版のGauche-0.8.3w-03公開記念age


143 名前:デフォルトの名無しさん [2005/05/30(月) 22:20:33 ]
あはは、やっとWindowsで動かないと糞だってことが透過したか
その調子でCMUCLのWindowsポーティングも頼むよ

144 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:32:25 ]
>>143
取り敢えず、ここら辺りから頑張ってみれ。

www.caddr.com/macho/archives/sbcl-devel/2004-7/3690.html

145 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:36:20 ]
15年位前の記憶だけど、
CMUCLはKCLと違って、
RISC CPU (SPARC)専用にチューニングされてるから
Intelには移植しにくそう・・・つう風評を聞いたな。

146 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:39:08 ]
こっちの方が良かったかな。

ttp://www.dridus.com/~nyef/sbcl-on-win32.png

一年もあれば何とかなるんじゃなかろうか。

147 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:44:37 ]
いまどき、CMUCL移植までして動かすアプリって何なんだろ?
当時は 制約ベースのGUIツールキットとか、音楽関係で動かしたいアプリがあったような記憶があるけど。

148 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:47:00 ]
>>146
もしかして、シグウィン上で動かしているの?
折れ、cygwin嫌いなんだよな。 昔、ノーパソに入れたら恐ろしく遅かったから。。
多分、日本語も今市だし。

149 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 22:48:13 ]
いや、君が嫌いだろうと好きだろうと、俺は別に構わんが。

150 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:06:14 ]
>>145
今でも CMUCL のメインのメンテナは SPARC 使いだね。
メインのプラットフォームは x86 と言って間違いないと思うけど。



151 名前:145 mailto:sage [2005/05/30(月) 23:07:54 ]
>>144
なるほど。
SPARCベッタリのCMUCLとは別に、
移植性の高いCMUCLクローンを
Pythonベースのクロスコンパイラを種に
ブートストラップ方式で作る、つうプロジェクトっすか。

  CMU CL:カーネギー氏とメロン氏が鉄鋼業で貯めたお金で作った大学のCommon Lisp
  SB CL: 例の 鉄でガッポリ儲けた所が作ったのとよく似たCommon Lisp

っすか。なんじゃこのネーミングセンスはw

152 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:14:49 ]
>>150 ・・・今じゃx86で動くんですか。DOS Extender時代(pre Linux時代)とは隔世の感だなぁ

153 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:22:13 ]
ずいぶん前にSchemeのContinuationの実装方法をここで議論した事があったんだけど、
議論と思ってたのは俺だけ、実はお相手は随分なプロヘッショナルな方だったのね。
某所でプロが揃い踏みしてるの見て、ちょっとビビってしまった(いやいや俺もプロだし・・・何のプロだろう?

154 名前:Schemer mailto:sage [2005/05/30(月) 23:22:18 ]
Lisper からみたら Schemer ってどうみえるのでしょうか?
自分の中では、

 Lisp = 松下(統制されている)またはブリーフ(チソポが窮屈)
 Scheme = ホンダ (自由にしてる)またはトランクス(チソポがフリー)

という感じがする。

155 名前:153 mailto:sage [2005/05/30(月) 23:22:52 ]
あらら、一瞬にしてレベルが低下してるし

156 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:31:50 ]
Lisp遣い・・・・・・数式処理や並列計算、専用ハード設計、あと駅スパートシステムとかWebアプリのプロヘッショナル
Scheme遣い・・・実物見た事ないっす。厳選された奇妙な形のブロックでお城を建てる哲学者?

157 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:32:28 ]
>>151
鉄はカーネギーで、メロンは銀行だよ。だからスチール(鉄)バンク(銀行)。
最近は SBCL の方が UNICODE やネイティブスレッドの採用など、CMUCL
よりも使い易くなってると思います。移植性も良いし。

SPARC は tagged arithmetic があるから Lisp コンパイラを作り易いという
話だけど、ユーザーベースから言ったらやっぱり x86 な訳で、開発者にも
Linux 使いが多い感じ。あと、意外にも Mac ユーザが多いっぽいね。

158 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:35:49 ]
>>157
すまそ、Steel Bank Common Lisp Developper MLの一通目を斜め読みするのがやっとで、
バンクをなんとなく無視してますた。

> SPARCは tagged arithmetic
そうそうw 
SUN のSPARC関連論文漁ってると、SPARCは最初からLispのサポートを視野に入れていたとか見た。
・・・Java CPUは一体どうなったんだろう(w

159 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:37:05 ]
>>154
Schemer: "Buddha is small, clean, and serious."
   Lispnik: "Buddha is big, has hairy armpits, and laughs."

Nikodemus 氏のシグニチャだけど、名言だね。

160 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:41:22 ]
>>158
ググると、Lucid Common Lisp の為に用意されたって記述があるけど
真偽の程はどうでしょう。
Lucid の社長さんって Sun に居た気がしたけど、今どうしてるのかな。



161 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 23:53:24 ]
>>159
綺麗でかわいいブッダと、
腋毛ボウボウの豪傑ブッダかよ!

科学では、少ない原則でより多くの事柄を説明できる理論を採用する。
すると、Schemeが示そうとしているScienceは一体なんなんだろう。。。

>>160
Lucid 社長・・・わかんない。名前は聞いた事あるけど。
最近、Lisperの臭いをくんくん嗅ぎ分けながら業界のたくってるんだけど、
Frantz社長の名前くらいしか聞かなかった。あとは元Symbolicsで今は紺猿の人とか。

162 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 00:06:15 ]
閑話休題


163 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 00:42:03 ]
Lucid は今の LispWorks じゃないかな。
以前評価したときは Allegro より高速だった(on x86)けど、日本ではマイナーかな。

164 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 07:51:23 ]
tagged arithmeticって、何?

165 名前:デフォルトの名無しさん [2005/05/31(火) 07:57:43 ]
6月19日-22日に開催されるInternational Lisp Conference 2005のスピーカーリストには、
Richard Gabriel, Sun Labs (Menlo Park, CA)
って書いてある。現在も、Sunにいるらしい。
www.international-lisp-conference.org/speakers.html

166 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 13:01:32 ]
>>164
32bit wordの下位2ビットをタグとして扱うことができる。

167 名前:flatline@Vim%Chalice ◆r6EONKKhcc mailto:sage [2005/05/31(火) 18:24:40 ]
サイト移転しますた
ttp://user.ecc.u-tokyo.ac.jp/~t50473/

168 名前:flatline@Vim%Chalice ◆r6EONKKhcc mailto:sage [2005/05/31(火) 18:24:55 ]
サイト移転しますた
ttp://user.ecc.u-tokyo.ac.jp/~t50473/

169 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 18:38:51 ]
・・・確かに「lispは25歳以下のスポーツ」と呼ばれるだけの事があるなw

170 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 20:01:18 ]
>>169 それはつらいなあ.私はヘキサでもギリギリだ.



171 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 21:56:57 ]
i.loveruby.net/ja/misc/ycombinator.html

上のページの Y-Combinator を,練習を兼ねて Common Lisp に移植してみました.

(setf (symbol-function 'Y)
#'(lambda (f)
((lambda (proc)
(funcall f #'(lambda (arg) (funcall (funcall proc proc) arg))))
#'(lambda (proc)
(funcall f #'(lambda (arg) (funcall (funcall proc proc) arg)))))))


(setf (symbol-function 'fact0)
#'(lambda (f)
#'(lambda (n)
(if (zerop n)
1
(* n (funcall f (- n 1)))))))


(funcall (Y #'fact0) 5) => 120

...やっぱり大変だ,これ.もっといい書き方はないものでしょうか.


172 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 22:52:36 ]
(setf (symbol-function ... はムリムリ感が強いなあ。

(defvar Y
(lambda (f)
((lambda (proc)
(funcall f (lambda (arg) (funcall (funcall proc proc) arg))))
(lambda (proc)
(funcall f (lambda (arg) (funcall (funcall proc proc) arg)))))))

(defvar fact0
(lambda (f)
(lambda (n)
(if (zerop n)
1
(* n (funcall f (- n 1)))))))

(funcall (funcall Y fact0) 5) => 120






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

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

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