- 1 名前:デフォルトの名無しさん [2011/07/06(水) 17:15:15.55 ]
- 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) (url pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5) (url pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6) (url hibari.2ch.net/test/read.cgi/tech/1270370267/l50 :part 7) □テンプレート置き場□ ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
- 152 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 00:30:22.73 ]
- スイマセン、基本的なところなんですが
>(defun test1(x)(eq x #'+)) TEST1 >(test1 #'+) T なのに >(defmacro test2(x)(eq x #'+)) TEST2 >(test2 #'+) NIL になるんですが、マクロと関数で引数の評価の仕方が違うんでしょうか?
- 153 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:06:48.59 ]
- >>152
そこは基本的っていうか、むしろ嵌りどころ。 #'は特殊形式functionに展開されるんだけど、functionが返す関数オブジェクトは、 必ずしも毎回同じ物とは限らない、っていう話だったはず。 ttp://www.apl.jhu.edu/~hall/Lisp-Notes/Dalton-Pitfalls-List.text の"Function vs eq."に詳しい。
- 154 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:12:36.50 ]
- って、待った。test2ってクォートしてないの?
(defmacro test2(x)`(eq ,x #'+))でなく?
- 155 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:22:58.45 ]
- まんま>>152の通りなら、コンスの '(function +) と関数の #'+ を比較してるので、
マクロの展開結果がNILになり、評価結果もNILになる。 そういう勘違いなら、Common Lispの評価モデル自体を理解してないことになるので、 HyperSpecとか書籍とかマクロの解説とかを読んだ方が良いと思う。 マクロに渡されるのは値じゃなくて式。
- 156 名前:152 mailto:sage [2011/09/22(木) 01:54:26.73 ]
- >(defmacro test3(x)(equal x '(function +)))
TEST3 >(test3 #'+) T 納得。夜遅くにスイマセンでした
- 157 名前:デフォルトの名無しさん [2011/09/30(金) 14:34:56.92 ]
- 自明は相手をごまかす頻出単語
- 158 名前:デフォルトの名無しさん mailto:sage [2011/09/30(金) 14:56:15.85 ]
- 毎回公理から一つ一つ積み重ねるしかないのか
- 159 名前:デフォルトの名無しさん [2011/10/05(水) 22:10:00.39 ]
- キーワード引数が指定されなかった場合と、
キーワードの値としてnilが渡された場合って区別できるんでしょうか? 例えば (defun hoge (&key (foo)) foo) として、 (hoge) の場合と (hoge :foo nil) の場合を区別できるかどうか、という意味です。
- 160 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 22:26:42.09 ]
- &key では判断するために supplied-p-parameter があるよ。
CL-USER> (defun hoge (&key (foo nil foo-supplied-p)) (values foo foo-supplied-p)) HOGE CL-USER> (hoge) NIL NIL CL-USER> (hoge :foo nil) NIL T
- 161 名前:159 mailto:sage [2011/10/05(水) 22:46:31.24 ]
- おぉー。全く知りませんでした。
ばっちりです。ありがとうございます。
- 162 名前:デフォルトの名無しさん [2011/10/10(月) 09:36:53.02 ]
- パッケージとか、ASDFの使い方を知りたいのですが、
何を参照したらよいですか?
- 163 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 11:42:24.68 ]
- >>162
パッケージは知らないけど、ASDFなら common-lisp.net/project/asdf/asdf.html とか common-lisp.net/~mmommer/asdf-howto.shtml とかじゃない? ググッたりしてるなら、もう見ただろうけど
- 164 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:07:43.42 ]
- >>162
ASDFではなく、quicklispを使うといいよ。 既知だったらすまん。
- 165 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 18:25:50.48 ]
- >>164
CLのパッケージシステム関連全体のことを聞いてるんじゃねぇの quicklispもasdf使ってるし ``asdf-install使うくらいならquicklispを使うといいよ'' てな話だとわかるんだが, 若干的外れなような...
- 166 名前:デフォルトの名無しさん [2011/10/10(月) 21:04:40.05 ]
- 162の質問者です。舌足らずの質問ですいませんでした。
これまで、小さなプログラムしか作ったことがないもので、 個々のソースプログラムファイルをloadしているだけで 満足してたのです。使ってる処理系がsbclなので、多分何もしなくても コンパイルもしてくれるようですし。(つづく)
- 167 名前:デフォルトの名無しさん [2011/10/10(月) 21:07:41.81 ]
- (つづき)
しかし、下記の理由で、だんだんそうもいってられなくなりました。 1. 自分で書くプログラムがかなり大きくなってきた。 (その結果 2.と3.) 2. 名前空間(?)をcommon-lisp-userとは、分離したい. 3. ソースプログラムファイルの依存関係(どれが、どの ファイルで定義されている関数を使っているかなど)を うまく表現する方法がないか知りたい。コンパイルや ロードをスマートにやりたい。 (c言語でのmakeに相当するものがないかな??) (つづく)
- 168 名前:デフォルトの名無しさん [2011/10/10(月) 21:10:04.15 ]
- (つづき)
4. 他人が作ったプログラムをつかうのに、requireとか asdfを使うこともでてきたのですが、(関連するwebサイト の説明を鵜呑みにしているだけで)何が起こっているのか よく分からない。何が起こっているのか知りたい。 (つづく)
- 169 名前:デフォルトの名無しさん [2011/10/10(月) 21:12:19.54 ]
- (つづき)
4. 他人が作ったプログラムをつかうのに、requireとか asdfを使うこともでてきたのですが、(関連するwebサイト の説明を鵜呑みにしているだけで)何が起こっているのか よく分からない。何が起こっているのか知りたい。 (つづく)
- 170 名前:デフォルトの名無しさん [2011/10/10(月) 21:14:34.72 ]
- (つづき)
ちなみに、require関数を使って他人が書いたプログラム(たとえば clxとかMcCLIMなんか)をロードすると、 結構、複雑なことが起こっている気がするのですが、CLtL2のrequire の説明をみても何だかよくわかりませんでした。 (多分、必要なモジュールを探してロードしているんだろうなと思う。 そういうことを自作プログラムでもやりたいのです。)
- 171 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 21:24:23.45 ]
- 2. は CL でいうパッケージの仕事。
3. は、ASDF (C言語でいう make の Lisp 版。最近の標準) の仕事。 4. に関しては、CLHS で provide/require という仕組が定義がされているが、 こいつは実装依存でかつ依存関係を取り扱うポータブルな手段がないため、一 般的にはASDFが利用される。(でも、処理系依存のライブラリなんかでは使われてる) 前にでている Quciklisp てーのは、 ASDF の上にさらに rpm/yum みたいなパッ ケージ管理機能を追加したもの。なので、ボトムアップが好きなら学習順序と してはパッケージ -> ASDF -> Quicklisp がいいんじゃないかな。
- 172 名前:デフォルトの名無しさん mailto:sage [2011/10/11(火) 23:51:42.80 ]
- ネットに繋がらない環境にquicklispkから落としたライブラリを持って行きたいんだけど、
ネットにつながるマシンでライブラリ整えて、~/quicklispを全部コピーして持ってけばおkなのかな?
- 173 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 00:26:01.96 ]
- >>172
そう。 持っていったやつを別な場所に置きたいなら、 www.quicklisp.org/beta/faq.html#local-project を参考に。
- 174 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 14:01:09.61 ]
- なんと言いますか、ミニゲームを作りながら段々とプログラミングのやり方を
覚えていくような入門サイト、書籍みたいなものはありませんか? 入門書籍を何冊か読んでみたんですが、式それぞれの使い方は飲み込めたのですが それをプログラムでどう表現したら良いか分らないと言いますか。 出来ればLinux上のClispに対応したものがベターですが、他の環境でも構いません。
- 175 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 16:47:15.57 ]
- ありません
- 176 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 16:53:12.06 ]
- >>174
landoflisp.com/
- 177 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 17:09:02.98 ]
- 斬新スギルwwwwww
- 178 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 19:37:39.35 ]
- >>176
開いた瞬間にMade by secret alien technologyだったw
- 179 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 22:58:13.41 ]
- >>176
類書が全く思いつかないすごい世界だ
- 180 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 23:02:53.03 ]
- 括弧食うなw
- 181 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 23:59:37.28 ]
- その本は素晴らしいよ。
LISPのトンデモ歴史に始まり、簡単なAIやWEBサーバー開発なども学べる。 英語は平易。
- 182 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 00:10:38.65 ]
- Land of Lispって、作曲したり、色々フリーダムだよな。
youtu.be/HM1Zb3xmvMc
- 183 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 01:12:43.71 ]
- >>176を見てamazon kindleで衝動買いしてしまったw
kindle価格で29ドル 早速読んでみるわ
- 184 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 22:45:02.02 ]
- 出版社はno starch press (堅苦しくない出版 という名前)で
日本語の萌系の学術書?も翻訳してるし、 You learn a haskell for great good! (最近話題のHaskell書)の 本も出版してる。You learn ~ も簡単な英語で書かれてるよ。
- 185 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 07:07:25.64 ]
- 本当だ、オーム社のマンガでわかる〇〇の表紙が公式サイトにある
Hacking第2版のパブリッシャーでもあるのか
- 186 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 07:39:00.94 ]
- The Manga Guide to the Universe なんてのもその出版社のページに。
オーム社は「マンガでわかる銀河系」も出すべきだなw
- 187 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 13:31:36.12 ]
- >>173
サンクス! お礼が遅れてすまんかった。
- 188 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 01:26:54.32 ]
- Schemeのschelogに相当するものってないの?
- 189 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 02:04:44.48 ]
- norvig.com/paip/prolog.lisp
www.franz.com/products/prolog/
- 190 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 09:42:50.70 ]
- www.lispworks.com/products/knowledgeworks.html
- 191 名前:デフォルトの名無しさん mailto:sage [2011/10/18(火) 23:48:13.92 ]
- テスティングフレームワークって何が標準的なんでしょうか?
- 192 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 00:54:57.34 ]
- 特に標準はないんじゃないの?
よく使われてるライブラリで共通で使われてたりするのかな? xUnit,xSpec,quickcheck,Test::Moreみたいな言語間で広まってるテストフレームワークも www.cliki.net/test%20framework google.co.jp/search?q=commonlisp+test
- 193 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 01:02:25.05 ]
- clojure.testっぽいのとPerlのMore::Testっぽいのは、日本語の一次資料があるらしい。
最近公開されたものだし、標準ではないけどね。
- 194 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 07:32:48.73 ]
- >>191
比較的多く使われてるのはFiveAMとStefilかなー。 機能的にも割と似たような感じ。ただ、Stefilはドキュメントがない。 特に拘りがないならどっちか使っとけば良いと思う。 Clackの中の人が作ってるCL-TEST-MOREなんかは、TAPが好きなら良いかも。 あと、複雑なテストが必要ない場合、自分で書いてる人も割といるように見える。 上で出てない追加の情報源とか。 cl.cddddr.org/index.cgi?%a5%e9%a5%a4%a5%d6%a5%e9%a5%ea cl.cddddr.org/index.cgi?FiveAM aperiodic.net/phil/archives/Geekery/notes-on-lisp-testing-frameworks.html
- 195 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 07:54:01.51 ]
- あと、CL-TEST-MOREは公式のドキュメントは英語。
ただ、中の人が日本人なので、日本語の解説もあるけど。 https://github.com/fukamachi/cl-test-more e-arrows.sakura.ne.jp/2010/11/cl-test-more.html tips.lisp-users.org/common-lisp/index.cgi?CL-TEST-MORE clojure.testっぽいのはButterだと思う。使ったことないから使い勝手は分からない。 こっちは日本語のREADME付き。 https://github.com/yuushimizu/butter d.hatena.ne.jp/yuushimizu/20110922/1316627415
- 196 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:28:23.81 ]
- RIP
- 197 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:43:27.22 ]
- マッカーシー御大のことか
- 198 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 21:23:05.33 ]
- ああ、なんというか悲しいなぁ。
おれがコンパイラとか興味持ったのも、全部Lispのおかげなんだ。 Lispの父の魂よ安らかに眠れ。
- 199 名前:デフォルトの名無しさん [2011/10/25(火) 21:48:23.67 ]
- マッカーシーって赤狩りやった人?
- 200 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 22:44:12.27 ]
- 連載:インターネット・サイエンス の歴史人物館(12)
ジョン・マッカーシー wbb.forum.impressrd.jp/feature/20071212/515
- 201 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 16:40:48.72 ]
- 関数プログラミングとオブジェクト指向プログラミングが相容れないという見解を
時折聞くのですが、そうなんですか? 自分はオブジェクト指向を型と引数の型によって振る舞いを変える関数の組み合わせで理解しており、 関数プログラミングとオブジェクト指向プログラミングは直行するのではないかと思っているのですが。
- 202 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 17:29:29.77 ]
- 確かに直交するものではあるのだけど、
どうしてもオブジェクト指向の、「物」指向、副作用による状態の変化を利用したスタイルから、 普通にはそれを使えなくなる純粋関数型に、自分の思考を持ち込むか、という技の掛け方、 というか、そのへんは実際にやってみて慣れればなんということないんだけど、説明するのは 難しいので。
- 203 名前:201 mailto:sage [2011/10/27(木) 17:34:38.20 ]
- ははあ、結局再代入をどんどんやるスタイルから
一度しか代入しないスタイルへの切り替えの難しさから そういう意見が出てくるって事ですね ありがとうございます
- 204 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 17:43:50.90 ]
- ABCLとか、ACTOR→Schemeとか、
メッセージパッシング系は上手く混合してるでしょ。
- 205 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 19:00:26.69 ]
- >>201
技術書の「Concepts, Techniques, and Models of Computer Programming」 (CTMCP:コンピュータプログラミングの概念・技法・モデル)で複数の 計算モデルが解説されているが、一般にオブジェクト指向と呼ばれている言語は、”状態” を内部に持って、書き換え(副作用を起こし)ながら処理を進めるモデル。 関数型と呼ばれる言語の多くは、数学での集合・写像がベースになったモデル。 従って、処理の大部分を副作用ではなく、集合への写像(関数適用と思っていい)で出来る。 相性というより、計算モデルが全く違うので、混在は非効率。 なお、CTMCPには他のモデルも解説されている。
- 206 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 20:28:15.59 ]
- 質問ですが、(progn (setq x 0) (dotimon (i 10) (setq x (add x i))))
のxはこのまま活用するのですか? LISP触って日が浅いのでまだ分かりづらくて…
- 207 名前:201 mailto:sage [2011/10/27(木) 20:51:23.53 ]
- >>205
ありがとうございます。 確かに狭義の定義では相容れませんね。 JavaやC++でラムダ計算は出来そうにもありませんし、 Haskellでは代入自体が不可能ですし。
- 208 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 20:54:20.61 ]
- >>206
「xはこのまま活用する」とはどういう意味でですか?
- 209 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 21:16:05.58 ]
- >>208
すみません、少し読み返してみたらsetqでxは0に定義されていました・・・orz 少し落ち着いてから勉強しなおします。
- 210 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 21:21:24.93 ]
- 209の者で一応206をまとめると、「xをそのまま引数としていいのか」という文意でした。
- 211 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 23:10:17.78 ]
- 何にも束縛されていない変数xを引数にした式(add x i)を評価するとまずいんじゃね,
と思ったけど直前に(setq x 0)があるから束縛されてた,問題なかった,という意味?
- 212 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 23:46:20.82 ]
- scala 触ってみて、クラスベースOO と関数型は相性良くないなあと思った。
不必要に複雑になりがちで。
- 213 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 00:49:20.17 ]
- 物と状態のシミュレーションじゃなくて、やり取りするインターフェース指向というか型や取り決めのためにOOは使うものなんだよっていう人もいるな。
clojureの宣伝文句は、OOの目的を別なやり方で、だとか。 thinkrelevance.com/blog/2009/08/12/rifle-oriented-programming-with-clojure-2.html www.geidai.ac.jp/~marui/clojure/rationale/index.html www.geidai.ac.jp/~marui/clojure/state/index.html clとclojureちょっとかじったのけど、scheme知らないのでRacket使ってみようかな。
- 214 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 06:22:21.58 ]
- インターフェースって観点なら
個人的にはHaskellの型と型クラスの扱いが 一番綺麗に整理されてていいと思う
- 215 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 10:53:54.69 ]
- 型クラス便利なんだけど、副作用とあんま相性が良くない、
みたいなことをOCamlの人が書いてた気がする。
- 216 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 15:05:25.95 ]
- clojureのdeftype/protocolもhaskellの型クラスに近い感じだね。
データ型と振る舞いの分離、データ型の継承なし、など。
- 217 名前:デフォルトの名無しさん [2011/10/29(土) 06:37:12.03 ]
- (defun 5jou (x)
(let ((x2 0) (x3 0)) (setq x2 (2jou x)) (setq x3 (* x2 x)) (* x2 x3))) 5JOU が理解できません。どなたか簡単に説明をお願いいたします。
- 218 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:28:04.20 ]
- >>217
酷い関数名だなw 2乗する関数2jouってのがどこかに定義されてて、 xを5乗するってのを 2乗掛け(2乗掛け1乗)で実行してるだけだと思う。 ただ普通はそんな酷い書きかたしないよ。何の例?
- 219 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:50:47.56 ]
- (defun 9jou-lover ()
(destroy 'war-freak)) (crazyp 9jou-lover) t
- 220 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:53:13.73 ]
- 宿題?
(defun 5jou (x) (let ((x2 0) (x3 0)) (setq x2 (2jou x)) ; x2 = x^2 (setq x3 (* x2 x)) ; x3 = x2*x = x^3 (* x2 x3))) ; x2 * x3 つまり x^5
- 221 名前:デフォルトの名無しさん [2011/10/29(土) 09:49:42.36 ]
- >218
ある入門書です。
- 222 名前:デフォルトの名無しさん [2011/10/29(土) 09:55:29.50 ]
- >>220
ありがとうございました。
- 223 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 10:29:38.69 ]
- 関数型4つの特徴とλ計算かな
- 224 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 10:52:42.97 ]
- こんな短い関数に setq 使っているのが凄く気持ち悪いな
(defun 5jou (x) (let ((x2 (2jou x))) (let ((x3 (* x2 x))) (* x2 x3))))
- 225 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 11:14:37.94 ]
- ダメな例として挙げているのかも知れんな
- 226 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 12:36:07.35 ]
- (defun 5jyou (x)
(* x x x x x))
- 227 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:10:16.47 ]
- もしもその本の中で悪例として取り上げていないのであれば
すぐに窓から投げ捨てたほうがいいレベル 変数名にx1,x2,...とかつけちゃう本は大抵ダメ 学生が作ってくるプログラムでたまにこういうのあるよね 全ての関数名がf1,f2,...で変数名がx1,x2,...
- 228 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:12:01.20 ]
-
_____ .ni 7 / \ ご冥福をお祈りします l^l | | l ,/) / /・\ /・\ \ .n ', U ! レ' / |  ̄ ̄  ̄ ̄ | l^l.| | /) / 〈 | (_人_) | | U レ'//) ヽっ \ | / ノ / /´ ̄ ̄ ノ \_| \rニ | `ヽ l
- 229 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:13:31.37 ]
- 俺ならっ!こう書くっっ!
(defmacro gogogo (n) (let ((jo-name (intern (concatenate 'string (prin1-to-string n) "JOJO")))) `(defun ,jo-name (x) (let ((x-val x)) (apply #'* (make-list ,n :initial-element x-val))))))
- 230 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:15:36.49 ]
- 処理系のソースの中にも, 結構見掛けられる
(flet ((hoge (.... とか(実際には frob とかだが)... いいんじゃねぇの名前なんてどうでも....
- 231 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:16:11.42 ]
- x-val は必要なかった。画竜点睛を欠いちまったぜ!!
- 232 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:32:35.97 ]
- ソースを後で見なおした時にすぐにわかるように
しておかないと、手直しする気すら起こらんぞ。
- 233 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:41:42.31 ]
- >>230
名前は大事でしょ。 例えば関数の名前付けに困るときは、 処理をまとめる粒度がおかしかったり、 別個の処理をまとめてやっちゃってることが多い。
- 234 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 16:33:59.96 ]
- 命名規則さえ一貫してれば名前なんて何でも良い
- 235 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 16:43:56.57 ]
- コンパイラでGNU CLISP使ってんのだけど、
読み込みが一瞬で終わってデバックするところが分からないから CLISP使っている人でどうしたらいいか分かる人いない?
- 236 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:02:39.29 ]
- たとえ命名規則が"f+数字"でも、一貫してればそれでいいのか。
すげーけどあまり関わりたくないな
- 237 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:03:58.19 ]
- >>235
読み込み速度とデバッグの関係がわからない。なにをどうしたいんだ?
- 238 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:11:13.44 ]
- >>237
俺の作ったデータを読み込む ↓ エラーがあるから無論エラー文が返される ↓ しかし速すぎ見えないワロタwww みたいな流れ。
- 239 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 17:23:00.81 ]
- >>238
コンソールが閉じるってこと? それともエラーの量が多すぎて流れちゃうってこと?
- 240 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:23:28.68 ]
- >>236
それって gensym みたいだ lispや関数型言語で悩むのは関数の名前だというのは避けられないな。 特に、英語のボキャブラリの足りなさと前置詞の使い方の理解不足が 日本人にとって鬼門だと思ってるよ。
- 241 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:26:48.12 ]
- common lispにはtraceやstepがあるから、それを意識した関数の作り方
をすれば混乱するところはずいぶん減るよ。 意識してプログラミングしてみな。けっしてdefunの中身をでかくするんじゃないぞ
- 242 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:32:22.33 ]
- 小分けした関数でいいから、最適化をするときにインライン化もできるしね。
だから、1つの関数に5行で収まることを意識した作りをしてみればいい。 condやcase/ifを使うと大きくなりがちだけど、条件のところを上手に 関数化すると関数の膨らみは抑えられるし、デバッグもあとで楽になる。 traceを使うときも条件分けした所でどこに富んだかは一目瞭然になるしね。 手続きグセなのか関数の中にオールインワンの方向に作っちゃう人はいるけど あれは、デバッグで悩むことになるからやめたほうがいいよ。 優れたlisperのソースでも長いものはあるけど(macroでmacroや関数をまとめて 作るような場合は特にね。)最初は小分けから、最適化するに連れて色々変える ことを意識してったほうが効率はいい。
- 243 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:32:29.26 ]
- >>238
前者で合ってる
- 244 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 17:37:04.27 ]
- 確か、初めて本の中でletが登場した辺りだったと思う
S式眺めてると関数なんだかシンボルなんだかわからなくなる ってなってた頃はx1とか変数然としてて読みやすかった記憶がある
- 245 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 17:40:07.18 ]
- >>238
普通は Emacs と繋げるだろう jk
- 246 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 18:37:19.17 ]
- >>238
なにが速いんだ? >>239 の推測どーりなら、 コンソールが閉じる => コマンドプロンプトから起動すれば? 文字が流れちゃう => エラーでたら止まるようにプログラムしとけば? という感想。状況がいまいちわからん。
- 247 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 21:39:37.13 ]
- SLIME経由で使わないCommon Lispとかマジ罰ゲームだろ。
開発効率が十倍以上変わってくるぞ。
- 248 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 21:44:27.07 ]
- >>247
その昔 グレアムはviでclispを・・・ ということがあったようだ。slimeがあまりにもいいからな。 いまはslimvというvimのものがあるが。
- 249 名前:238 mailto:sage [2011/10/29(土) 21:51:03.24 ]
- >>245,246,247
サンクス、いろいろ試してみる
- 250 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 21:55:13.75 ]
- GNU CLISPってことはwindowsかな?
だとすると、slime+clisp がついてくるlispcabinetが おすすめ インストールするだけで環境が整うよ
- 251 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 22:01:13.63 ]
- Lisp は言語としては (今となっては相対的に) それほど複雑とも難しいとも言えないし、日常的なスクリプトを書くのにも使えるけれど、
実質的には実用的な開発環境が Emacs か Vi しかないっつーのは環境をととのえるとこからめんどくさくて初心者にはハードルが高いよな。 Lispbox 使えよ。
- 252 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/29(土) 22:02:08.85 ]
- 最近は lispcabinet なんてのもあるのか。
導入の楽さでは Lispbox よりも上っぽいな。
|

|