- 1 名前:デフォルトの名無しさん [2008/07/12(土) 12:43:33 ]
-
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) (url pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4))
- 321 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 06:36:23 ]
- >>317,319,320
,性格の悪いことばかり言わない。なんだか陰気なのよね。雰囲気悪くなるから、 スルーしてくれたら助かる。
- 322 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 10:13:03 ]
- >>318
そこでコンソールからmanと打ち込んでみるのが好奇心だと思うのよね。
- 323 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 13:48:07 ]
- >>321
> スルーしてくれたら助かる。 誰が何をスルーしたら誰が助かるんだ? 「こういうの俺が嫌だから黙れ」って方がよっぽどネチネチ感漂ってるけどな。
- 324 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 13:51:56 ]
- >>321
そんなこと書くより、雰囲気の悪いレスはスルーして、自分が雰囲気の良いレス をするほうが効果的だと思うよ。お互い、芸風の合わない人はスルーで良かろう。w
- 325 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 14:56:42 ]
- >>321
スルーしてくれよ。
- 326 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 17:57:20 ]
- >>316
なんだか嫌味を言う連中もいるようだが、気にせずに気楽に書き込んでください。 一部の連中を懸念してるが、 嫌味っぽくなると初心者さんたちは何も聞けなくなるのではないか?ということだ。 嫌味ったらしい事を言う背景には単なる初心者いじめではなくて、 ストレス発散に使ってる印象もある。common lispの立場をよく考えてもらいたい。 一人でもどんな初心者でも馴染めるように支援していきたいからね。甘えん坊の初心者 だろうが跳ねっ返りだろうが関係ないどちらも大切だ。 LL系のようにほっといても初心者が使いにくる言語なら嫌味を言う連中は勝手に言っとれ だが、common lispの状況は死活問題だよ。状況を踏まえて欲しいのだ。独学でcommon lispを学べる人ってそんなにいないでしょ? 一部の連中には自ら首を閉めるようなおろかな事をしないでくれといいたいのだ。
- 327 名前:デフォルトの名無しさん [2008/08/09(土) 17:58:03 ]
- >>318
> Unix で man よめって言われても, 「man って何」くらいは教えてもらわないと、 > なすすべがない。 実際、俺も Unix 触り始めたときそんな状況だった。 ググりもしないのに質問とな(AAry man 読む unix に一致する日本語のページ 約 212,000 件 man 使い方 に一致する日本語のページ 約 1,040,000 件 関連検索: linux man 使い方
- 328 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:04:10 ]
- >>327
SunOS-3.5 って知ってる? 当時 Sun3 にのってた OS のバージョンなんだが ググる? UUCP でバケツリレーやってるときに google なんかねぇよw
- 329 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:14:37 ]
- まあ、初心者への説教は、Common Lispしらなくてもできるし、
どうしても、書き込みの量が増えるんじゃない? 自転車置場の議論とかそういうのと一緒で。 どっちかっていうとCommon Lispの情報が少しでも増えるような記述がありがたいね。
- 330 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:15:16 ]
- マニュアル読めよ馬鹿が
- 331 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:58:25 ]
- >>330
ハードとかOSのインストールマニュアルは手元にあったが、off-line の man pages は 新幹線で 3時間ほどかかる本社にしか存在していなかった。 言いたいことは分かるんだが、何でもググれじゃ話が進まない場合もあるってことで…
- 332 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:43:07 ]
- >>329
それって、本当に害人だ。<common lispは知らないが説教だけする。 答えが得られる保証はないが、分からないことがあれば気軽に聞いてください。<初心者
- 333 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:56:52 ]
- clnuplotのインストール方法を一から教えてください。
- 334 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:24:30 ]
- >>333
恐らく元質問の人とは別の人だと思うんだけど、 >>311にも書いたとおり、asdf-installさえ動作していれば、 replに (asdf-install:install :clnuplot) とタイプするだけでおk そして、環境によってちょっと設定する必要あり。
- 335 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:37:56 ]
- >>331
だからなに? そんな時代じゃねーだろ?
- 336 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:56:07 ]
- >>331
こういう年だけ食ってる初心者が一番手に負えないというか害悪だな。
- 337 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:05:05 ]
- 「そう言ってるおまえらは初心者のために何かしてるのか」って、
聞かれてるんだと思うんだが?
- 338 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:18:45 ]
- ここって初心者のために何かするためのスレだっけか?
- 339 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:36:05 ]
- >>1にはそれっぽい雰囲気はあるな
- 340 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 01:45:28 ]
- >>334
それはもう読んだよ。環境によって何をすればいいの?
- 341 名前:デフォルトの名無しさん [2008/08/10(日) 02:03:27 ]
- >>337
あのさー どの世界でも「初心者に厳しく」は常識なんだよ やさしくするのは入門させるための建前
- 342 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 02:14:54 ]
- 初心者に優しくしても「入門した気になった(でも一人じゃ何もできない)」
って人が増えるだけかも。厳しくしたほうが良い子に育つこともある。
- 343 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 02:50:44 ]
- >>326みたいなアホからゆとり教育が生まれるんだな。
- 344 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 07:34:32 ]
- こういうところでゆとり教育のせいにする人って必ずでてくるけど
あれも仕様はそれなりに評価できるし、タコな環境にグダグダの実装でこうなっちゃったんだよなぁ
- 345 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 07:40:48 ]
- >>344
初期の環境の状況は影響でるね。ubuntuでのcommon llisp環境導入のように クリック一発ならば大丈夫だが、windowsでのlisp環境はかなり悪いからね。 windowsメインで利用するようなlispハッカーはいないから整備は進まない罠。 macosxへのインストールも難しくはないが、windowsだけはね。だめだね。
- 346 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 08:05:38 ]
- >>342
私としては方針は決まってるが、無条件に厳しくあたるというのは教える側の思考停止状態 を表している半面、無条件に優しくするのは依存性を高める危険がある。これは極当たり前 の事。そこにはトレードオフがあるし、状況判断ができなければ育つものを枯れさせてしまう だけだ。 匿名だから分かりにくいが、情けは人の為のあらず。 2ちゃんでこのことわざが意味するところは、違った新しいことを始めたときにアドバイスをもら う場面に役立つことだと思う。すべての面で自分で調べて、自分で考えて、悩んだ末で教えて もらうと言う判断を出来てるような自分への厳しい心を持ってる人間はわずかだと思う。それを 踏まえた上で、利用していればいいのではないか。ubuntuではないが助け合いの精神は持っ ておいた方がいいと思うね。 >>340 僕はそのパッケージを利用したことがないから分からないけど、環境によって何をすればい い?と聞くならば、あなたの利用している環境をちゃんと書いてみないとより具体的なコメント は期待出来ない。つまり、どこまで本気に導入を試みてわからないのか聞いてるの だ。環境が分からないままでいろんな事を想定して、そのすべてを答えるような人がでて くることは期待できないぞ。 聞き方や聞くタイミングで少々気になったが、導入を本気で試みているより、住民を試してい るような印象をもったことかな。evilじゃなくて純粋に聞いてるなら気にならないが。 Don't be evil.
- 347 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 08:57:03 ]
- お前2chは初めてか?力抜けよ
- 348 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 12:33:46 ]
- 「情けは人の為ならず」だね。
>>346はふつーにいい人すぐるが、煽られまくって変な反動が起きませんように。
- 349 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:40:56 ]
- >>346
なげーよw
- 350 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:51:18 ]
- CLtLかよ
- 351 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 22:10:16 ]
- ecl 0.9l入れてみた。
明らかにメモリ利用効率良くなってておーって思ったんだけど REPL起動したときのバージョン表示が良く見たら0.9iのままで なんというかポルナレフ状態
- 352 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 23:24:02 ]
- うちは、ちゃんと0.9lって表示になってるなあ
- 353 名前:デフォルトの名無しさん [2008/08/11(月) 00:58:17 ]
- lispでGUI使ったりした普通のそソフトとととこにつくたことあることきょしぃこと
- 354 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:55:35 ]
- >>351
Windows用(MSVC用)のmakefile中のバージョンが0.9iになってた。 >>353 英語でOK
- 355 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:08:48 ]
- Lispで、秀丸みたいなGUIのエディタとか作れるものでしょうか?
できるとしたらお勧めの処理系とかありますでしょうか?
- 356 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:41:57 ]
- エディタを新しく作るより前に既存のものに貢献してほしいな。
Emacsとか、Windowsならxyzzyとか。 処理系が自分で選べないならまだ自作ははやいと思う。 CLISPでWin32 APIをFFIで呼ぶか、ECLとCで作るか、どっちにしても 秀丸みたいなエディタを作ろうとすると、Cでエディタが作れるくらいの知識が居る。 LispWorksのエディタクラスなら10行くらいでEmacsライクだけど 日本語のサポートはまだ弱いし。
- 357 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:50:37 ]
- >>356
それに関して思い出したので、私も質問させて下さい。 >CLISPでWin32 APIをFFIで呼ぶか、 の所なのですが、私はMacOSX環境なのでWin32を使う事ができないのですが MacOSX環境でCLISPから呼び出せるものを教えて頂けないでしょうか
- 358 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:58:47 ]
- は?
- 359 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:06:47 ]
- 俺は使ったことがないので詳しくは知らないけど、OSXならMcCLIMが使えるんじゃなかったっけ?
Climacsという、CLIM上で実装されたEmacsライクなエディタがあるから、参考になるかもしれない。 ttp://common-lisp.net/project/climacs/
- 360 名前:359 mailto:sage [2008/08/12(火) 21:09:47 ]
- なんか俺のレスも迷走してるな。すみません、無視してください。('A`)
- 361 名前:357 mailto:sage [2008/08/12(火) 21:36:21 ]
- GUIの説明が出る際に毎回win32 APIとwinodows環境を基本と
したレスばかりなのですが家にはUNIXとMacOSXとLinuxしか無いのでwinodowsは 触った事も有りません。 そのためどのような環境がUNIX系では使えるのかを教えて頂きたかったのです。
- 362 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:46:49 ]
- OpenMCLからCocoaを呼ぶのが良いんじゃないかな
- 363 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:50:13 ]
- 煽りっぽいが一応マジレスしておこう。↓を調べてみたらどうだろう。
LTK(Tcl/Tk)、CLX(X)、CL-OPENGL(OpenGL)、CL-SDL(SDL) あとはGTKとソケットで通信するやつとかはタフだったな。
- 364 名前:357 mailto:sage [2008/08/12(火) 22:06:02 ]
- >>362-363
ありがとうございます。 煽りでは有りません、マジレスありがとうございます。 調べてみます。その中ではどれがあなたのおすすめですかね? ブラウザとか作りたいのですが
- 365 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 23:26:28 ]
- >>364
362-363じゃないけど WEBブラウザ作るのならCL-OPENGLとCL-SDLは外した方がいい、あとLTKは向かなそう X11ならCLXを選択するのが良いのかもしれないが化粧をさせたいならGTK経由が好いと思うが自分はさわったことないのでワカリマセン。 Webじゃなくグラフィックスのブラウズとかって意味だったらGLやSDLの方が扱いは簡単かも。 というか>>363が書いてくれたGUI関係のライブラリの元が(文中の括弧内のもの)どんなものなのか調べれば自分で選択できると思う。
- 366 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:21:47 ]
- >>357
とりあえず、使ってるOSのフレームワークのことも知らない位なら、 既存のブラウザコンポーネント使って、独自UIを被せる位にしといた方がいいぞ。 GeckoとかKHTMLとか。MacならWebKitとかなのかな。 あまり知識のない状態で、下手に人気のある物作っちゃうと、 特にブラウザとかはセキュリティホールとかが恐すぎる。 単に知的好奇心を満たすため、とかなら大いに応援するんだけど。
- 367 名前:357 mailto:sage [2008/08/13(水) 00:42:13 ]
- >>366
一応Cocoa-Rubyなどでばりばり動くブラウザやテキストエディタ、グラフ作成ソフト などを作った事は有ります。 ですが、Lispでやってみたかったのです。Lispは一番好きな言語ですから。 何しろ調べてやってみる事にします。ありがとうございます。
- 368 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 01:08:59 ]
- >>367
そういう経験があるなら、使ってる処理系のFFIの仕様とか、 それぞれのツールキットの特徴とか、事前に知らずにはいても、 ある程度、調べて把握することくらいはできそうだけどなー。 とはいえ、そちらの詳しい事情は興味無いからこれ以上詮索はしない。 ttp://clisp.cons.org/impnotes/faq.html#faq-gui ttp://www.cliki.net/Graphics%20Toolkit ttp://www.cliki.net/admin/search?words=cocoa
- 369 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 15:32:33 ]
- >>367
どこかわすれたけど、OpenMCL(Clozure CL)でワープロを作って公開しているところ があるよ。MacでGUIならOpenMCLをお勧めするよ。 GUI関連のサンプルもついているし。
- 370 名前:250 mailto:sage [2008/08/17(日) 16:38:13 ]
- Allegro Common LispのGUIのプログラミングがまったくわかりません
みなさんはどうやって覚えましたか?
- 371 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 16:50:43 ]
- 覚えてません
- 372 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 16:59:02 ]
- >>370
なんと言うか'覚えられません'だとLispと言うより プログラミングについての話に成るような気がする。 やっぱり他の言語と同じようにサンプルコードとかを読みながら やるのが良いんじゃないかな?
- 373 名前:370 mailto:sage [2008/08/17(日) 17:31:57 ]
- 言葉足らずですいません
Allegro Common LispでのGUIのサンプルコード自体が見つからなくて困っています
- 374 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 17:43:52 ]
- Graphicsアプリケーションかなあ
www.franz.com/ftp/pub/acl80/pdf/cgide.pdf www.franz.com/ftp/pub/acl80/pdf/acl-common-graphics.pdf こんなのが見つかったけど・・・多分違うと思う 確かに情報が少ないね。Lisp系は情報が少ないからな・・
- 375 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:08:45 ]
- GUIの開発経験はどれくらいですか?MFCとかGTKあたり使ったことあります?
↓チュートリアルとリファレンスで経験者はなんとかするみたいですが。 jp.franz.com/doodler/index-j.htm GUI開発未経験でイベント駆動型開発未経験とするとちょっと難しく感じるかもしれません。
- 376 名前:250 mailto:sage [2008/08/17(日) 19:29:39 ]
- レスしてくださった方ありがとうございます。
イベント駆動型はまだ未経験ですがチュートリアルやpdfを参考にしてがんばりたいと思います
- 377 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 19:33:25 ]
- >>376
Lispあんまり詳しくないけどAllegroのアプリはそんなに面倒じゃなかったよ、例の学習者向けエディションでもちゃんとFormでポイポイつくれちゃうので拍子抜けした。(もちろんロジックは慣れないLispでちょっと苦労したけど) 自分の道具作るのに非常に慣れてきて個人で購入したいんだけど全部franz経由でしか買えないのかなぁ? ショップ売り無いのだよね?
- 378 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:29:15 ]
- 折角DSLが楽に作れる言語仕様なんだから
GUI構築用のDSL作ればいいのに
- 379 名前:デフォルトの名無しさん [2008/08/18(月) 20:58:22 ]
- >>377
Freeエディションのヒープ制限がきつすぎてお試しにすらならんので、 安いなら買ってみようかと思ったんだけど、値段の情報を見つけられんかった。 個人には売る気無いのかな franz経由っていくらでした?
- 380 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:25:38 ]
- >>379
4年前の価格だけど、一応参考までに。 > 717 名前:デフォルトの名無しさん:04/06/29 08:23 > 先日のFranzセミナーでもらった価格表によると… > > Windows/Linux/FreeBSD/MacOS X版 > Professional 750,000 (395,000) > Enterprise 1,400,000 (795,000) > Platinum 2,000,000 (895,000) > > UNIX (Sun, IBM, HP, Compaq)版 > Professional 1,300,000 (520,000) > Enterprise 2,000,000 (1,040,000) > Platinum 2,750,000 (1,200,000) > > …高い… orz > 718 名前:717:04/06/29 08:24 > あ、括弧の中はアカデミック価格ね。
- 381 名前:デフォルトの名無しさん [2008/08/18(月) 22:39:25 ]
- >>380
ありがとう。 ド、ドル?円だよね。あはh高い...唖然
- 382 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 02:06:45 ]
- >>380
それなら、放送大学に入って、student editionのほうがいいんじゃないか? ドル建てで5万円ほどだったから
- 383 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 06:45:18 ]
- LISPですら自作できない無能にはちょうどいい値段
- 384 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 07:26:00 ]
- 委員会で設計した言語が「まともな言語」で
独自に設計した言語はダメだと思ってるらしい。 だから、自作といっても与えられた仕様を満たすことしか考えられないわけだ。
- 385 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 09:29:57 ]
- ↑マジで何を言いたいのか全然解らん、頭の悪い漏れの為に誰か解説してくれ
- 386 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 12:02:33 ]
- 最も致命的なバグは数学で説明できないのだー
- 387 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 14:03:36 ]
- では算数で説明してくれ
- 388 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 18:28:02 ]
- 損切りか塩漬けか
- 389 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 18:43:39 ]
- sbclでいいやん
- 390 名前:デフォルトの名無しさん [2008/08/19(火) 22:20:08 ]
- sbclはmacだとthread使えないじゃん
clozure clに落ち着いたけど 比較するとallegroやっぱ爆速だな。貧乏人なのであきらめるしか
- 391 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 07:36:41 ]
- おれは社会人だから大学院に入りなおして学割でallegro買うぜ
- 392 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 16:05:24 ]
- 貧乏人の味方Linux!!
- 393 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 02:14:31 ]
- そうかな。Linuxは機械を選ぶからなあ。
値段的コストから見れば貧乏人向けではあるが、 きちんと選ばないと逆に高く付いてしまう。 時給換算的に。
- 394 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 09:53:37 ]
- 俺時給換算で最低時給未満の生産性しか無い人間ですから大丈夫ですよ
- 395 名前:250 mailto:sage [2008/08/24(日) 08:58:37 ]
- (defparameter *fn* (let ((count 0)) #'(lambda () (setf count (1+ count)))))
これはクロージャの効果で*fn*を呼び出すたびに無名関数内のcountの値が1ずつ増えていくのはわかるのですが CL-USER> (funcall *fn*) 1 CL-USER> (funcall *fn*) 2 この無名関数の部分を普通の関数に置き換えて、処理自体は外に記述した場合もその関数はクロージャとして働いてくれるのですか? 実践Common Lisp66ページでのことです。Lisp始めたばかりで自分で試してみたくてもうまくいきません
- 396 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 09:29:20 ]
- クロージャはクロージャ、
クロージャ以外のものはクロージャではない。
- 397 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 09:38:40 ]
- >>395
こういう意味ならできる、が答かな。 CL-USER> (let ((count 0)) (defun count-up () (setf count (1+ count))) (defun show-count () count)) CL-USER> (count-up) 1 CL-USER> (count-up) 2
- 398 名前:250 mailto:sage [2008/08/24(日) 12:32:30 ]
- CL-USER> (defun cplus () (setf count (1+ count)))
CPLUS CL-USER> (defparameter *fn1* (let ((count 0)) #'cplus)) *FN1* CL-USER> (funcall *fn1*) ; Evaluation aborted すいませんどこがエラーになってしまったのでしょうか…
- 399 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 13:39:46 ]
- 立派な仕様書があるから本なんて買わなくていいし質問に答えなくていい罠
- 400 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:21:12 ]
- (defmacro name (vars form &body body) ...)
てな, form を作りたいんですけど form の評価結果が, vars で指定された書く変数に代入される ような, 定型マクロってどっかに転がってませんか? 気持ちとして, やりたいことは vars が '(a b c) で form が (1 2 3) を返す場合 `(let ,(mapcar #'fun ,vars ,,form) ;form の前の 「,,」 の気持を分かって ==> (let ((a 1) (b 2) (c 3)) ... と, 展開したい
- 401 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:30:48 ]
- destructuring-bind?
- 402 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 14:31:37 ]
- >>400
destructuring-bindかな こんな (destructuring-bind (a b c) (list 1 2 3) (+ a b c)) =>6
- 403 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 19:03:42 ]
- >>398 クロージャ理解の壁だね。やりたい事はわかるが、おしい。もう一歩。
ここで変数のスコープとかの理解が加われば先に勧めるよ。 クロージャは変数をキャプチャするが、それは「クロージャが作成された」環境の変数なんだ。 cplus が作成されたときに参照している count はグローバル環境の count で、let で作った束縛じゃない。 したがって、後から関数の外側で let で束縛を作っても意図した動作にはならない。 この場合は count がスペシャル変数としてグローバル環境に定義されていた場合はまた話が違うんだけどね…。
- 404 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 19:32:09 ]
- >>402 おぉ! そう言えばそんなもんがあった!ありがと
- 405 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:27:15 ]
- >>398
OK、>>403も指摘しているが、>>250が何かを分かっていないことは分かった。 多分、レキシカルスコープが文字通り、「字面どおりに動作する」、ように作られている、 ってのが分かっていないんだと思う。レキシカルスコープを理解するのが先で、 それを実現するためにクロージャーがある、と思えばいいと思う。 >>399 黒田さん乙。そんなことができる立派なエンジニアが、残念ながら少ない、 ということは無視しないでくれよ。
- 406 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:40:00 ]
- 定義された時点でのスコープの定義を取り込むなんて
Cでいえば関数というより構造体みたいなイメージになってしまう Body内を走査してbody内で見付からなければ環境から参照を取り込むみたいな ますますよくわからなくなってくるわ
- 407 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 22:51:55 ]
- >>406
構造体というか、クラスとクロージャがよく似ている。 オブジェクト指向の変な例え話よりも、クロージャを理解するといいよ。
- 408 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:05:50 ]
- クロージャってどうやって勉強したらいいの?
掲示板やBlog以外で見たことないんだけど 情報学科だと常識?
- 409 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:06:19 ]
- はてブのSchemeタグからサルベージ
ttp://www.itmedia.co.jp/enterprise/articles/0703/29/news069.html shiroさんの書いたクロージャの説明記事。わかりやすいと思う。
- 410 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:19:30 ]
- >>408
簡単でいいんで、LispでLispを実装してみるとすぐ分かるかもね。 「環境」というとわからないけど、所詮はコンピューター上のものだから。 そもそも、ものすごく特殊な処理をしてる訳じゃないし。
- 411 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:30:05 ]
- LispをLispで実装とな!!
そんなのloopマクロをemacs lispで実装できる程度しかlispの経験ない俺には無理だ hogehoge schemerシリーズ、HtDP、Practical Common lisp、sicp、OnLispを読み通してから頑張ります
- 412 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:49:36 ]
- >>409,410
ありがとうございます。 lispの勉強もしてみます
- 413 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 17:47:13 ]
- schemeのmatch-lambdaってCommonLispにないのかな?
- 414 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 23:20:42 ]
- CLiKiのlibrary-listを翻訳しているのですが
asdf-worldのregistries ("worlds")の部分がわかりません。worldsと言うのは 何かの用語でしょうか? UNIXのmake worldの様に特殊な用法ですか? よろしくお願いします。
- 415 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 06:01:06 ]
- "version controllable registries"の名前。
- 416 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 10:39:31 ]
- >>415
ありがとうございます。
- 417 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:51:14 ]
- 使う場面が多かったので作ってみました。
roundの拡張で第二引数に四捨五入する桁を入力すると その桁で四捨五入してくれます。 修正すべき所・つけるべき機能をご指摘願います。 (defun my-round (x y) (cond ((<= y 0) (format t "*** - MY-ROUND: The second-paramerter must be more than 0 not ~A~%" y)) ((= 1 y) (float (/ (round (* x 10)) 10))) (t (float (/ (round (* x (expt 10 (1- y)))) (expt 10 (1- y))))))) エラーメッセージの表示方法がわからなかったので手動で打ち込んだため 横に長いレスに成ってしまい申し訳有りません。 よろしくお願いします。
- 418 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:20:52 ]
- 別にyは負数でもよくね?ってことで
(defun my-round2 (x y) (float (* (round x #1=(expt 10 y)) #1#))) (my-round2 95.6453 -3) 95.645 (my-round2 95.6453 -2) 95.65 あとCLに限らずroundは四捨五入とは違う(丁度真ん中は近い方の偶数になる)から 注意してね。 (round 2.5) 2 (round 2.6) 3 (round 3.5) 4
- 419 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:27:23 ]
- あと俺が題意を読み間違えてなければ>>417は*と/の位置とか
1-とか色々間違ってね? ということに今更試してみて気付いた。
- 420 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 22:05:01 ]
- あとroundは多値を返すからそれにあわせて多値を返すようにしてもいいかもね
- 421 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:02:03 ]
- >>419
clispでは正常に動作しているのですが・・ 0.876を小数第二位で四捨五入する場合 (*0.876 10)=8.76 (round 8.76) => 9 (float (/ 9 10)) => 0.9 と言う順番という事なのですが
|

|