07/05/02 23:02:19
誰かひとりぐらい構ってくれよぉ。
114:デフォルトの名無しさん
07/05/02 23:09:48
>>113
…
…本当だ!
書体も違うような
115:デフォルトの名無しさん
07/05/02 23:25:28
確かに書体も違うな。他のプログラムの"ム"は左下の角が上に跳ねてるし。
116:デフォルトの名無しさん
07/05/02 23:33:35
ファイアーエムブレムみたいなものだな
117:デフォルトの名無しさん
07/05/02 23:36:32
>>113
On Listのほうが気になる
118:デフォルトの名無しさん
07/05/02 23:39:25
>>117
//Д///) わ、わざとだよ! つ、ついだよ!
119:デフォルトの名無しさん
07/05/03 06:59:28
そもそもLISPは構文的にオブジェクト指向を受け付けない。
オブジェクト指向は失敗だったとC++で証明されたから良かったものの、
もしC++で成功してたらLISPに未来はなかった。
C++の失敗に感謝しよう。
120:デフォルトの名無しさん
07/05/03 07:06:50
>>119
てめぇ、俺がC++厨だと知ったうえで喧嘩売ってんのか? ( ゚Д゚) ア゙ア゙ん?
121:デフォルトの名無しさん
07/05/03 07:45:24
CLOSの場合は、GOFのパターンやJAVAなどのオブジェクト指向で必要になっ
てる概念は不要になってくる。また、メソッドをオブジェクトに埋め込む事も可能。
122:デフォルトの名無しさん
07/05/03 07:46:16
C++は新しいLISPになろうとしているのだから
反目する必要はない
123:デフォルトの名無しさん
07/05/03 07:46:33
121 不要→一部不要 語弊ありありだった。
124:デフォルトの名無しさん
07/05/03 10:37:25
>>122
そうなんだけど、C++はやろうとある程度なんでも出来るけど、やろうと
すればするほどカオスになってしまって人が取り扱えないものに変貌して
しまうから、Lispほどの柔軟性を人が自在に扱えるものにするには、Lisp
以上の工夫がいるだろう。グリーンスパンの法則のとおりかも。
125:デフォルトの名無しさん
07/05/03 10:47:53
C++はBoostでかなりおもしろくなってきたと思うけど
126:デフォルトの名無しさん
07/05/03 11:21:47
>>125
もう C++ の信者はプログラミングよりも言語の放つ悪臭と対決するのが
快感になってきているな。
127:デフォルトの名無しさん
07/05/03 18:26:56
lisp loveと言うよりむしろS式love
128:デフォルトの名無しさん
07/05/03 19:10:07
ひゃあああ
129:デフォルトの名無しさん
07/05/03 22:47:22
>>125
Boostのテクニックは凄いし、Lisp以上の工夫はしてる。しかし、Lisp以上の
柔軟性は実現出来てないかも。
130:デフォルトの名無しさん
07/05/03 23:15:41
C++テンプレートプログラミングって、ファンクショナルプログラミング
の側面が多いから、むしろLisperはとっつきやすい。
131:デフォルトの名無しさん
07/05/03 23:38:41
C++ や Java が必死で頑張って、新しい機能を言語に取り入れたとかはしゃいでるけど、
Lisper から見れば所詮ライブラリで実現出来る、学生演習程度のものだからねぇ。
あまり魅力無いですね、ハイ。
132:デフォルトの名無しさん
07/05/03 23:47:45
なのにLispファミリのほうがせいぜい学生のオモチャで、
C++やJavaはしっかり大人の仕事道具なのがなんともな。
(あ、噛み付かなくていいからな)
133:デフォルトの名無しさん
07/05/03 23:52:26
>>132
C++ は糞だが大人の仕事道具となってはいますね。
Java はなんか、プログラミングセンスの無い人向けのトイ言語ってイメージ。
134:デフォルトの名無しさん
07/05/04 00:48:24
Boost は学生演習越えていると思うけどなぁ
135:デフォルトの名無しさん
07/05/04 01:01:43
Boost その物はね
136:デフォルトの名無しさん
07/05/04 01:13:48
C++も得に糞とは思っていなくてLispも好きな物好きがここにいます
137:デフォルトの名無しさん
07/05/04 01:13:54
結局やってることは、はるか昔に Lisp (含 Symbolics とか Emacs Lisp)
でやってたことの再発見を、必死に追従しているだけにしか見えないけどね。
138:デフォルトの名無しさん
07/05/04 01:31:05
すべての言語はLispから生まれLispへと回帰する。
139:デフォルトの名無しさん
07/05/04 02:24:21
C++は糞だ。などという言葉は信じない
C++を批評できる日本人は存在しないからだ
LISPは糞だという人間は信頼できる
優秀なLISPERに違いないからだ
140:デフォルトの名無しさん
07/05/04 02:32:04
人は如何にしてS式といふものとM式といふものとを区別し得よう。
彼のS式の魔力は、彼がevalするとはapplyする事である事を明瞭に悟つた点に存する。
S式の対象がatomであるとpairであるとは一つの事であつて二つの事ではない。
S式とは竟にatomの夢を懐疑的に語る事ではないのか!
141:デフォルトの名無しさん
07/05/04 04:07:25
Racterがそんなこと言ってたような気がするw
142:デフォルトの名無しさん
07/05/05 18:21:32
>>139
聖域なき構造改革はまだですか
143:デフォルトの名無しさん
07/05/06 03:28:12
URLリンク(page6.auctions.yahoo.co.jp)
144:デフォルトの名無しさん
07/05/06 05:19:27
l
i
s
p
完
145:デフォルトの名無しさん
07/05/06 15:41:56
>>140
小林秀雄も lisper だったのかw
146:デフォルトの名無しさん
07/05/06 20:12:05
>>138
最近のAOPも、CLOSの影響だしJavaのAOPへの動きもlisp
への回帰と言えるかも。
大人の道具という意味はわからんな。
147:デフォルトの名無しさん
07/05/06 20:43:08
電動こけしとかそういうの
148:デフォルトの名無しさん
07/05/06 21:26:28
Cokeで遊んでる人おらん?
149:デフォルトの名無しさん
07/05/06 21:44:27
電動Cokeし
150:デフォルトの名無しさん
07/05/06 22:14:08
> 最近のAOP
10年前が最近かよ(ぷ
151:デフォルトの名無しさん
07/05/06 22:15:12
> 最近のAOPも、CLOSの影響だし
ついでに、AOPの提唱者はCLOSの人だっつーの(w
152:デフォルトの名無しさん
07/05/06 22:50:02
>>148
Squeakスレのほうがいいんでない?
153:デフォルトの名無しさん
07/05/06 23:57:07
もうすぐGaucheNightだけどチケット買えた奴いる?
154:デフォルトの名無しさん
07/05/07 17:38:21
Gauche 0.8.7を使っています。
ssaxでhtmlがパースできると聞き、
(ssax:xml->sxml (receive (return-code head body)
(http-get "www.google.com" "URLリンク(www.google.com))
(open-input-string body) ) '())
としてみたのですが、
*** ERROR: "(input string port)":line 12: (END . head) while expecting ENDmeta
といわれてしまいます。
これは僕の使い方がいけないんでしょうか。
それともssaxがまだ対応してないんでしょうか。
155:デフォルトの名無しさん
07/05/07 19:03:18
>>154
パースできるのはxmlだから。
156:デフォルトの名無しさん
07/05/07 19:31:42
>>154
パースできるのはhtmlではなくXML。
対象がXMLであれば問題なくパースできる。
htmlの中でもxhtmlはXMLでもあるのでパースできる。
なお、文字コードの変換は勝手にはやってくれないことに注意。
157:154
07/05/07 20:11:09
ありがとうございます。
なんかごっちゃになってたみたいです。
htmlパーサがないか探して見ます。
158:デフォルトの名無しさん
07/05/07 22:50:43
>>154
Gauche固有の話題なら本家のWiLiKiに書き込んだら書いた方がいいんでね?
159:デフォルトの名無しさん
07/05/08 01:03:26
ビリーズブートキャンプでもLispが使われてるらしいな。
160:デフォルトの名無しさん
07/05/08 09:04:57
前世紀くらいにLispとPerlの言語の設計を比較した文書を読んだと思うんですが
URLあったら教えてください。
いくつかキーワードを出してその優先順位が違うとか何とか・・・
うろ覚えだけど厳格さとか正確さとかお手軽さとかそんな感じだったような・・・
161:デフォルトの名無しさん
07/05/08 09:08:20
前世紀ってことはPerl 4?
Perl 6との比較があるなら俺も読みたい。
162:デフォルトの名無しさん
07/05/08 10:06:45
比較ってのはある程度近いものを比較して意味が有るんだよな。
perlとlispの比較って鉄パイプと数字の3を比較してくれっていうくらい
意味が捕らえにくい。比較する意味があるんか
163:デフォルトの名無しさん
07/05/08 10:33:16
↑一番意味のないレス↓
164:デフォルトの名無しさん
07/05/08 10:59:33
一番なのに二つ指定するのってどうだろう。
165:デフォルトの名無しさん
07/05/08 13:01:49
Scheme 5つの誤解
1. 黒板でしか使えないオモチャである
2. 仕様が貧弱である
3. 本当のマクロは書けない
4. パッケージシステムがない
5. 正規表現が使えない
166:デフォルトの名無しさん
07/05/08 17:52:12
Lisp Scheme = 片言計画
167:デフォルトの名無しさん
07/05/08 17:59:43
へ・・・片言・・・
168:デフォルトの名無しさん
07/05/08 18:18:01
Schemeは今すぐ敗北を認めて黒田氏の尻の穴を舐めるように。
169:デフォルトの名無しさん
07/05/08 19:24:17
gauche.nightのチケット買えなかった椰子は挙手
170:デフォルトの名無しさん
07/05/08 20:22:24
>>169
ノ
171:デフォルトの名無しさん
07/05/08 21:01:43
>>169
ノ
チャットは何時からやるんだろ?のぞきにいこっと
172:デフォルトの名無しさん
07/05/08 22:08:30
>>171
ガラス張りだから職安通りから見えると思う
URLリンク(www.loft-prj.co.jp)
173:デフォルトの名無しさん
07/05/09 19:59:17
いまやってるよ。
URLリンク(www.lingr.com)
174:デフォルトの名無しさん
07/05/09 23:47:53
gauche.night の感想。スタッフ各位乙。
あっと言うまに終わったけど面白かった。
座談会。笑えたけどもっとつっこんで欲しかった。matz の扱い悪すぎw
生えんどう氏や生dan kogaiや生nobsunが見れて嬉しい。
VNC を使った奴がデモとしては一番うまかった。
mephisto のデモ、一度もちゃんとしたの見たことなくて残念
schemer は黒田氏に釣られすぎw
あとほぼ全員、ダイエットしろよ('A`)
175:デフォルトの名無しさん
07/05/10 00:55:09
結論としては黒板偉大なり
176:デフォルトの名無しさん
07/05/10 19:33:14
>>174
>ダイエットしろよ('A`)
そうなのか。
177:デフォルトの名無しさん
07/05/10 20:05:43
ワーキングプアだから俺は太らない
ようやく一つ勝った
178:デフォルトの名無しさん
07/05/11 01:56:03
gauche.nightは黒田氏大暴れしたみたいだなw
shiroさん vs 黒田氏の激論見たかった
しかしほんとうに黒板使うとはwww
179:デフォルトの名無しさん
07/05/11 06:02:30
まぁここでネタ拾ったんだろう。
180:デフォルトの名無しさん
07/05/11 23:06:18
性格から考えて黒田氏はこんな所見てないだろw
なかなか鋭いツッコミ入れてるなぁ
やっぱり切れ者ではあるんだな
181:デフォルトの名無しさん
07/05/12 18:40:09
MIT-Schemeをちょっといじってみたんだけど、
教育用としては本当に優れているね。
さすがだわ。
182:デフォルトの名無しさん
07/05/12 18:48:35
>>181
どう優れてるのか語ってくれ
183:デフォルトの名無しさん
07/05/12 18:52:00
>>182
たとえば開き括弧と閉じ括弧の対応が重要だってことが身をもってわかるわけよ。
184:デフォルトの名無しさん
07/05/12 19:00:04
それぐらいはC言語でもわかるぞ
185:デフォルトの名無しさん
07/05/12 19:11:35
>>184
いやC言語は=の数が大事だという点の教育に主眼を置いて設計されているはず。
186:デフォルトの名無しさん
07/05/12 19:14:54
>>185
そんな事はないだろw
187:デフォルトの名無しさん
07/05/12 19:38:49
まずインストールが非常に簡単でした
それからネイティブコンパイラとインタプリタの両方があることも良い点かと思いますよ
188:デフォルトの名無しさん
07/05/12 20:48:38
Cが何らかの教育に主眼を置いて設計されているなんて初耳でしたリッチー博士
189:デフォルトの名無しさん
07/05/12 21:09:28
ブラックモアキター
190:デフォルトの名無しさん
07/05/12 21:21:24
イアン、やめて~
191:デフォルトの名無しさん
07/05/12 21:22:58
この手の比較的マイナーな言語はインストールの段階で手間取ると激しく萎えるよな
始める前からこれかよ…ってw
192:デフォルトの名無しさん
07/05/13 05:23:40
速いと噂のcmulispが窓で動かない時点で萎えるよね!
sbclまんせー
193:デフォルトの名無しさん
07/05/13 12:28:47
ちょっとお聞きしますが、皆さんはどうして『Common Lisp』を選ばれたのですか?
どうして『OCaml』や『Haskell』ではないのですか?
私の場合は『Scheme』で関数型言語を学び始めたものですから、その延長で『Common Lisp』の勉強に進みました。
最近はちょくちょく『SML』なんかを触ったりしています。
194:デフォルトの名無しさん
07/05/13 13:09:10
>>192
unicode1文字が内部でも1文字になるのがSML#しかないから(マルチバイトデータでは扱える)
195:194
07/05/13 13:09:47
アンカー間違った>>193宛ね
196:デフォルトの名無しさん
07/05/13 13:28:31
>>193
動的な言語と静的な言語という意味で180度違うじゃん
つまりは、動的なものが良かったということだろう
197:デフォルトの名無しさん
07/05/13 14:09:46
そうとは限らない
198:デフォルトの名無しさん
07/05/13 14:55:27
スレリンク(tech板:841番)
の質問をした者です。
(define (f0 a b)
(let ((d1 (* a b))
(d2 (- a b))
(d3 (/ a b)))
(* (f1 d1 d2) (f2 d2 d3))))
(define (f1 x y)
(* x y))
(define (f2 x y)
(/ x y))
つづく、、、
199:デフォルトの名無しさん
07/05/13 14:57:04
OCamlは静的型付けだけど型推論を持っています
200:デフォルトの名無しさん
07/05/13 15:00:40
>>198 などと、定義されたプログラムが有った場合に、
以下の出力を得るのが目的です。
> (parse f0)
iport: (i0 i1)
oport: (o0)
node:(m0 m1 m2 m3 m4)
graph:
(m0 (* i0 i1))
(m1 (- i0 i1))
(m2 (/ i0 i1))
(m3 (* m0 m1))
(m4 (/ m1 m2))
(o0 (* m3 m4))
ここで、
i0~ :一番最初の入力データ並びを置き換えたもの。
m0~ :計算に出現する中間データを番号付けしたもの。
o0~ :最終の計算結果を番号付けしたもの。
既にマクロで隠蔽すればいいとのアドバイスを得ておりますが、
他には何か良く使われるアイデア等はありますか?
let については lambda に置き換えるとか??
201:デフォルトの名無しさん
07/05/13 15:04:07
>>193
学生時代は Ocaml や Haskell とかの強い型付けの信奉者だたよ。
まだ Ocaml はたまに使ってるなー。Haskell は頭悪い俺には計算機の実行動作と
コードとの対応がすっきりしないから疎遠になった。CL はアセンブラあがりの
俺には丁度いい抽象具合ってところかな。
202:デフォルトの名無しさん
07/05/13 15:09:25
>>200 つづき。。分かりづらいですね。
scheme のプログラムについて、
それを Data Flow Graph (DFG)だと見なして、
直接にデータの流れを有効グラフにて表すことが目的です。
最初のプログラム定義は、"define" の文字列にこだわっていません。。
203:デフォルトの名無しさん
07/05/13 15:09:46
>>193
そもそも Scheme も CommonLisp も関数型言語じゃないでしょ
だからなんでって言われても見当外れも甚だしいと思うんだけど
204:デフォルトの名無しさん
07/05/13 15:11:13
>>201 さん、すみませんでした。。
205:デフォルトの名無しさん
07/05/13 15:48:23
>>203
関数型言語の本家なんだが。マルチパラダイムの方向に進化しけど。
206:デフォルトの名無しさん
07/05/13 16:05:55
srfi-1 にある iota の名前ってなにからきているんでしょうか?
他の srfi の関数だと説明的で長い名前が多いんですけど iota
だけ妙に短くて気になります。ギリシャ文字のイオタ?
207:デフォルトの名無しさん
07/05/13 16:21:27
破壊的な代入が出来るってことで、純粋な関数型言語ではないということになっていますね。
208:デフォルトの名無しさん
07/05/13 17:16:42
>>205
本家?
そんな話あったか?
209:デフォルトの名無しさん
07/05/13 17:48:53
>>193
一言でいえば別に関数型言語を使いたいわけじゃないから
210:デフォルトの名無しさん
07/05/13 18:10:56
Common Lispで大規模プログラムを組んだ場合、C++のときのような、
保守性が甚だしく損なわれるといった問題は起こらないのでしょうか?
どうもCLOSの多重継承が臭いのですよね。
やっぱりあれを使うのはC++と同様に使用を控えたほうがいいような気がするのです。
個人的にはComomon Lispは多機能すぎると感じています。
だったらSchemeを使えとなるわけで、まぁ、実際使っているのですが…。
言語使用にオブジェクト指向を組み込むのではなく、Objective-Cみたいに、
Scheme + オブジェクトシステム が理想ですね。
211:デフォルトの名無しさん
07/05/13 18:20:11
C++だから保守性が損なわれるのではないと思うけどね。
212:デフォルトの名無しさん
07/05/13 18:23:13
>>210
C++の多重継承だって別に保守性が甚だしく損なわれるとは思わないけどな。
おまえさん変な本で妙な偏見を吹き込まれてないか?
213:デフォルトの名無しさん
07/05/13 18:50:46
>>210
多重継承を使って意味不明なデザインをしてしまうような奴は、
おそらくどんなに制限された言語を使わせても保守性再利用性ゼロの馬鹿なコードを書くだろうよ。
214:デフォルトの名無しさん
07/05/13 19:13:07
それではC++ではなくCommon Lispでプログラムを書く理由は何ですか?
215:デフォルトの名無しさん
07/05/13 19:15:39
楽だから
216:デフォルトの名無しさん
07/05/13 19:58:35
>>215
まさにそれだな
217:デフォルトの名無しさん
07/05/13 20:09:47
ではOCamlではなくCommon Lispで書く理由は何ですか?
218:デフォルトの名無しさん
07/05/13 20:12:00
超うぜぇwwww
219:デフォルトの名無しさん
07/05/13 20:14:39
ただたんに関数型言語厨なんだろ
状態を表現できない、もしくは表現するのに苦労する言語は使いたくないね
220:デフォルトの名無しさん
07/05/13 20:43:16
このガキ、MLスレでも同じことやってやがるw
827 名前:デフォルトの名無しさん[] 投稿日:2007/05/13(日) 19:11:48
OCamlがCommon Lispよりも優れている所って何だろう?
221:デフォルトの名無しさん
07/05/13 20:49:14
どんな言語をやるのか迷っているのだろう
そんなやつには俺は素直にeclipseを薦めよう
222:デフォルトの名無しさん
07/05/13 20:56:21
どう考えても迷っているんじゃないだろwww
223:デフォルトの名無しさん
07/05/13 21:02:08
Rubyを使わないのはなぜですか?バカだからですか?
224:デフォルトの名無しさん
07/05/13 21:05:41
信者がうざいからです>>223
っていうかマジでそういう風に思わせたいだけだろ?
225:デフォルトの名無しさん
07/05/13 21:13:49
ruby やっている人は lisp 知らない人がほとんどだと思うけど
lisp やっている人は ruby 知らない人なんてほとんどいないんだよな
この時点でもう土俵が違う感じ
226:デフォルトの名無しさん
07/05/13 21:15:33
知っているのに、Rubyを使わずLispを使う理由はなんでしょうか?
必然性を論理的に導けるのでしょうか?
思い込みにすぎない、些細な理由はお断りします。
227:デフォルトの名無しさん
07/05/13 21:17:57
マクロがないから
228:デフォルトの名無しさん
07/05/13 21:20:12
仮定:「俺様はrubyを使わない」
ここから容易な推論により、
結論「俺様はrubyを使わない」
が導かれる。
この仮定は俺様の性質からして正しい。
229:デフォルトの名無しさん
07/05/13 21:21:40
>>226
Rubyも使うよ
なんでも使う
230:デフォルトの名無しさん
07/05/13 21:23:02
どうしてSchemeでは不満なのですか?
私はSchemeでおなかいっぱいですが…。
231:デフォルトの名無しさん
07/05/13 21:27:50
どうしてCommonLispでは不満なのですか?
私はCommonLispでおなかいっぱいですが…。
232:デフォルトの名無しさん
07/05/13 21:36:21
>>226
おまえの態度が気に入らないから使わない。
233:デフォルトの名無しさん
07/05/13 21:40:37
知っているのに、CommonLispを使わずSchemeを使う理由はなんでしょうか?
必然性を論理的に導けるのでしょうか?
思い込みにすぎない、些細な理由はお断りします。
234:デフォルトの名無しさん
07/05/13 21:41:35
典型的な釣りだろ。
235:デフォルトの名無しさん
07/05/13 21:45:55
>>193
808 名前:デフォルトの名無しさん[] 投稿日:2007/05/12(土) 20:30:53
Scheme/Common Lispではなく、SML/OCamlを選んだ理由を教えてください。
関数型言語ML(SML, OCaml, etc.), Part 4
( スレリンク(tech板:808番) )
236:デフォルトの名無しさん
07/05/13 21:52:22
言語なんてもんは、その都度、場合によっては処理単位毎にでも、
必要に応じて問題に適したものを選べばいいんだ馬鹿者。
237:デフォルトの名無しさん
07/05/13 22:47:28
そうだよね。何故かLispをやってる人はRubyとかOCamlとか別の言語を使わないと思ってるらしい。
というかそれぞれの人がひとつの言語しか使わないと思ってるらしい。
それは典型的な素人の思いこみで、普通のプログラマは状況に応じてマッチした言語を選択するんだよね。
いくつもの言語をマスターしている。
たしかにLisp系は柔軟性が高くていろんな事が楽にできちゃうからこればっかり使っちゃうってのもあるけど、
それにしたってたとえばRubyの方が楽にできると思えばそっちを使うし。
238:デフォルトの名無しさん
07/05/13 22:50:01
黒板に書くならScheme、そうでないならCommon Lispだな。
239:デフォルトの名無しさん
07/05/13 22:50:04
>>206
> ギリシャ文字のイオタ?
元ネタは APL の原始関数イオタだと思う.
240:デフォルトの名無しさん
07/05/13 23:44:43
atoi を逆にしたと思ってた
241:デフォルトの名無しさん
07/05/13 23:48:00
>>217
Common Lispのほうが楽だから
>>223
Common Lispのほうが楽だから
>>230
Common Lispのほうが楽だから
242:デフォルトの名無しさん
07/05/14 00:15:22
>>239
ありがとうございます。すっきりしました。
ι6 で 1 2 3 4 5 6 になるんすね。へぇ~。
URLリンク(homepage3.nifty.com)
243:デフォルトの名無しさん
07/05/14 02:30:42
>>210
CLOSハC++ナドトクラベテ ユルヤカナ オブジェクトシコウ+アルファ
ダヨ。ユルヤカナオカゲデ、C++ナドトクラベテ スバゲティニナリニク
イカモ。ナゼナラ ソウショウカンスウト メンバカンスウノ チガイガ
オオキイナリ。
コモンリスプハ オモメノケイサントダイキボニナルモノ デユウリニナ
ル。ソレイガイノトコロデハ ユウイセイガ ムカシニクラベ テスクナ
ク ナッタトオモウ。
ソケットヤ スレッドカンレンノ カンスウノ ANSIカヲハヤクススメ
テホシイ。10ネンノアイダニヒツジュヒンガフエタ。
244:デフォルトの名無しさん
07/05/14 03:29:34
昔の電報キター!
245:デフォルトの名無しさん
07/05/14 03:37:47
イオタって聞くと、『ランボルギーニ・イオタ(レプリカ)』ってキャプションのついた写真を思い出してしまうのは秘密。
246:デフォルトの名無しさん
07/05/14 03:49:01
>>243
10年どころか、Common Lispが生まれて20年以上だもんな。
そろそろソケット、XML、Unicodeあたりを標準に取り込んでもらいたいものだ。
247:デフォルトの名無しさん
07/05/14 04:13:44
スレッドもね >> 標準
248:デフォルトの名無しさん
07/05/14 21:43:53
とりあえずScheme極めてみるわ
それからOCamlやろうと思うんだ
な~にがCommon Lispだよ
249:デフォルトの名無しさん
07/05/14 21:46:36
MLやるなら最初からMLでいいと思うんだ
250:デフォルトの名無しさん
07/05/14 21:47:56
勝手に極めてろw
251:デフォルトの名無しさん
07/05/14 23:34:33
249 :デフォルトの名無しさん :2007/05/14(月) 21:46:36
MLやるなら最初からMLでいいと思うんだ
だってSchemeのほうがかわいいじゃんw
252:デフォルトの名無しさん
07/05/14 23:37:58
かわいいのか?
253:デフォルトの名無しさん
07/05/15 00:06:21
まるっこくてぽにぽにしてるカンジ
254:デフォルトの名無しさん
07/05/15 03:43:59
えー?
ちんまりしてきゅっとしてる感じだなぁ
255:デフォルトの名無しさん
07/05/15 03:54:19
schemeハハヤクテケイリョウナノデ '86レビン トイウインショウデス。
256:デフォルトの名無しさん
07/05/15 11:04:28
かわい・い 《形》 (カワユイの転。「可愛い」は当て字)
(1)いたわしい。ふびんだ。かわいそうだ。三体詩抄「万民の枯骨となりたるは―・い事ではをりないか」
(2)愛すべきである。深い愛情を感じる。「―・い我が子」「―・い声で歌う」
(3)小さくて美しい。「―・いスズランの花」
(岩波書店「広辞苑 第五版」より引用)
(1)の意味だったら厭だな
257:デフォルトの名無しさん
07/05/15 12:35:07
チョークでものを書くあの感触が好きなら
Schemeをやらない手は無いよな。
258:デフォルトの名無しさん
07/05/15 19:28:06
爪で黒板を引っ掻く「キキィィィー」って音が好きなら
Schemeをやらない手は無いよな。
259:デフォルトの名無しさん
07/05/15 21:51:34
黒田ちゃんの攻撃来ました
GaucheNight (About Scheme cont.)
URLリンク(cl-www.msi.co.jp)
仕様があいまいだから許さんって事?
260:デフォルトの名無しさん
07/05/15 22:09:44
>>246
正規表現とFFIも☆逸す
261:デフォルトの名無しさん
07/05/15 22:32:02
R*RSの曖昧さは、Schemeに与えられた唯一にして最大の自由かもしれん。
良いか悪いかはわからん。
262:デフォルトの名無しさん
07/05/15 22:39:35
通読した事も無いくせに
263:デフォルトの名無しさん
07/05/15 22:43:49
>>260
普通の正規表現も入ってもいいけど、パターンをS式で書けたりするとさらに萌えるな
264:デフォルトの名無しさん
07/05/15 22:51:48
Schemeにマクロはないっていうがsytax-rurlesとかは何でマクロじゃないんだ?
あと、sytax-caseは非標準だけど、これはマクロなのか?
まあ、これがマクロなら、ほとんどの処理系syntax-case備えてることから、
Schemeには実質マクロがあるようなもんだといっていいと思うのだが。
265:デフォルトの名無しさん
07/05/15 22:51:52
>>259
さっそくshiroたんが反論してるね。
残念ながらレベル高すぎてついていけないorz
266:デフォルトの名無しさん
07/05/15 22:56:02
あの文字列の形が正規表現の正規表現たる所以であって、S式にしたらぶちこわしだ。
マクロでもってオートマトンコードに変えるんなら意味なくもないが。
267:デフォルトの名無しさん
07/05/15 23:15:31
>>262
焼酎飲みながらのことが多いですが、何度か通読しておるですよ。
6-2-3の冒頭なんかが端的にその精神を表しているように思うのですけれど。
規定されていない部分についての実装の挙動の規定というのは、シラフでじっくり読んでもほんの僅かしか確認できないし。
268:デフォルトの名無しさん
07/05/15 23:26:23
>>263
elispにあるみたいな表記?
269:デフォルトの名無しさん
07/05/15 23:31:35
反論ってこれかぁ
Scheme:マクロ:CommonLispとの比較:意味論
URLリンク(practical-scheme.net)
オレもさっぱりだw
270:デフォルトの名無しさん
07/05/15 23:48:53
>>266
perl6 の rule 見たいな感じ?
271:デフォルトの名無しさん
07/05/16 03:39:20
とりあえず現時点(R5RS)では、黒田の指摘は的を射ているということは分かった。
実装的に問題なければいーじゃんとする立場からは遠く離れた高みでの議論ですなあ。
272:デフォルトの名無しさん
07/05/16 16:30:23
おれC厨だけど、変数の代入はしないように気をつけてるよ。
273:デフォルトの名無しさん
07/05/16 16:32:04
Cは関数型言語だからな。それくらいの配慮は欲しいところだ。
274:デフォルトの名無しさん
07/05/16 16:40:36
>>273
> Cは関数型言語だからな。
???
275:デフォルトの名無しさん
07/05/16 17:09:59
関数型... 関数を通して返す値が常にあるもの。y=f(x)の関係さ。
これが一番広い意味の関数型言語の定義だと思うんだが。
純粋か不純かは関数の中で、変数の値を変化させる事が可能かどうかの
違いじゃなかったっけ?
Cはvoid型のように返す値がないものもあるので、関数型とは言わない。
276:デフォルトの名無しさん
07/05/16 17:12:34
ということは、「scheme界へ黒船襲来」に迎撃出来なかったってことか。
277:デフォルトの名無しさん
07/05/16 18:09:03
Haskellの勉強をしてからC言語やると天才になれる。
C言語で関数言語的なスタイルでプログラミングするんだ。
Lisp厨には理解出来ないか?
278:デフォルトの名無しさん
07/05/16 18:48:52
毎度のことながら言語比較厨は馬鹿っぽいな
279:デフォルトの名無しさん
07/05/16 18:57:16
馬鹿はおまえだよ
自覚しろ
280:デフォルトの名無しさん
07/05/16 19:21:08
>>277
>C言語で関数言語的なスタイルでプログラミングするんだ。
不可能ではないが、Cで関数言語的な事をやりたいならば、
関数ポインタは押さえておきなさい。
あとは、こちらより、haskellのスレに出かけて師を探せ。
じゃあがんばれよ。
281:デフォルトの名無しさん
07/05/16 19:24:18
高階関数がムズいぜ。
282:デフォルトの名無しさん
07/05/16 19:31:55
281 :デフォルトの名無しさん :2007/05/16(水) 19:24:18
高階関数がムズいぜ。
むしろ痒いよw
283:デフォルトの名無しさん
07/05/16 19:59:44
間を取ってムズ痒い
284:デフォルトの名無しさん
07/05/16 20:39:41
>>275
> 関数型... 関数を通して返す値が常にあるもの。y=f(x)の関係さ。
scheme の set-car! とかは関数だけど値を返してるといえるんだろうか。
> 純粋か不純かは関数の中で、変数の値を変化させる事が可能かどうかの
> 違いじゃなかったっけ?
代入があれば純粋ではないのはそうだろうけど、
代入がないからって純粋とは限らないんじゃないかな。
普通は副作用をもたないものを純粋というのでは?
285:デフォルトの名無しさん
07/05/16 20:57:24
純粋な関数型言語と言われているHaskellでも間接的な方法でなら代入できるよ
値を返す関数を関数の中に織り込むの
286:デフォルトの名無しさん
07/05/16 21:12:03
関数型厨は巣に帰れ。Lispが関数型かどうかなんてLisperにとってはどうでもいい問題だ。
287:デフォルトの名無しさん
07/05/16 21:38:51
カルト乙w
288:デフォルトの名無しさん
07/05/16 22:11:29
>>284
schemeのset-car!みてぽかーんとしてしまった。#t #fどっちか
返せばいいのに。
>普通は副作用をもたないものを純粋というのでは?
代入の事を指していたのではなくて、このことを指していた。
関数の中で変数が変化するのは、破壊的だと考えられる。
一度決まった変数をいじらないことをさしていて、代入の有無ではないです。
289:デフォルトの名無しさん
07/05/16 22:22:54
>>274
ほら、アレじゃね。C++ は参照透明な言語ですっていう一連のネタの続きじゃないの。
副作用の為のシンタックスシュガーが豊富に用意されていますって奴w
290:デフォルトの名無しさん
07/05/16 22:26:02
ん?
関数型言語でしょ?
URLリンク(d.hatena.ne.jp)
291:デフォルトの名無しさん
07/05/16 22:33:10
Immature Lisp 萌えw
292:デフォルトの名無しさん
07/05/16 23:17:02
ruby スレ痛い事になってるな
293:デフォルトの名無しさん
07/05/16 23:21:12
何その嵐依頼
294:デフォルトの名無しさん
07/05/17 21:01:47
R5RSとにらめっこしながらSchemeを勉強中なのですが、
未束縛のxがあるとして、
(define-syntax foo
(syntax-rules () ((_) (define x 100))))
(foo)
としたあと、xが100になる処理系(Gauche,scm,guile)とxが未束縛のままの処理系(Gambit-C,scheme48,MzScheme)があるのですが
マクロ変換子のスコープってどうなってるんでしょうか
予想としては(syntax-rules ... )まで(後者の挙動)かなぁ、と思うのですが
295:デフォルトの名無しさん
07/05/17 21:49:50
トップレベルじゃなければ大体の処理系では前者になるんじゃね?
296:デフォルトの名無しさん
07/05/17 21:52:11
>>294-295
petite chez schemeではそのマクロを定義しようとした時点でエラーになった。
297:デフォルトの名無しさん
07/05/17 21:54:04
>>296
ハイジニックな性質を守るためにはそれが正解だろう。
298:デフォルトの名無しさん
07/05/17 22:38:01
>>296
ならねーよ。
もしかして全角空白ごとコピペしたんじゃね?
299:294
07/05/17 22:42:27
Gaucheは
> (foo)
> x
→ 100
なのに
> ((lambda () (foo) x))
だと、未定義もしくはlambda呼び出しの前の値です
((lambda () (foo) x))が100を返すけどトップレベル束縛にならない処理系もあって訳分からなくなってきました…
(foo)でスコープが閉じてその外では100にならないのが正しいと思うのですが
300:デフォルトの名無しさん
07/05/17 23:00:07
マクロのかわりができなきゃ何のために導入するの?
301:デフォルトの名無しさん
07/05/17 23:01:20
そういうのにストレス感じる人はコモンリスプへいらっしゃいw
302:294
07/05/17 23:05:20
>>300
defineは内部定義になってもset!は可視の束縛場所の値の変更ですから
使えるのではないでしょうか
内部定義だからxは自由参照じゃないからリネームされて外側のスコープの値を変更しない…んですよね?
保険的マクロ二加えて古典的マクロとgensymをR6RSに入れてくれれば良いのに
303:デフォルトの名無しさん
07/05/17 23:18:22
>>302
syntax-caseが導入予定。
古典的マクロはsyntax-caseで実装可能。
304:294
07/05/18 14:41:54
>>303
syntax-rulesの表現力に不満がある訳じゃなくて
(まだ自分はそんなレベルじゃないです)
実装が難しくて挙動が処理系依存になっているのなら
ポータブルな古典的マクロも標準に入れてほしいと思っただけです
syntax-rulesでスコープが閉じてるとしたら
マクロでdefineを使用すると必ず内部定義になってしまうから
R5RSのマクロの項でトップレベル定義のdefineについて言及していることへの辻褄が合わなくなってしまいますね
でも閉じてない(マクロ使用と同じスコープ)なら
そのマクロは定義が許される文脈でしか使用できなくなりますね
でも識別子の衝突を避けるためにリネームされるってことは
新しいスコープができている事に他ならない気もしますし
どっちなんでしょうか
305:デフォルトの名無しさん
07/05/18 15:33:40
Scheme用のいいGUIツールキットってないかな・・・
306:デフォルトの名無しさん
07/05/18 17:39:53
処理系によりけり。
307:デフォルトの名無しさん
07/05/18 17:56:30
同じOS上でも処理系毎に違うのなんとかならんのだろうか?
308:294
07/05/18 18:40:13
言葉がわかりづらい…
束縛→場所をユニークに表すもの
束縛する→識別子を場所またはマクロ変換子に対応づける
参照→場所から値を取り出す事
という解釈で良いんでしょうかね
束縛するはともかく他の2つは直感的な理解と違う解釈な気がしますけど
内部定義のduplicate bindingについてはR5RSでは言及されてないようですけど
内部定義のdefineは完全に等価なletrec変換できるって書いてあるので
暗黙的にduplicate bindingは禁止なんでしょうね
でも処理系によって許すものと許さないものがあるようです
syntax-caseで使用する識別子'_'はマクロ名を表すって説明してるサイトもありますけど
必ずしもそうじゃないんですね
パターンリストの先頭の識別子はパターン変数にならず、
マクロ名と見なされるってだけなので
(define-syntax foo (syntax-rules () ((bar _) (begin (display _) (newline)))))
見たいに書くとパターン変数として使えるんですね
309:デフォルトの名無しさん
07/05/18 20:00:03
>>306
じゃあGaucheで
310:294
07/05/18 20:08:42
あ、自分のレスみて気がつきましたが
パターン変数はいわばメタ変数で実体を持たないから
束縛を隠蔽する事はあっても新しい束縛の導入にならないんですね
じゃあR5RSの4.3のマクロの項で述べられている「束縛の挿入」は束縛コンストラクタを指している
そしてその束縛は(リネームされるから)マクロ使用の周りのものとは異なるわけですね
だからmzschemeやGambit-Cやscheme48の挙動が正しい
311:デフォルトの名無しさん
07/05/18 21:45:48
>>308
束縛という日本語が、Lispを無駄に難解な言語だと誤解させている部分はあるかもしれないねえ。
単にまんまバインドと言うほうがわかりやすかったりして。言葉の意味をあまり考えないで済む分。
似たようなのに「関数」てのがあるね。もともとfunctionの中国語読みを無理やり函数なんて漢字に当てたもんだから、
プログラミングを初めて学ぶ人の中には、関数て語で混乱する人も少なくないらしい。
遠山啓先生なんかは何十年も前の著作で、functionは「函数」じゃなくて「機能」でいいじゃないかと書いていらっしゃる。
312:デフォルトの名無しさん
07/05/18 21:49:07
支離滅裂だな
「私は漢字苦手です」の一言で済むだろ
313:デフォルトの名無しさん
07/05/18 22:03:55
オレも用語法に付いては同意見だな。 >> 英語そのままで良い
関数は違和感を覚える前に慣れてしまったけど、
理系の人間の国語センスの無さには絶望する。
314:294
07/05/18 22:05:51
うーん、あまり複雑に考えなくていいのかもしれません
構文束縛を除いて考えると
束縛とは
({let,let*,letrec} ((ここにある識別子 value) ...) body)
(lambda (ここにある識別子 ...) body)
(内部定義のdefine ここにある識別子 expression)
(トップレベルのdefine ここにある識別子、ただし未束縛 expression)
参照とは
識別子のうち、束縛でないもの
束縛の別名が束縛識別子、参照の別名が自由識別子って言う解釈で良いのでしょうか
>>311
束縛変数、自由変数だけならλ式みたいで分かりやすいんですけどね
束縛する、束縛、~に対する束縛、~への束縛、いろいろ種類があるので分かりにくいです
315:294
07/05/18 22:11:33
「識別子は場所に束縛される」
この表現は解釈の余地もなく分かりやすいのですが
それ以外の「束縛する」、「束縛」などが分かりにくいですね
316:デフォルトの名無しさん
07/05/18 22:13:20
用語なんて慣れの問題だと思うけどね
317:デフォルトの名無しさん
07/05/18 22:27:27
>>313
functionなんて、今の関数よりはもともとの函数のほうが箱(函)をイメージして意訳してるので、
数学的な意味では関数よりも原語に近いイメージなんだけど、んなもん言われなきゃ気づかないよってのが痛いよなあ。
函→関に変わったのも、函の数て何よ?てなことからなんだろうし。
その点、「実装」てのは実に優秀な訳だと思う。見た瞬間にイメージが沸く。
318:デフォルトの名無しさん
07/05/18 22:45:17
まぁでも "Lisp" という単語を、日本語として適当な語句に訳せって言われたら難しいよね。
何か以前も同じ様な話題があった様な気がするけど…
;; 無理矢理話題をスレの趣旨に近付けてみた。
319:デフォルトの名無しさん
07/05/18 22:45:37
>>317
函→関は当用(か常用)漢字の問題
320:317
07/05/18 22:57:22
>>319
恥ずかしながら存じませんでした。勉強になりました。
しかし、音が同じってだけで漢字を変えるってのもどうかとw
321:デフォルトの名無しさん
07/05/18 22:59:31
ま、周りに混乱を撒き散らして俺擁護を定着させるより
今定着している擁護で理解するほうがよっぽど楽だな。
322:294
07/05/18 23:00:34
314は全然間違いでしたね
(lambda () x)と((lambda () x))では違いますから
評価される識別子→参照
評価されない識別子→束縛
ならいいでしょうか
323:294
07/05/18 23:05:48
あー、でも'xとかを束縛とは呼べない気がしますから
今は評価されていないけどいずれ評価されうる識別子→束縛
かな?
324:デフォルトの名無しさん
07/05/18 23:08:09
>>320
音だけの問題じゃないぞ。
数と数の関連を表してるという意訳でもある。
325:デフォルトの名無しさん
07/05/18 23:47:31
>>323
(eval 'x)
……とか言ってみる
いや、そんなによくわかってないんだけど
326:デフォルトの名無しさん
07/05/19 00:17:17
関数の結果が解っつうのも…
関連性ほどけちゃってるじゃん
327:デフォルトの名無しさん
07/05/19 00:49:34
お前らがLispからイメージする色ってなによ?
たとえばRuby=>赤、Perl=>青、Python=>俺は紫なんだけど
Lispってイメージわかないんだよなぁ。しいて言えば無職ってかんじ。
328:327
07/05/19 00:50:54
oops
x無職
o無色
329:デフォルトの名無しさん
07/05/19 00:53:08
黄色に決まってるじゃん
330:デフォルトの名無しさん
07/05/19 01:04:20
Perlは黄色で、Lispの方が青っぽいなあ
Lispは透明感がある感じ。
331:デフォルトの名無しさん
07/05/19 01:11:55
>>327
緑
332:デフォルトの名無しさん
07/05/19 01:15:30
紫かなあ。ANSI Common Lisp の表紙が紫だから。
333:デフォルトの名無しさん
07/05/19 01:23:10
Ruby ・・・ ルビー色
Perl ・・・ 真珠色
Python ・・・ ニシキ蛇色
Lisp ・・・ ポール色
334:デフォルトの名無しさん
07/05/19 01:26:40
Python 青紫 Common Lisp 透明で少し青みがかかってるちょいとつや消し
Ruby 赤 Perl 黄 Scheme 明るい青
C やや白っぽい黄 C++ ドドメ色
AWK 赤茶色 sed 黄
Ocaml 肌色
335:デフォルトの名無しさん
07/05/19 07:28:21
>>316
君が思うまでもなく、みんな慣れの問題についての話をしてるんだよ。
何のメリットも無いのに、慣れるための壁を高くしてそうな日本語訳についての話。
336:デフォルトの名無しさん
07/05/19 09:22:35
Perl で黄色ってのはどういう連想なんだろう?
俺はCPANが水色だから水色を連想した。
>>334
>C やや白っぽい黄
なんかエロイな。
337:デフォルトの名無しさん
07/05/19 09:54:54
どうでもいいです。ネタがないなら無理して書き込まなくて結構です。
338:294
07/05/19 14:18:23
>>325
結局C的に言えば
参照→*&x
束縛→&x
になりますかね
339:294
07/05/19 15:35:47
いろいろ考えすぎてました
識別子は場所に束縛される
束縛は識別子が束縛されている場所
参照は識別子が束縛されている場所から値を得る
ですね
340:294
07/05/19 16:32:40
いろいろな処理系の挙動を観察してみましたが
結論としてはdefine-syntax内ではdefineは使わないほうが良いようですね
他の束縛コンストラクタは閉じ括弧によって明示的にスコープも閉じられるので解釈に曖昧さがありませんが
defineはスコープの終端が明示的ではないので処理系によって挙動がずいぶん違うようです
というか内部定義のdefineなんてものが諸悪の根源のような気もします
341:デフォルトの名無しさん
07/05/19 18:28:42
用語なんて慣れの問題
342:デフォルトの名無しさん
07/05/19 18:33:35
あだだだだだ・・・・・・
イタイねぇw
343:デフォルトの名無しさん
07/05/19 18:40:28
今日も痛いの湧いてんなぁ
344:デフォルトの名無しさん
07/05/19 18:49:10
↑なんか湧いてるぞ
345:デフォルトの名無しさん
07/05/19 18:55:09
>>339
なんか別の言葉で再定義して満足してるだけじゃね?
346:デフォルトの名無しさん
07/05/19 20:36:40
Ruby スレを荒らしてたキチガイだろ。調子のって Ruby スレで暴れてたら
Lisper が居て泣きながら帰ってきたってとこか。迷惑な…。
Ruby スレでもいらない子。Lisp スレにもどってきてもやっぱりいらない子。
347:デフォルトの名無しさん
07/05/19 20:44:33
セルビオゲゼルが提唱している、減価する貨幣。
私はそれを実現するべくLispの勉強を始めたのでした。
348:デフォルトの名無しさん
07/05/19 21:02:57
>>346
ライブラリが無いから実用的じゃないという流れでACL出されて
その後論点がまるで変わっているように見えるんだけどなぁ
というかこどもっぽい反応が目に付くような
349:294
07/05/19 21:30:05
>>342-4 >>346
スレを汚して申し訳ないですけど
私はRubyスレをのぞいた事も書き込んだ事もないですし、
CLとschemeは勿論、それ以外の言語をけなす意図もないです
>>345
新しい概念の理解ではないので、自分の理解している言葉に置き換えただけです
350:デフォルトの名無しさん
07/05/19 21:45:33
>>348
つか Ruby スレで Lisp 話やるのがスレ違いで叩き出されて当然だろ。
戻ってこられても迷惑だけど。
351:デフォルトの名無しさん
07/05/19 21:48:21
見てきただけの俺に言われても困るんだが…
352:デフォルトの名無しさん
07/05/19 21:58:47
>>350
キミも荒らしている一人じゃないか?
ほぼ書式が一緒だが
701 名前:デフォルトの名無しさん[sage] 投稿日:2007/05/19(土) 00:16:07
>>689 バカはお前だよ。CL コミュでもライブラリ不足は長い事問題になってんじゃん。
で、他言語のライブラリを活用しようとかって話でてるじゃん。ILC とか c.l.l とか読んでるんか?
きみのような頭が病気な人が一人いるだけで Lisper としては迷惑なんだよ。ここは Ruby スレだし。
まぁ Lisp 厨を装った荒しなんだろうけど、困ったもんだ…。
710 名前:デフォルトの名無しさん[sage] 投稿日:2007/05/19(土) 01:29:24
>>702 救い難いキチガイだな。なんで SBCL だと思ったんだ?妄想?
残念だけど Allegro CL 使ってるっつーの。そんでも Ruby を使うこともある。
そんで敬意は払う。おまえみたいに比較ばっかりで何一つ使いこなせないのが一番タチ悪いよ。
720 名前:デフォルトの名無しさん[sage] 投稿日:2007/05/19(土) 08:35:03
ちょwwww 荒し君 >>714 バカとかしか出なくなwww 小学生かよ。荒らし君涙目?売りは粘着だけか?
つかどっかで半端な知識でも聞きかじってきたんだろうが、Ruby スレで Lisp ネタで論破されるとは
どんだけヘタレなんだよ……Ruby ユーザーかつ Lisp ユーザーみたいな層の存在を考えなかったのか。
353:デフォルトの名無しさん
07/05/19 22:07:06
>>852
このスレを荒らすなよ
354:350
07/05/19 22:14:32
>>352
なんか妄想入ってきたな。Ruby スレの奴も navi2ch 使ってそうだと推測はできるけど。
355:デフォルトの名無しさん
07/05/19 23:08:23
またRUBYキチガイが暴れてるの?
アレはほんと迷惑だな
356:デフォルトの名無しさん
07/05/19 23:15:35
両方荒らして「おれってすげー」ってほくそえんでいる、寂しい奴が一人というのが正解。
357:デフォルトの名無しさん
07/05/19 23:50:16
今なら言える
ぬるぽ!
358:デフォルトの名無しさん
07/05/19 23:55:32
>>357
ガ
ッ
359:デフォルトの名無しさん
07/05/20 00:04:47
ちん剣士
360:デフォルトの名無しさん
07/05/20 00:07:29
>>354
どこら辺が妄想に見える?
361:デフォルトの名無しさん
07/05/20 00:18:03
lisp/scheme で処理系に ヌルポ って云わせてみたいんですけど
どうすればいいんでしょうか?
362:デフォルトの名無しさん
07/05/20 00:19:17
'ヌルポ
363:デフォルトの名無しさん
07/05/20 00:23:32
>>361
そんな当たり前の答えは期待していないんですけどorz
364:デフォルトの名無しさん
07/05/20 00:49:57
>>327
Rubyは赤葡萄酒色
Perlは茶色
Pythonは鉛色(ちょいメタリックぽい色)の縞柄
Lispはエメラルド色
365:デフォルトの名無しさん
07/05/20 00:56:58
>>363
そりゃ、当たり前な答えしか返ってこない聞き方してるからじゃないか?
どんな答えを期待してるのか書いてくれなきゃわからんよ
366:デフォルトの名無しさん
07/05/20 00:58:17
>>362
'ガッ
367:デフォルトの名無しさん
07/05/20 01:11:16
>>360
荒らしはいろんなところでウザがられるのが当然じゃないか?
Rubyスレのぞいたけど >>352 に引用されてる記事の前に荒らしてるから煽られてんだろ
368:デフォルトの名無しさん
07/05/20 01:19:16
>>367
2chの鉄則「荒らしに反応した奴も荒らし」
>>352は「反応する」の域を明らかに超えてるな
というか「煽ってる」って自覚があるんだな
369:デフォルトの名無しさん
07/05/20 01:29:55
自覚て。俺 (367) も同一人物ってこと?
370:デフォルトの名無しさん
07/05/20 05:25:04
香ばしい展開
371:デフォルトの名無しさん
07/05/20 09:20:54
まぁこういうアホな会話を育ててしまうという経験を積んでいくうちに
「あれ、どうやら俺は、自分で思っていたほど賢くないみたいだぞ?」
っていうのを学んでいくんですよ。
一生「会話がアホになったのは俺と違って相手がバカだから」の一点張りで生き続けるのも
たまに居ますが。
372:デフォルトの名無しさん
07/05/20 14:01:12
>>369
バレてないつもりなのか
>>367にもそのレスにもまだ特定できるほどの特徴が残ってるんだよ
373:デフォルトの名無しさん
07/05/20 14:28:42
ここで Ruby スレみたいな話をするのは止めておくれ
374:デフォルトの名無しさん
07/05/20 14:44:53
>>373
そりゃ駄目だよ
こういう馬鹿がRubyスレとか他のスレで暴れる前に釘を刺しておかないと
お前の事だけどな
375:デフォルトの名無しさん
07/05/20 14:48:14
>>372の後でも特定されるようなレスをするのはわざとなんだろうか
第三者のなりきりかな?
376:デフォルトの名無しさん
07/05/20 14:51:32
そこまで執着する理由が分からんけど、何かトラウマでもあるの?
377:デフォルトの名無しさん
07/05/20 14:54:25
>>375
もしかして自分が間違ってるかもと思ったら、それが正解だよ。
これ、俺からのアドバイスね。
378:デフォルトの名無しさん
07/05/20 15:11:51
それはチョンの陰謀
379:デフォルトの名無しさん
07/05/20 15:50:01
>>352 に引用されてるやつは元レスの荒らしが酷いからRubyスレ住人がキレたんだろ。
なんでそんなに特定したがってんだ??
689
CommonLisp が実用的じゃないって Ruby 厨はどれだけアホなんだw
で、Gauche の方が実用的だって?
Shiro 氏自身が実用で使うなら Gauche より CommonLisp とるって言っているのにwwww
702
SBCLで仕事しようとするからだろ
アホか
714
>>710は真性のアホだなw
380:デフォルトの名無しさん
07/05/20 15:58:09
>>379
こんな見え見えの釣り針に>>352って小学生同士の喧嘩か
381:デフォルトの名無しさん
07/05/20 16:01:00
>>379
「特定したがってる」んじゃなくて、
別人を装って>>352に引用されてる奴を擁護してるからお前に突っ込んでるんだよw
382:デフォルトの名無しさん
07/05/20 16:03:13
ぽ
こ
ち
ぬ
383:デフォルトの名無しさん
07/05/20 16:04:36
なんでこのスレ定期的に炎上するの?w
384:デフォルトの名無しさん
07/05/20 16:07:07
ところで君たちは何をそんなにムキになってるのかね?
Ruby スレがどうしたとかなんとか、そんなにムキになるほどの
ことなのかね?
そもそも何を怒ってるんだ君たちは?
385:デフォルトの名無しさん
07/05/20 17:02:31
本人キター
386:デフォルトの名無しさん
07/05/20 18:07:02
\(^o^)/オワタ
URLリンク(www.unsymmetry.org)
387:デフォルトの名無しさん
07/05/20 18:26:41
>>386
すごい勢いだな。
388:デフォルトの名無しさん
07/05/20 18:28:43
>>386
実は奥の二人の方がが、手前の人よりも重要なんだよね(;゚∀゚)=3
389:デフォルトの名無しさん
07/05/20 18:39:58
なんで乳をそんなとこから出してんの? 不思議!
390:デフォルトの名無しさん
07/05/20 20:30:42
GaucheNight前
Lisp実装時の疑問に答えるスレ
GaucheNight後
GaucheNightの記事でLispを知ったLL信者に答えるスレ
391:デフォルトの名無しさん
07/05/20 21:04:45
ここはRuby支配下ですか?
他の言語は完全に支配下に置いたんですけどねぇ・・・
392:デフォルトの名無しさん
07/05/20 21:07:38
なんか痛いのがきた
393:デフォルトの名無しさん
07/05/20 22:51:04
>>379
というかこれ自体は別に嘘言ってないよなあ
ライブラリが少ないから実用的じゃないみたいなツッコミに
商用パッケージ使わないからと言っているだけだし
相手が小学生みたいな反応に見える
394:デフォルトの名無しさん
07/05/21 03:31:13
>>391
グレアムおじちゃんがお口にλつけて仕舞いにくるぞ
395:デフォルトの名無しさん
07/05/21 05:51:37
「支配」っていうのは、とてもRuby的な概念だよね。
自己顕示欲ともPerlコンプレックスともつかない、Rubyユーザーの野望がよく出てる単語というか。
とても人間的。
Lispはどっちかというと「わかる奴だけ使う最強兵器」みたいな位置だし、
ユーザーもそういう位置で満たされてるから、言語トーク自体を楽しむ意気込みはあっても、
そこで支配というワードが来ると、それどーゆー意味だったっけ的な溝を感じる。
396:デフォルトの名無しさん
07/05/21 10:51:46
ふーん
397:デフォルトの名無しさん
07/05/21 14:13:14
「最強兵器」も「支配」といい勝負ではないか?
398:デフォルトの名無しさん
07/05/21 14:41:11
頭悪そう
399:デフォルトの名無しさん
07/05/21 14:46:33
「支配」っていうのは、とてもボールペン的な概念だよね。
自己顕示欲とも万年筆コンプレックスともつかない、ボールペンユーザーの野望がよく出てる単語というか。
とても人間的。
筆ペンはどっちかというと「わかる奴だけ使う最強兵器」みたいな位置だし、
ユーザーもそういう位置で満たされてるから、筆記用具トーク自体を楽しむ意気込みはあっても、
そこで支配というワードが来ると、それどーゆー意味だったっけ的な溝を感じる。
400:デフォルトの名無しさん
07/05/21 15:31:15
Schemeは毛筆、と。メモメモφ(・∀・)
401:デフォルトの名無しさん
07/05/21 16:34:30
鉛筆最強
402:デフォルトの名無しさん
07/05/21 18:35:45
schemeはチョークじゃなかったっけ
403:デフォルトの名無しさん
07/05/21 18:45:51
メモメモφ(・∀・)
smalltalk (n.) [smo?to?k]] 1.文房具談義、筆記用具トーク 2. 小型のチョーク (→数奇夢)
404:デフォルトの名無しさん
07/05/21 19:55:41
Ruby信者はいつも元気だな
405:デフォルトの名無しさん
07/05/21 21:18:17
Common Lispは山羊の毛の毛筆
Schemeは馬の尾の毛だな
406:デフォルトの名無しさん
07/05/21 21:46:39
>>405
どう違うの?
407:デフォルトの名無しさん
07/05/21 21:55:05
山羊の毛は(()())で
馬の尾の毛は(().())
408:デフォルトの名無しさん
07/05/21 21:58:49
俺様Lispはあそこの毛で作りました
409:デフォルトの名無しさん
07/05/21 22:04:42
(
)
(
)
410:デフォルトの名無しさん
07/05/21 22:18:54
(
)
(
)
411:デフォルトの名無しさん
07/05/21 22:19:36
λ
(())
412:デフォルトの名無しさん
07/05/22 12:48:02
黒板偉大なり
413:デフォルトの名無しさん
07/05/22 14:22:56
今、ウェブ・サービスの多くが、
Javaや.NETベースのアプリケーションサーバや、
Perl/Ruby/PHP/Python等のLightweight Languageの上に構築されていますが、
なぜそこにLispが含まれていないのでしょうか?
414:デフォルトの名無しさん
07/05/22 14:36:04
これはひどい一本釣りですね
415:デフォルトの名無しさん
07/05/22 18:42:36
(lambda
416:デフォルトの名無しさん
07/05/22 20:08:35
らんぶだ!
417:デフォルトの名無しさん
07/05/22 21:07:15
lambda! と申したか
酷い仕様だな
418:デフォルトの名無しさん
07/05/22 21:42:35
(lambada () '石井明美)
419:デフォルトの名無しさん
07/05/22 22:03:47
>>418
それはラマダン!
420:デフォルトの名無しさん
07/05/22 22:04:44
>>419
むしろラバンバ。
421:デフォルトの名無しさん
07/05/22 22:09:05
lamborghini
422:デフォルトの名無しさん
07/05/22 23:21:41
俺ははじめてlambdaを見たとき
ふつーにランバダってよんでたな。
423:デフォルトの名無しさん
07/05/23 00:36:40
俺は脳内でラムブダとつぶやきながら書いてる。
424:デフォルトの名無しさん
07/05/23 01:01:47
馬鹿が多くてちょっとほっとした
425:デフォルトの名無しさん
07/05/23 02:13:32
ホッとするのは底なしに危険だぜ
426:デフォルトの名無しさん
07/05/23 02:22:37
底なしなど幻想だ
427:デフォルトの名無しさん
07/05/23 05:59:23
「実質的に無限」というのは「有限」という意味だからね。
なんかこう、Lisperは特にそう考えたがりそうだね。
428:デフォルトの名無しさん
07/05/24 20:48:16
lispは見なす事が自然と身に付く
それができない頭硬いバカチンに使いこなすのは無理
429:デフォルトの名無しさん
07/05/24 22:21:39
迷惑だから Ruby スレで暴れているヤツ引き取ってくれ
430:デフォルトの名無しさん
07/05/24 22:26:26
実際そうしたい
431:デフォルトの名無しさん
07/05/24 22:31:47
>>429
暴れてるのはお前だろ
432:デフォルトの名無しさん
07/05/24 23:26:53
そもそも「引き取る」という概念がおかしいな。
スレッドと訪問者の関係を、チームと選手の関係みたいに思ってるんじゃないのか。
433:デフォルトの名無しさん
07/05/24 23:30:54
ゴミはGCへ
434:デフォルトの名無しさん
07/05/24 23:42:04
クロージャー体操
はっじまっるよーーーーーー
435:デフォルトの名無しさん
07/05/26 08:24:50
>>428
>...バチカンに使いこなすのは無理 に見えた。
言語論争の次は宗教論争かと思った。
436:デフォルトの名無しさん
07/05/26 09:10:00
オーソドックスなネタですね。
437:デフォルトの名無しさん
07/05/26 09:22:46
ウェブ技術系のブログを見ると、
「やっぱPHP最強だわ」などの表現が見当たりますが、
Lispはどうなのでしょうか。
438:デフォルトの名無しさん
07/05/26 09:50:39
括弧の数なら負ける気がしないぜ!
439:デフォルトの名無しさん
07/05/26 10:06:29
少しはカッコを減らす努力をしないと
ポール・グレアムに嘲笑われるぞ
440:ジュリー
07/05/26 10:14:38
勝手にしやがれ( ゜∀゜)
441:デフォルトの名無しさん
07/05/26 13:00:49
>>438-439
URLリンク(srfi.schemers.org)
442:ジュリー
07/05/26 13:03:34
♪せめて~ 少しはカッコ付けさせてくれ~
443:デフォルトの名無しさん
07/05/26 21:50:17
>>441
それめっちゃ気持ち悪い。dylan? やっぱりかっこがいい。
かっこいいの!
444:デフォルトの名無しさん
07/05/26 22:10:11
>>442 藁。
445:デフォルトの名無しさん
07/05/26 22:33:45
curlってどうなったの?
446:デフォルトの名無しさん
07/05/26 23:41:43
>>441
なんかスカスカで見た目にかっこわるい
447:デフォルトの名無しさん
07/05/27 00:39:40
>>441
python 以上にキモい……
448:デフォルトの名無しさん
07/05/27 15:07:27
なんかMLみたいになっちゃってるね。
449:デフォルトの名無しさん
07/05/27 16:33:48
これがそんなにキモイか?
define (fac x)
if (= x 0) 1
* x
fac (- x 1)
じゃあこうしよう
define (fac x)
{
if (= x 0)
{
1 (* x)
}
{
fac (- x 1)
}
}
450:デフォルトの名無しさん
07/05/27 16:40:56
K&R派なオレはそのifの書き方見るとイライラしてくるんだよねw
451:デフォルトの名無しさん
07/05/27 16:44:10
>>449
{ } の代わりに ( ) にしてみてもいいかも
452:デフォルトの名無しさん
07/05/27 16:47:59
>>449
どうでもいいが式が間違ってるぞ
まあ前者はインデントが浅すぎでキモく見えるだけじゃないのか?
453:デフォルトの名無しさん
07/05/27 16:52:20
インデント文法で一番有名なPythonは20年後はもう衰退していると思うが、
この手法はSchemeと一緒に30年後も生き残っていそう。
それで、インデント文法はSchemeが元ネタだ! と騒ぐ信者が出現
454:デフォルトの名無しさん
07/05/27 16:55:51
>>442
山口百恵のロックンロールウィドウもよろしく
455:デフォルトの名無しさん
07/05/27 22:28:34
Schemeのマクロについてなんですけど、
本体の展開よりも引数の評価を先にするようなトリックってありませんかね?
構造体を定義するマクロを自分でも書いてみようと思ったんですけど、
構造体名structure-nameを与えられてmake-structure-nameという名前の関数を定義する事さえ難しいという現実に直面してしまいました。
グローバル定義だけならevalでお茶を濁す手もあるんですが…
R6RSで導入予定というsyntax-caseもちょっと使ってみたんですが、
まだ標準化されていないせいか、処理系によって違いが結構あるので
今は乗り換えるのを見送ろうと思ってます。
456:デフォルトの名無しさん
07/05/27 22:59:32
よく思うことなんだが、言葉でくどくど説明されてもよくわからん。
簡単なテストケースを書いてくれ
457:デフォルトの名無しさん
07/05/27 23:10:37
;(define-syntax my-define-structure
; (syntax-rules () ((my-define-structure name slot ...)
; (define (string->symbol (string-append "make-" (symbol->string name))) (lambda (…
などとして、新しいシンボルを作ってそれを束縛したいのです。
defineは第1引数に式はおろか、準引用すら許しませんから困ってます。
そこで、マクロに展開されてdefineが評価される前に引数がシンボルに展開されれば、と考えました。
これは黒田氏が指摘している問題の一つな気がします。
Shiro氏も
・せめてシンボルの生成くらいはr5rs内で出来て欲しいってのはありますね。
とおっしゃってますし、正攻法ではどうも解決できない気がします。
プリプロセサを書くしかないのでしょうか?
458:デフォルトの名無しさん
07/05/27 23:14:04
混乱してるからクドクドとなるんであって、
簡単にはテストケースを書けないんだろ。
459:デフォルトの名無しさん
07/05/27 23:15:44
defineは第一引数に関数呼び出しはおろか、特別式すら、が正しかったですね
460:デフォルトの名無しさん
07/05/27 23:18:21
>>457
前スレ172みたいなのをコンパイル時にやりたいっつーことだな。
それならやっぱsyntax-case必要だろう。
461:デフォルトの名無しさん
07/05/27 23:29:23
define-macroでできるだろ
462:デフォルトの名無しさん
07/05/27 23:30:37
>>460
うわぁ、古い方の過去ログは読んだのですが、最近のは読んでませんでした。
全く同じですね。
syntax-case使うなら、やっぱりchezでしょうか?
私は主にmzschemeかscheme48かGambit-Cなので、syntax-caseはmzschemeしか使えないし、
chezのものとは少し違うようなので、
ポータビリティを考えたらCL的マクロに逃げるのがベターか、などと考えてます。
あまり関係ありませんが、Gambit-Cのsyntax-rulesを使えるようにするファイルは、syntax-caseが使えないのになんでsyntax-case.scmなのでしょうね。
463:デフォルトの名無しさん
07/05/27 23:31:31
>>461
もちろん、CL的アプローチでは簡単です。
標準仕様の範囲でできるかどうか、という問題です。
464:デフォルトの名無しさん
07/05/27 23:49:36
syntax-caseで書くならこんなカンジか?
(define-syntax define&
(lambda(x)
(syntax-case x ()
((k sym obj)
(with-syntax
((s
(datum->syntax-object (syntax k)
(eval (syntax-object->datum (syntax sym))
(interaction-environment)))))
(syntax (define s obj)))))))
petite chez schemeで試してみたが、こういうテストケースでは動くことを確認した。
(define& (string->symbol (string-append "a" "b")) 1)
ab ;-> 1
結局のところ、今はschemeに足りないところがあるのはそのとおりだと思う。
でもな、完成されたものを使うだけってつまらないと思うわけ。
マクロに関しても色んな提案があってそれぞれ細かい部分で利点も問題点もかかえてて、
それがどう収束していくかってなかなか面白いことじゃないか。
ま、仕事で使うならそうもいってられんのだろうが。
465:デフォルトの名無しさん
07/05/28 00:05:51
仕事で Scheme 使っている人ってここにいるんですかね
466:デフォルトの名無しさん
07/05/28 00:10:20
使ってた。納品物ではなく自家ツール用だけど。最近はCommon Lispのほうが多い。
467:デフォルトの名無しさん
07/05/28 00:11:34
>>464
あなたのプログラムを見て初めて私のsyntax-caseがうまく動かなかった理由が分かりました!
ありがとうございました。
IBMにあるメタプログラミング技法を読んでsyntax-caseを勉強したのですが、
datum->syntax-objectの第1引数の(syntax k)のkはマクロ名にマッチする識別子だったんですね。
syntax-rulesではマクロ名にマッチした識別子は特に使い道がなかったので気がつきませんでした。
468:464 ◆3.JjF77I26
07/05/28 00:26:11
>>467
ここにsrfi-93の日本語訳があるぞ。
URLリンク(www.katch.ne.jp)
> 手続き datum->syntax は引き数として、
> テンプレート識別子 template-id と任意の値 datum のふたつをとる。
>
> (datum->syntax template-id datum)
>
> この手続きは template-id と同一の文脈情報をもつ、
> datum の構文オブジェクト表現を返す。 このとき、
> この構文オブジェクトは datum (訳注: template-id か)が
> 挿入されたのと同時にコードに挿入されたかのようにあつかわれる。
schemeのマクロではただシンボルを置き換えればいいってもんじゃなく、
文脈がからんでくるってこと。
ところでこの文書ではdatum->syntaxってなってるけど、
chez schemeを含むいくつかの系ではdatum->syntax-objectって名前なので注意。
469:デフォルトの名無しさん
07/05/28 01:05:53
>>468
ありがとうございます。
読んでみました。
いろいろ勘違いしているところもありました。
しばらくsyntax-caseの勉強に励もうと思います。
470:デフォルトの名無しさん
07/05/28 13:38:52
462でGambit-Cはsyntax-caseが使えないと書きましたけど
ちゃんと使えますね。
なぜか勘違いしてたみたいです。
471:デフォルトの名無しさん
07/05/28 18:02:01
syntax-caseて処理系に依存するの?
472:デフォルトの名無しさん
07/05/29 00:38:39
syntax-case 面倒臭すぎる
阿呆な質問なんだが scheme にも cl のパッケージの概念導入
できないものなんだろうか…?何か問題でもあるの?
473:デフォルトの名無しさん
07/05/29 00:39:19
srfi を書いて提案しましょう
474:デフォルトの名無しさん
07/05/29 01:05:37
Mona OS が関数型言語 Scheme のシェルを搭載してリリース
URLリンク(slashdot.jp)
475:デフォルトの名無しさん
07/05/29 01:41:35
>>472
schemeでは名前空間を分離しない(?)原則みたいなのがあるとかなんとか言ってなかっったっけ?
476:デフォルトの名無しさん
07/05/29 07:30:57
R6RSに入るんじゃなかった?>パッケージもどき
477:デフォルトの名無しさん
07/05/29 09:42:05
R6RSって出ないんじゃなかったっけ?
478:デフォルトの名無しさん
07/05/29 09:48:50
じゃR7RSで
479:デフォルトの名無しさん
07/05/29 22:22:37
もうR2D2でいいよ。
480:デフォルトの名無しさん
07/05/29 22:29:12
むしろR2D2の方がいいよ
481:デフォルトの名無しさん
07/05/29 22:34:26
100万言語に対応してるんだっけ?
482:デフォルトの名無しさん
07/05/29 22:34:41
schemeから派生した言語って何かありますか?
luaがそれっぽいですが
483:デフォルトの名無しさん
07/05/29 22:56:26
Tとか
484:デフォルトの名無しさん
07/05/29 23:14:15
4/1にc.l.lでr7rsは発布されとったよ。w
URLリンク(groups.google.co.jp)
485:デフォルトの名無しさん
07/05/30 00:29:39
luaはべつにschemeと関係ないよ
486:デフォルトの名無しさん
07/05/30 04:02:59
このスレ住人としてluaの存在ってどうよ
末尾再帰とかゲームで採用されたりとかむかつかね?
しめとくか?
487:デフォルトの名無しさん
07/05/30 04:14:07
schemeも採用すればよかんべ。
488:デフォルトの名無しさん
07/05/30 05:21:59
schemeがシェルに採用されたMonaOSが話題にならない件
489:デフォルトの名無しさん
07/05/30 05:52:53
Scheme流行りの昨今
490:デフォルトの名無しさん
07/05/30 06:00:40
Schemeは黒板専用言語のくせになまいきだな
491:デフォルトの名無しさん
07/05/30 08:54:57
確かにリリカルLispは黒板使ってたなww
492:デフォルトの名無しさん
07/05/30 10:59:04
>>486
むかつく理由が理解できない
493:デフォルトの名無しさん
07/05/30 15:20:35
>>486 は常に敵を探しているタイプ
494:デフォルトの名無しさん
07/05/30 17:36:51
小鳥みたいですね
495:デフォルトの名無しさん
07/05/30 19:36:20
歌が好きだったりしますか?
496:デフォルトの名無しさん
07/05/30 20:33:49
>>495
俺が好きなのは君だけさ
497:デフォルトの名無しさん
07/05/31 11:09:22
read-from-stringは多値を返すのですが、
それぞれを別の変数に入れる方法はありますか?
(read-from-string "459")
459
3
たとえば xとyに 459と3を入れる方法が知りたいです。
498:デフォルトの名無しさん
07/05/31 11:27:35
>>497
multiple-value-bind
499:デフォルトの名無しさん
07/05/31 11:32:57
>>498
ありがとう
失礼ですが、LISP暦は何年でしょうか?
500:デフォルトの名無しさん
07/05/31 11:35:49
multiple-value-bind とか multiple-value-setq とか。
CL-USER> (multiple-value-bind (x y) (read-from-string "459") (list x y))
(459 3)
CL-USER> (multiple-value-setq (x y) (read-from-string "459"))
459
CL-USER> x
459
CL-USER> y
3
501:デフォルトの名無しさん
07/05/31 12:55:18
letでレキシカル変数(LISPでは何?)として定義したhyoを成功のパターンで試すと正しくできますが、
失敗パターンのように要素?を""で囲むと正しく取得できません。
要素を""で囲っても正しく表引きしたいのですがLISPではどうするのでしょうか?
;=== 成功 ===
(let (
(hyo '((A 80) (B 70) (C 100))))
(print (assoc 'A hyo))
"OK"
)
○結果
(A 80)
"OK"
;=== 失敗 ===
(let (
(hyo '(("A" 80) ("B" 70) ("C" 100))))
(print (assoc "A" hyo))
"OUT"
)
×結果
nil
"OUT"
まだよくわかっていないのですが、
""とすると文字列限定される?ということでしょうか?
502:デフォルトの名無しさん
07/05/31 13:13:22
(assoc "A" hyo :test 'equal)
503:デフォルトの名無しさん
07/05/31 13:16:53
assocは普通はequal比較だから同じ文字列なら見つかると思うのだが、
数あるlisp方言の中にはそうでないのもあるのかな?
ちなみにemacs lispで実行してみたらこうなった。
(let (
(hyo '(("A" 80) ("B" 70) ("C" 100))))
(print (assoc "A" hyo))
"OUT"
)
("A" 80)
"OUT"
使ってる処理系が何かを示せばより的確な回答を返せる人がいるかもね。
504:デフォルトの名無しさん
07/05/31 13:16:56
>>502
ありがとう
皆さん、簡単に答えますね。
うらやましいです。
505:デフォルトの名無しさん
07/05/31 13:22:59
'eaualより#'equalの方がいくない?
506:デフォルトの名無しさん
07/05/31 13:41:37
>>503
えー、初心者危険
ちなみに xyzzyです。
507:デフォルトの名無しさん
07/05/31 14:07:30
>>505
なぜ?
508:デフォルトの名無しさん
07/05/31 21:46:17
>>499
エディタのカスタマイズ以外にはあんまり使ってないけど三年ちょっとぐらい
>>503
Common Lisp だと eql だよ
509:デフォルトの名無しさん
07/05/31 22:20:34
eq? アドレスの一致
eqv? 値の一致
equal? 構造の一致
文字列の一致に使えるのって
なんとなくeqv?かと思ったけど違うのね。
eqv?の立ち位置って微妙じゃね?
文字列もアトムと考えればeqv?で良い気がするけど。
510:デフォルトの名無しさん
07/05/31 22:23:46
>>507
わずかに速い気がする
511:デフォルトの名無しさん
07/05/31 22:28:07
>>508
すまん、普段emacs lispとschemeしか使わないのでCommon Lispの
ことがすっかり頭から抜け落ちていた
512:デフォルトの名無しさん
07/05/31 23:32:42
>>509
文字列も場所の列だからベクタと同じ扱いなんじゃなかろうか
string-set! とかあるし
513:デフォルトの名無しさん
07/05/31 23:51:57
あと二次元配列 O(1)でアクセスできるタイプ(効率重視)で
perlで以下のことがLISPではどのように書くのでしょうか?
*定義
$cell['A'][1] = ('国語' 100) <-- Lispのリスト
$cell['A'][2] = ('算数' 20) <-- Lispのリスト
$cell['A'][3] = ('理科' 30) <-- Lispのリスト
$cell['B'][1] = ('家庭科' 90) <-- Lispのリスト
*呼び出し
% print $cell['A'][2];
['算数', 20]
514:デフォルトの名無しさん
07/06/01 00:02:00
>>513
なんか日本語がよくわからないんだが、
多次元配列なら aref に次元の数だけ引数を渡す
(aref #2A((1 2 3) (4 5 6)) 1 2)
=> 6
ところで多次元配列って Lisp では使ったことないんだけど、どういう時使う?
515:デフォルトの名無しさん
07/06/01 00:15:09
>多次元配列って Lisp では使ったことないんだけど、どういう時使う?
まだ構文を覚えている最中で、どういう時に使うかまだでは考えていなかったのです。
LISPでは、多次元配列という考え方でなく別の方法で対処しているということでしょうか?
LISPらしい書き方を学ぶにはどうしたら良いのでしょうか?
私はPerlはかじっておりますので、perlと対比できたらわかりやすいです。
#2Aは何を意味するのでしょうか?2はニ次元Aは????
#3Bにしたらエラーになりました。
516:デフォルトの名無しさん
07/06/01 00:21:36
ちょっとは調べろよwww
517:デフォルトの名無しさん
07/06/01 00:30:49
>>514
ベタな例だけど行列とか
518:デフォルトの名無しさん
07/06/01 01:04:32
ある処理系での多次元配列の例
CL-USER>(make-array '(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
#20A((((((((((((((((((((0))))))))))))))))))))
519:デフォルトの名無しさん
07/06/01 01:08:02
20次元配列とかw
まあ、全て2要素にした程度でも凄いサイズになるけどな。
扱えないレベルではないけど。
520:デフォルトの名無しさん
07/06/01 01:13:53
>>501-503
Hyperspecに答えが書いていたね。
URLリンク(www.lisp.org)
のexamplesをみてみて。
521:デフォルトの名無しさん
07/06/01 01:18:38
>>514
一番ありがちなのは lispで行列計算をしている場合。ライフゲームなどの
2次元空間グラフィック。そんなところじゃないのか
522:デフォルトの名無しさん
07/06/01 04:04:33
schemeでany や every は any? every?じゃないんだな。
523:デフォルトの名無しさん
07/06/01 05:33:21
(any hoge? ...) という使い方になるわけだから俺には違和感ないな。
524:デフォルトの名無しさん
07/06/01 05:38:40
anyはブール値を返すわけじゃないからじゃね?
525:デフォルトの名無しさん
07/06/01 06:49:57
for-all、existsとの違いがイマイチ
526:デフォルトの名無しさん
07/06/02 20:21:56
このスレのレベルが急速に低下してるな……
527:デフォルトの名無しさん
07/06/02 20:25:51
...and justice for all
528:デフォルトの名無しさん
07/06/02 22:25:07
関数型系の複数のスレに、全く同じレス付けてる >>526 って何なの?
529:デフォルトの名無しさん
07/06/02 22:46:56
>>527
'((justice is lost) (justice is raped) (justice is gone))
530:デフォルトの名無しさん
07/06/02 23:21:29
>>528
休みの日にデパートの屋上から路上を眺めるのが趣味の人なんじゃないの
531:デフォルトの名無しさん
07/06/02 23:34:40
今の時代なら、休みの日にgoogleで海岸とかプールを拡大して
凝視してる人だろ
532:デフォルトの名無しさん
07/06/02 23:48:09
LIVE映像じゃないと、ちょっと行為としてしっくりこない気がする。
533:デフォルトの名無しさん
07/06/02 23:51:27
では、ライブカメラを漁ってる人
534:デフォルトの名無しさん
07/06/03 16:55:16
Lispは型推論を持たない
535:デフォルトの名無しさん
07/06/03 16:55:45
唐突にどうしたんだぜ?
536:デフォルトの名無しさん
07/06/03 17:16:00
ヒント:日曜日
537:デフォルトの名無しさん
07/06/03 17:37:08
>>536
正解!
538:デフォルトの名無しさん
07/06/03 18:34:02
LISPに ne 等しくないという等号はありますか?
539:デフォルトの名無しさん
07/06/03 18:44:09
(defun ne (x y) (not (eq x y)))
540:デフォルトの名無しさん
07/06/03 19:04:01
「等しくないという等号」にすげぇ違和感
541:デフォルトの名無しさん
07/06/03 19:09:59
そうですね
はい次。
542:デフォルトの名無しさん
07/06/03 23:27:36
pushすると
("C" "B" "A")となりますが
例えば、
(def test(x lst)
...
)
(setq lst '())
(test "A" lst)
(test "B" lst)
(test "C" lst)
(print lst)
で("A" "B" "C")とするには、どのようにtest関数を作ればよいのでしょうか?
pushした後 reverseせず、純粋に("A" "B"..というリストを作りたいです。
543:デフォルトの名無しさん
07/06/03 23:35:57
>pushすると
>("C" "B" "A")となりますが
なりませんでした
はい次。
544:デフォルトの名無しさん
07/06/03 23:40:12
>>542
何故そんなに push を嫌うのか分からん
545:デフォルトの名無しさん
07/06/03 23:45:09
rplacdでマクロ作ればいいんじゃね
546:デフォルトの名無しさん
07/06/04 00:17:17
push して nreverse が一番効率いいと思うがな
547:デフォルトの名無しさん
07/06/04 00:42:34
誰一人>>543の仕切りに従ってない点について。
548:デフォルトの名無しさん
07/06/04 00:49:08
そりゃー2chだもの
549:デフォルトの名無しさん
07/06/04 00:54:11
拝啓547様
正しいマナーが根付くには時間がかかるものです。
悪癖は容易には正されません。
円滑なスレ進行のため今後も努力する所存です。
543
550:デフォルトの名無しさん
07/06/04 00:55:35
うまく人を逆撫でできる人は自分の話題に持ち込めるけど、
単なる阿呆、とだけ思われてオシマイだと、うち捨てられて終わりなんだよね。
551:デフォルトの名無しさん
07/06/04 03:29:47
>>542
君が欲しいのはこんな感じのものでは?
(defmacro test (x lst) `(setq ,lst (append ,lst (list ,x))))
でも>>546の言うとおり、pushしてnreverseのほうがたぶん速いよ。
552:デフォルトの名無しさん
07/06/04 04:08:00
多分 queue が使いたいんじゃないかなーと思った。
553:デフォルトの名無しさん
07/06/04 13:51:23
Common Lispらしいという意味ではfill pointer付きarrayという手もあるな。使ったことないけど。
554:デフォルトの名無しさん
07/06/04 21:13:09
>>553
コンシングを減らすために使ってみたことあるよ。
おれがヘボなせいかあんま高速化しなかったけどorz
cl-user(5): (setq vec (make-array 10 :fill-pointer 0 :adjustable t))
#()
cl-user(6): (vector-push "a" vec)
0
cl-user(7): (vector-push "b" vec)
1
cl-user(8): (vector-push "c" vec)
2
cl-user(9): vec
#("a" "b" "c")
cl-user(10): (concatenate 'list vec)
("a" "b" "c")
555:デフォルトの名無しさん
07/06/05 00:50:01
>>542
それはマクロでやると簡単。
(defmacro test (x lst)
`(setf ,lst (append ,lst (list ,x))))
556:デフォルトの名無しさん
07/06/05 01:02:27
既にでてたorz.
557:デフォルトの名無しさん
07/06/05 03:19:49
nreverseの方が早いっていうのは
appendが新しいリストをconsセル一つ一つつなげて返すのに対して
nreverseは元のリストを破壊操作で処理するからって言うことで正しいですか?
558:デフォルトの名無しさん
07/06/05 07:17:24
最後に付け加えるのが時間かかるってことじゃない?
nreverse なら cons セルのつなげかえをするだけなので O(n) なのに対して、
リストの最後に付け加えていくのはリストが長くなるほど
たどる量が増えて O(n^2) になる、っていうことだと思う。
559:デフォルトの名無しさん
07/06/05 14:06:30
FreeBSD6.2RELEASEでGauche0.8.7をつかっています。
(inc (dec inc))と(1 2 3)を入力として与えると
(2 (1 4))を返すような関数が欲しいんですけど、
なんか既にあるような気がします。
こ存じないですか?
560:デフォルトの名無しさん
07/06/05 14:16:59
(define (foo x y) '(2 (1 4)))
561:デフォルトの名無しさん
07/06/05 15:58:34
そんな変な関数ある気がしないw
562:559
07/06/05 16:20:06
そうですか…
リストを構造体に見立てて、
別の構造体に変換するような操作は結構あるような気がしたんですが…
だとすると俺のやりかたが間違っているんだろうか。
ちょっと違う形になりましたけど、とりあえず書いたもんさらしてみます。
(define (general-apply syn args)
(eval `(,syn ,@args) (interaction-environment)))
(define (data-convert index record convert-rule)
(general-apply 'let (list (zip index record) convert-rule)) )
で、
(data-convert '(a b c) '(1 2 3) '(list (inc a) (list (dec b) (inc c))))
みたいな使い方をします。
563:デフォルトの名無しさん
07/06/05 16:27:00
いまいちよくわからないんだけどutil.matchみたいなことを考えているのかな。
URLリンク(practical-scheme.net)
564:559
07/06/05 17:31:16
>563
おお、なんかこれでよさそうです。
ありがとうございました。
565:デフォルトの名無しさん
07/06/08 16:24:42
wilikiのスタイルシートってcgiと同じディレクトリにおけばいいの?
全然うごいてくれない
566:デフォルトの名無しさん
07/06/08 17:15:18
吐かれたHTML読んでみたら?
567:デフォルトの名無しさん
07/06/08 20:38:12
>>565
キーワード引数で :style-sheet のとこにスタイルシート名を指定すること。
568:565
07/06/10 14:51:28
結局解決できませんでした
しかたないのでpukiwikiをインストールします
569:デフォルトの名無しさん
07/06/10 15:02:04
うんそれがいいよ
570:デフォルトの名無しさん
07/06/12 00:38:23
(if (解決-p 565)
(install wiliki)
(install pukiwiki))
残念。。
571:デフォルトの名無しさん
07/06/12 00:56:25
pukiwikiをschemeで書き直せばいいじゃん
572:デフォルトの名無しさん
07/06/12 00:59:38
ウッキ、ウッキ、ウィッキー
573:デフォルトの名無しさん
07/06/12 01:01:44
わかったよブービー(´・ω・`)
574:デフォルトの名無しさん
07/06/12 01:03:49
ウィッキーさん元気してるかね?
なつかしすなー
575:デフォルトの名無しさん
07/06/12 04:45:52
ウィッキー→みのもんた
だと思ってた時期が(ry
576:デフォルトの名無しさん
07/06/12 21:31:35
ウィッキーは落語家のえーっと鶴なんとか
577:デフォルトの名無しさん
07/06/13 21:15:05
(define port (open-input-file "c:\\tmp\\data.txt")
(define line (read-line port))
(append lst (line))
テキストファイルから、一行ずつ読み込んでリストに加えて行くという処理を書いてるのですが、
3行目の(line)でエラーになります。
こういう場合、どう書けばいいんでしょう?
578:デフォルトの名無しさん
07/06/13 21:17:35
どんなエラーとか書こうぜ
579:デフォルトの名無しさん
07/06/13 21:32:15
>>578
> gosh: "error": invalid application: ("aaa")
こんな感じです。
"aaa"は、テキストファイルから読み込んだ内容になってます。
580:デフォルトの名無しさん
07/06/13 21:50:46
(append lst line)
581:デフォルトの名無しさん
07/06/13 21:56:13
質問です。
リテラルを破壊的に変更してはいけないといわれますが、次のような場合もでしょうか?
(do ((i 10 (- i 1))
(r '() (cons i r)))
((zero? i) (reverse! r)))
(reverse r) と書くべきなんでしょうか?
582:デフォルトの名無しさん
07/06/13 21:58:39
>>581
その例ならリテラルを破壊的に変更はしないと思う
583:デフォルトの名無しさん
07/06/13 22:08:26
>>582
じゃあ、次の場合はどうでしょうか。
リテラルを破壊的に変更してしまっているので、(reverse r) と書くべきでしょうか?
(do ((i 0 (- i 1))
(r '() (cons i r)))
((zero? i) (reverse! r)))
584:デフォルトの名無しさん
07/06/13 22:12:33
wiliki の質問スレはどこですか?
585:デフォルトの名無しさん
07/06/13 22:13:31
>>583
空リストはそもそも破壊できるような物ではないので大丈夫
586:デフォルトの名無しさん
07/06/13 22:16:52
>>585
じゃあ、空リストでない次の場合には破壊的に変更しているので、
(reverse r) と書くべきですね?
(let ((lst '(a b c)))
(do ((i 0 (- i 1))
(r lst (cons i r)))
((zero? i) (reverse! r))))
587:デフォルトの名無しさん
07/06/13 22:17:53
>>586
そう。こういう場合は reverse! は厳禁。
588:デフォルトの名無しさん
07/06/13 22:23:03
>>587
なるほど、やっと解ったような気がします。どうもありがとうございました。
589:デフォルトの名無しさん
07/06/16 11:57:56
lisp厨、必死だなw
590:デフォルトの名無しさん
07/06/16 17:34:58
ここはlisp厨のスレだが何か?
591:デフォルトの名無しさん
07/06/16 18:47:59
チュウチュウうるさいなぁ、おまえらそんなにチュウが好きならスペースチャンネル5でもやってろ!
592:デフォルトの名無しさん
07/06/16 20:57:21
Squeakもあるぜよ
593:デフォルトの名無しさん
07/06/16 22:15:21
本谷有希子さんとチュウしたい
スレリンク(book板)
594:デフォルトの名無しさん
07/06/18 14:29:24
FreeBSD6.2RELEASEでGauche0.8.10[utf-8]を使っています。
字句解析を使用と思い、以下の様なコードを書きました。
(define (lex-analyze inpx)
;; inpx: input port
(define (op? inpx)
(define op-char #\()
(if (char=? op-char (peek-char inpx))
(begin
(read-char inpx)
(cons 'op (list op-char)) )
#f ))
(define (cp? inpx)
(define cp-char #\))
(if (char=? #\) (peek-char inpx))
(begin
(read-char inpx)
(cons 'cp (list cp-char)) )
#f ))
595:594
07/06/18 14:31:06
(define (ws? inpx)
(if (char-whitespace? (peek-char inpx))
(let loop ((r (list (read-char inpx)))
(nc (peek-char inpx)) )
(if (char-whitespace? nc)
(loop (cons (read-char inpx) r) nc)
(cons 'ws (reverse r)) ))
#f ))
(define (wd? inpx)
(define (allowed-char? x) (not (char-whitespace? x)))
(if (allowed-char? (peek-char inpx))
(let loop ((r (list (read-char inpx)))
(nc (peek-char inpx)) )
(if (allowed-char? nc)
(loop (cons (read-char inpx) r) nc)
(cons 'wd (reverse r)) ))
#f ))
(define tokens (list op? cp? ws? wd?))
(define (f inpx)
(let loop ((t tokens))
(cond ((null? t) #f)
(((car t) inpx) => values)
(else (loop (cdr t))) )))
596:594
07/06/18 14:32:01
(let loop ((r '()))
(if (eof-object? (peek-char inpx)) (reverse r)
(loop (cons (f inpx) r)) ))
)
ここで、
echo '(+ 1 2)' > /tmp/hogeして作ったファイルを、
(define inp (open-input-file "/tmp/hoge"))として読み込ませて、
(lex-analyze inp)としたのですが、結果が返ってきません。
どうやら、2を読み込むところで時間がかかっている様なのですが、
どうしたらよいのでしょうか。
597:デフォルトの名無しさん
07/06/18 16:27:31
答えじゃなくて悪いんだけど、
(let loop ((r (list (read-char))) (nc (peek-char)))
letの束縛規則により、read-charとpeek-charの
どっちの副作用が先に適用されるのか不明ですよ。
Cの関数呼び出し時の引数でgetcとungetcを同時にしてると考えてください。
598:デフォルトの名無しさん
07/06/18 16:28:16
とりあえずそのallowed-charでは ) も #t にしてしまう。
599:デフォルトの名無しさん
07/06/18 16:39:34
(loop (cons (read-char) r) nc)
ncが更新されてないよ。
peek-charを使わずに書き直した方が良いのでは。
600:デフォルトの名無しさん
07/06/18 16:51:06
>>599
let loopの内側に(let ((nc peek-char)) ... ) でいいでしょ
それよりファイル末尾がwhitespaceの列だったりするとws?がeof読もうとして死ぬ
601:デフォルトの名無しさん
07/06/18 17:18:39
そういえばchar=?で#<eof-object>を比較して大丈夫なの?
602:デフォルトの名無しさん
07/06/18 17:39:44
wd? は whitespace でしか終了しないでしょ。
ということは、 "2)" まで wd? で読み取って eof になっているが、 eof に対処するコードが wd? にないのでここで終了できなくなっている。これが原因でしょう。
仮に (+ 1 2 ) のように2と閉じカッコのあいだに空白を入れてみてごらん。それなら終わるから。
あと Gauche を使ってるなら text.parse とか便利なライブラリがあるから、そういうのを使った方がすっきり書けるよ。
ws? みたいなやつは skip-while を使えば一発だし。
603:594
07/06/18 18:32:44
>597
それは気づきませんでした。
ありがとうございます。
>598
すいません、怠けたかっただけなんです…
でもそのせいみたいですね。
>602
ありがとうございます。
(+ 1 2 )にしてもエラーで止まってしまいます。
でもそこら辺にもんだいがありそうですね。
もう少しやってみます。
それからこれは自分でパーサを書いてみよう、という試みなので、
ライブラリを使うのは無しです。
でも参考にしてみようと思います。
みなさんありがとうございました。
604:デフォルトの名無しさん
07/06/18 20:08:26
文字はリストやストリームとしていつでも取り出せるように蓄えとくと
バックトラックとか副作用気にせずできて便利っすよ。
named-let活用したいみたいだしCPS勉強すると良いでしょう。
例えばトークン抽出時や#f返してる所は末尾コンテキストだから、
そのまま他の判定処理にたらい回しして継続できるし。
慣れればread-charとかのI/O操作は違うレイヤーとして管理できるよ。
605:デフォルトの名無しさん
07/06/18 21:37:01
今日初めてreaderマクロなるものとCL-YACCと言う物を体験しました。
惚れた、もっと昔に食わず嫌いしないでやっておけばよかった。
ちょいとのめり込み中。
606:デフォルトの名無しさん
07/06/20 20:12:56
リストから、n番目の要素を削除して、その削除した要素を返す関数を書きました。
まず下のような感じで書いたのですが、これだと、nが0の場合にエラーになります。
(define (remove-at! ls n)
(let loop((prev '()) (rest ls) (count n))
(if (zero? count)
(begin
(set-cdr! prev (cdr rest))
(car rest))
(loop rest (cdr rest) (- count 1)))))
それで、nが0の場合は別に処理を入れてみたのですが、破壊的操作で、リストの先頭を削除するのがどうしてもわかりません。
どう書けばいいでしょうか?
(define (remove-at! ls n)
(cond
((null? ls) '())
((zero? n)
(let
((tmp (car ls)))
(set-cdr! ls (cdr ls)) ;; ここがダメ
tmp))
(else
(let loop((prev '()) (rest ls) (count n))
(if (zero? count)
(begin
(set-cdr! prev (cdr rest))
(car rest))
(loop rest (cdr rest) (- count 1)))))))
607:デフォルトの名無しさん
07/06/20 20:41:55
>>606
> 破壊的操作で、リストの先頭を削除するのがどうしてもわかりません。
そういうことは原理的にできない。(理由は考えてみるべし)
append! で第一引数が () の場合なども同様で、結果は明示的に返す必要がある。
608:デフォルトの名無しさん
07/06/20 21:24:07
(define (remove-at! ls n)
(if (null? ls)
(error "list too short")
(if (zero? n)
((lambda (tmp)
(set-car! ls (cadr ls))
(set-cdr! ls (cddr ls))
tmp)
(car ls))
(remove-at! (cdr ls) (- n 1)))))
609:デフォルトの名無しさん
07/06/20 21:42:44
>>607
>(理由は考えてみるべし)
Cだったら、下のようなコードで、仮引数のほうを書き換えて、実引数が変化しないって悩んでるようなもんですかね?
struct cell {
struct cell* next;
const char *symbol;
};
const char* remove_at(struct cell* p, int n)
{
p = ・・・・
・・・
}