1 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:52:46 ] 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))
175 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:19:19 ] 処理系のCLパッケージのようにc再定義されると困るようなもの (carやcdrが再定義されるとこまるetc)には掛かっていますが、 普通のものには殆ど掛かっていないと思われます。 また、パッケージのロック機能自体オプションだったと思うので、 処理系依存です。
176 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 21:52:26 ] 172です. >>175 > 処理系のCLパッケージのようにc再定義されると困るようなもの なるほど,そう言うことですか. toplevelとpackageで混乱してます. もうちょっと勉強してきます. ありがとうございました.
177 名前:デフォルトの名無しさん [2008/03/21(金) 10:03:34 ] Common Lispは、Javaで言うBigDecimalのような十進数演算ができる ライブラリや関数はありますか?
178 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:18:08 ] BCD より Bignum で小数位置を適当に自分で持ってあげたほうがいいんじゃないかな。
179 名前:177 mailto:sage [2008/03/21(金) 10:50:37 ] >>178 どうもありがとうございます。 やはりそうですか。 Googleで調べてみたのですが、見つかりませんでした。
180 名前:デフォルトの名無しさん [2008/03/21(金) 11:12:05 ] 表示は変かもだけどratioで計算するのでは不満?
181 名前:177 mailto:sage [2008/03/21(金) 11:31:12 ] >>180 お金が絡むようなWebアプリに適用できるのか(簡単に書けるのか)、 調べているのですが、ratioでも適用できると思いますが、 十進数演算を素直に記述できるような標準的な ライブラリがあるのかなと思いまして。
182 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 12:06:32 ] maximaが大きい行列を実質扱うことできないと前に検索したblogに書いてあったのですが本当なのでしょうか?
183 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 19:03:50 ] 大きいの定義は。
184 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 20:28:33 ] うんこ/おしっこ
185 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:55:35 ] Common Lispの引数の順番は統一性がないのでしょうか? 例えば (etl オブジェクト インデックス) (gethash キー オブジェクト) となっていますが、 他の関数もこのように、てんでんばらばらなのでしょうか? 使っているうちに慣れると思うけど、なんだか美しくないなぁ。
186 名前:185 mailto:sage [2008/03/22(土) 11:25:52 ] Practical Common Lispを読み進めていったら By an accident of history, the order of arguments to gethash is the opposite of elt--elt takes the collection first and then the index while gethash takes the key first and then the collection. と書いてありますね。 他の関数は大丈夫なのかな?
187 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 11:58:26 ] みんな一度は考える事だな。でもまぁ、ハッシュと配列アクセスの引数が揃うと何かすごい進歩がある、 というならともかく、気分で非互換にするわけにもいかなかったんだろう。 まぁ次世代のLispの時には揃うかもね。 あるいは↓のように自分でなんとかするとか。コンパイラががんばれば効率はかわらんはず。 ;; c.l.l のスレより転載 groups.google.com/group/comp.lang.lisp/browse_thread/thread/40e7f65f415b0cd3/ (proclaim '(inline hashget)) (defun hashget (table key &optional default) (gethash key table default)) (defun (setf hashget) (value table key &optional default) (setf (gethash key table default) value)) どうしても許せん、ならSchemeとか…
188 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 12:21:45 ] Common Lispは惰性と妥協の塊だからしょうがない
189 名前:185 mailto:sage [2008/03/22(土) 15:49:42 ] >>187 どうもありがとうございます。 リンク参考になりました。 >>188 やはりそうですか。 JavaやRuby等の、比較的最近の言語から見ると 関数名や引数の順番の一貫性の無さが気になってしまいます。
190 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 16:20:14 ] 上の例のように関数名や引数の順番の一貫性の無さが気になったら 自分好みに変えられるのがLisp風。 むしろそこを気にかけてほすい。 気になった箇所を徹底的に自分好みに変更するのも勉強になります。
191 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 16:48:46 ] 一貫性が無い、のは事実だけど、 覚えることがそもそも少いから、あまり気にしたことないなぁ。
192 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:40:12 ] 「lisp」という単語でネットサーフィンしていたら「仕様記述からソース生成」などという言葉が出てきたのですが、ありえないですよね? ただの電波ですよね?
193 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:52:16 ] その「仕様記述」とやらによるけど、厳密さが十分にあれば可能ですよ。別にLispに限らないけどね…… S式があるおかげでフォーマットに悩まないとかマクロのおかげでコード生成が身近というあたりが利点かもね。 でも、あいまいな仕様でもLispをつかうだけで魔法のようにまともなソースができあがる、なんて話ならありえない。
194 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:12:38 ] あいまいでない仕様などそう簡単に書けないし、激しく無理がありそうな気がします。
195 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:16:07 ] >>192 Leeを思い出したww
196 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:19:50 ] 無理なものは無理だろうね。 元ネタがどこだなのかわからんから推測しか言えないが、厳密にかける世界の話だったんじゃないかな? ファイルフォーマット解析とか状態遷移とかコンパイラとか、仕様を厳密に記述するほうが自力でゴリゴリコーディング するより楽、という話ではないかな。
197 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:19:53 ] て言うか、「仕様記述からソース生成」なんて言うのは、文字列処理や リスト処理がたくさん出てくるので、Lisp 向き。 と言う時代もあったけど、最近の言語はどれもそれなりに文字列処理や リスト処理に不自由しなくなってきたので Lisp だからどうと言うこと は少なくなくって来た。
198 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:30:05 ] >>197 実行時にevalがあるような言語だけじゃないかな? lispだとマクロが化け物だから可能な領域ってのもあるからそこを前提にされると太刀打ちできない気がする。
199 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:30:16 ] >>192 仕様記述からプログラムが書けるとすれば、その仕様記述は(自然言語とかけはなれた) 曖昧性の無いもののハズで、それは完全にプログラムそのものだろ。 可能ちゃ可能だろうけど、それに何の意味があるんだ? といつも思う。
200 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:40:42 ] 発想が逆なんじゃないかな? 仕様を定義するほうが、プログラム書くより量的に少ない場合とか、 そうでなくても厳密な仕様をミスなく書き下す手間が自動化できてラッキーとか、 モデルチェッカとかでチェックした仕様をソースにできるとか、 図でプログラム読めない人(←でも業務とかその道のプロ)に漏れや抜けがないかを チェックしてもらって、そっからミスなくソースができてうれしーとか。
201 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:54:24 ] そもそも実用になっていないって事が良くわかった。
202 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:58:56 ] いや、部分的であれば仕様記述からのプログラム生成は十分使い物になってるし、 実務でも使ってるよ。単なるちょっとした規模のマクロ、って意味だけど。
203 名前:201 mailto:sage [2008/03/23(日) 00:25:47 ] >>202 想像できないけど、実務で使われているなら納得せざるおえないのか。
204 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:57:26 ] DSL の一種と思えるのかな?
205 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 05:57:22 ] CでYaccとか使ってみれば想像できるようになるかも
206 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 07:01:23 ] >>205 それで想像できるなら正規表現使えば想像できる筈
207 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 08:47:24 ] そーいわれれば lex, yacc はそれに近いなあ
208 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 09:12:26 ] >>200 ,202 それをプログラムではなく仕様と呼ぶのは何故なんだぜ? 売り込みに来たヤツがそういってるから?
209 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 10:31:37 ] ずいぶん頭固いね。 仕様書って文章で書いた奴しか見たことないのかな。
210 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 10:37:24 ] と、まるで何かを見てきたふうなことを言ってるけど、別に何も見てきてないんでしょ?w だから具体的に書けない。
211 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:02:39 ] >>209 とりあえず、199の時点で皆に膝を叩いて納得して欲しかったんじゃない?
212 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:34:59 ] だろうね。 >>199 厳密に書かないといけないのは確かだけど、意味がないわけじゃない。 例えば、今時特殊な状況を除けば普通高級言語でプログラム書くけど、これだって 当然曖昧性のないものでなのでアセンブラと同様に厳密に書かないといけない。 だからと言って意味がないわけじゃないだろ? ループのためだけにラベル名を考えたり、ローカル変数のサイズ計算してスタック ポインタから引くためのコード書いたりしなくて良くなるだけでも、ずいぶん楽だ しコードの品質も上がる。 それと同じで、例えば通信やってる人なんかだと仕様書として状態遷移図とか、ス テータスマトリックスを渡されたり、自分で書いたりする。 今はこれを見て「人手で」コーディングしてるでしょ? で、仕様変更があったら再度コードを「人手で」修正してるよね。 この部分を自動化するだけでもかなり楽になると思わない?
213 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 15:36:06 ] & % #' などの略記一覧はどこかにないでしょうか? emacsでcommon lisp開発環境作るとしたらslimeだけでいいのでしょうか?
214 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 18:14:29 ] >>213 > emacsでcommon lisp開発環境作るとしたらslimeだけでいいのでしょうか? 後はマニュアルを引きやすくしとけばいんでね
215 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 18:46:24 ] >>213 「Common Lispリーダーの標準的なマクロ文字が知りたい」の?だとしたら % って何だろ… とりあえずHyperSpec見れ ttp://www.lisp.org/HyperSpec/Body/sec_2-4.html ttp://www.lisp.org/HyperSpec/FrontMatter/Alphabetical-Non-Alphabetic.html
216 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 19:20:00 ] >>215 ということは変数名の先頭に%がついてたのは特別な意味はないのですね
217 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 19:30:55 ] >>216 ないといえばないけど、慣習の一部 www.cliki.net/Naming%20conventions
218 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:26:08 ] CLispがGNU Common Lispかと思っていたけど、 GNU Common LispってGCLだったのね。 違いは何だろうと思って探したら okwave.jp/qa3686339.html がありました。
219 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 02:30:50 ] さいきんLispに興味があります 普段何に使ってますか? 1. シェルスクリプト並にナチュラルに普段使いをしている 2. ある程度以上注意深く作るアプリケーションやモジュール作成の時のみに使用 3. 実用性を考えたら負けなものをニヤニヤしながら作ってて楽しい
220 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 05:58:56 ] シェルスクリプトとは違う意味でナチュラルに普段使い。 思いついたことをさらっと試すのに使ってる。 Emacs使いでないとわからん感覚かも
221 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 08:38:11 ] 大体何にでも使うけど、シェルスクリプトなんて普段くまねーからわかりません。
222 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:20:20 ] lispの入門のホームページはよく見つかるのですが、それ以上の話題はどこを探せばいいのでしょうか? cffiを使ってc++のプログラムをlispから呼びたいのですがサンプルのコードの意味が今一つわかりません www.swig.org/Doc1.3/Lisp.html#Lisp_nn6 ここあたりがそうみたいなのですが、これが理解できるようになるための 中級向けテキストはどこかにないのでしょうか?
223 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:39:41 ] >>222 >それ以上の話題 は残念ながら殆ど英語圏にあります。 ffi等は実装依存なので、まず使っている処理系がなにかを書くと適切な返事があるかも。
224 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:42:44 ] >>222 swigを使うのがわからないのか、ffiの使い方自体がわからないのか、どっちなんだよ?
225 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 10:59:49 ] swigは他の言語で使ったことがあるので大体見当がつきますが、 lispのサンプルコードで cl:letと単純にletと書くのにどう違いがあるのか などの記法が分からずつまづきます ffiの使い方がわからないですpython.ctypesと似たようなものなのでしょうか?
226 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:08:01 ] >cl:letと単純にletと書くのにどう違いがあるのか >などの記法が分からずつまづきます これはCLのパッケージについて入門用のサイトで勉強すれば分かると思うので、 一歩戻ってパッケージについて学ぶことをおすすめしたいところ。
227 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:16:55 ] >>225 ffiは処理系依存だから、まずおまいさんが使ってる処理系のマニュアル嫁。 処理系にできるだけ依存したくないならcffiとかuffi使え。 でもswig使ったことあるならインタフェース書けるだろうし、 理解しなくても使えると思うんだが。
228 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:35:31 ] >>219 愛があればRubyあたりとそう大差ない普段使いができると思ってもらっておk PerlはCPANが強力過ぎるしPythonはGUIがあるから常用を比べるのはちょっと酷 ニコニコ動画ダウンローダー(ちょっと色々混じってるが) ttp://read-eval-print.blogspot.com/2007/08/common-lisp.html ただ、この利用レベルに至るのには時間がかかるのが難点 「別にLispでなくてもいいじゃんね?」という内からの声を無視できる程度には超越しないとイカン
229 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:37:29 ] maximaを使いたくてpythonからclispに乗り換え挑戦中だ
230 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:48:57 ] maximaをアプリとして使うだけならCL知らんでも (自分でCL使って関数書きたいとか言わなきゃ)問題なかろ。
231 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 15:00:49 ] >>228 Lispに愛が芽生えてきますた。 言語への慣れと理解によって大きく違うと思いますが、 Rubyと比べて、生産性は良さはどんなものでしょうか?
232 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:27:54 ] Lispは神が世界を記述するのに使った言葉。 最初に「光あれ!」とかやってたのは全部Lisp。 一方、Rubyはただのスクリプト言語。
233 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:32:44 ] www.aoky.net/articles/randall_munroe/lisp.htm
234 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:56:09 ] Lispはconsセルの操作しかできないと思っていた俺は CLOSを知った今、猛烈に感動している。 凄いなCommon Lisp♥
235 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:01:31 ] 確かめてないが、見えない根っこのほうではconsセルの操作しかしてねーと思うぞ
236 名前:234 mailto:sage [2008/03/25(火) 11:19:24 ] CLOSどころか、defstructでも感動してしたYO。 >>235 そうですよね。 でも、なんだかとっても凄いぞCommon Lisp。
237 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:26:50 ] >>235 まあ、足し算とか引き算なんかもできないとスゲー困るわけで...
238 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:41:42 ] cons だけで数を表現して足し算と引き算とかは実装できるよ。 ラムダ計算の初歩ですよ。遅いけど。
239 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 01:44:37 ] Rと組み合わせられるなんて
240 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 01:58:43 ] 最近は何見てCLOSを勉強してるんだろ?
241 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 02:20:26 ] www.geocities.jp/m_hiroi/clisp/clisp01.html
242 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:31:13 ] Rを呼べる common-lisp.net/project/rcl/index.html
243 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:19:34 ] accountはcustomer-name slotを持つクラスで、 (defun (setf customer-name) (name account) (setf (slot-value account 'customer-name) name)) と定義すると、 (setf (customer-name my-account) "hoge") と書けるのはどうしてですか? defunを使った関数定義で (defun (setf 〜) ....) とdefunの直後に括弧が付く場合、何を意味することになるのでしょうか? 初心者丸出しの頓珍漢な質問だと思いますが、お願いします。
244 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:54:04 ] 何でって言われてもそれがアクセサの定義の仕方だから。
245 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:15:34 ] もうちょっと具体的に説明すると CLtL2 のインヴァージョンをよく読むとよい。 OnLisp の汎変数の説明のところでもいいけど。
246 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 18:54:02 ] cmuclをemacs22+slime2.0で使っています。 キャラクタエンコードをutf-8を通す設定にしてslimeコンソールから日本語(に限らずutfで256以上の値を持つ文字)を食わせると cmucl側からソケットが切断されてしまうのですがこの辺りを解決する情報をお持ちの方はいますでしょうか?
247 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:41:14 ] >>246 そもそもcmuclってutf-8通せたっけ?
248 名前:243 mailto:sage [2008/03/26(水) 20:49:02 ] >>244 ,245 Googleで調べていたのですが、このような機能をなんと呼ぶのかも 分からず、困っていました。 CLtL2 inversionで調べたら、出てきました。 助かりました。どうもありがとうございます。
249 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:50:24 ] >>247 単体で起動すると通りますがslime経由だと通らないのです。 sbclも試したのですが、こちらは主用途のaserveでつかっているhtmlgenの中に日本語テキストがあると出力がそこで打ち切りになってしまいますです。 ex. aserveへ↓を食わせたときに (:html (:body "test" :br "test2" :br "多バイトコード" )) ブラウザでaserveをアクセスしたときに test2<br>までが出力されます(sbclのバグトラックにはレポートあがってました) この例をcmuclでやるとコンソールから直に打ち込むとOKなのですがslime経由だと"多"が送り込まれた時にsocketがreset by peerになってしまうのです。 lispの学習で自分の手習いを実用コードで行おうというのがおこがましいのかなぁorz
250 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 07:42:04 ] >>249 windowとunixで CLISP+emacs+slimeでutf-8でコードを書いていますが、 CLISPだと駄目ですか?
251 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 07:59:35 ] >>250 うちの .emacs にはこんなことが書いてあるが... (setq slime-lisp-implementations '((sbcl ("sbcl") :coding-system euc-jp-unix) (clisp ("clisp" :coding-system euc-jp-unix)))) (setq slime-net-coding-system 'euc-jp-unix)
252 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:30:19 ] >>246 これ自分も知りたいと思ってた。 自分が確かめた範囲では、下記の通り *UTF-8で日本語が使えるかどうか* --そのままでOKなもの sbcl clisp allegro cl clozure cl --処理系で日本語は使えるけれど素のSLIMEだと切断されるもの cmucl ecl lispworks abcl ちなみに「日本語が使える」ってのは処理系で表示できてる、位の意味で、 厳密には処理系ごとに事情が違ってます。 多分、処理系に応じたswank-〜.lispを修正すれば良いんだと思うけど、 漏れは、挫折して、素でOKなものを使ってます。
253 名前:247 mailto:sage [2008/03/27(木) 11:07:58 ] >>249 > この例をcmuclでやるとコンソールから直に打ち込むとOKなのですがslime経由だと"多"が送り込まれた時にsocketがreset by peerになってしまうのです。 utf-8 で接続はできて、日本語を送ろうとしたときに接続が切れるの?
254 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:40:24 ] 3日でclispを実用的に使えるレベルになろうと思って挫折した 憶えないといけないこと多いね classの考え方が他の言語と違ったりするし
255 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:43:32 ] >>254 次に3日でマスタしようとして挫折する予定の言語はなんですか?
256 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:45:05 ] swank以前の問題でコンソールではたまたまアスキー越えた部分が 日本語になって出てきているだけじゃないか? char-code-limitはいくつ?
257 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:46:18 ] Brainf*ck
258 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:51:21 ] >>254 あなたは何をやっても駄目そうですね。
259 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:26:57 ] >>246 cmucl 19e - Preliminary support for external formats. Currently only iso8859-1 and utf-8 are supported. Utf-8 support is limited since CMUCL only has 8-bit characters.
260 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:32:59 ] swank の方でも cmucl への接続時は iso-latin-1-unix 以外の coding だと 接続できないように書かれているから、そもそも utf-8 で接続できているのが おかしいというか勘違いだろう。
261 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:04:37 ] >>259 ガーン、有難うございました orz そうか、external-formatだけダメってのもあるのか,Release-noteはちゃんと読まないとだめですねぇ
262 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:57:31 ] (setq y '(1 2 3 4 5 6 7 8 9 10 11)) (defun visitor (x) (+ (car x) (visitor (cdr x)))) (visitor y) スタックオーバーフローで死ぬんですけど・・・。 xyzzyにて。
263 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:03:43 ] すまん。自己解決した。 (setq y '(1 2 3 4 5 6 7 8 9 10 11)) (defun visitor (x) (if (equal x nil) 0 (+ (car x) (visitor (cdr x))))) (visitor y)
264 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:14:41 ] ねらい通りのものができたので、記念書きこ。 (setq x '(1 2 3 (4 5 6 (7 8 9 ) 10 11 ))) (defun visitor (x) (if (equal x nil) 0 (if (listp (car x)) (+ (visitor (car x)) (visitor (cdr x))) (+ (car x) (visitor (cdr x)))))) (visitor x)
265 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:21:22 ] 一つの関数書くのに一時間以上かかってる。 鬱だ。情けない。
266 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 21:43:40 ] ま、最初はそんなもんじゃないかな なんとなく別解を書いてみた (defun visitor (x) (if (atom x) x (apply #'+ (mapcar #'visitor x))))
267 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:35:30 ] >>266 まさか同じ処理をするとは思えませんでした。 高階関数を使うとそんなにすっきり書けるんですね。 勉強になりました。ありがとうございました。
268 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:08:43 ] 短く書くだけならこれで十分じゃね?↓ (defun visitor (x) (apply #'+ x))
269 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:10:09 ] …ってごめんよく読んでなかった、今のなしで orz
270 名前:177 mailto:sage [2008/03/31(月) 10:19:14 ] >>266 なるほどな〜。 私もLispを始めたばかりなので、勉強になります。
271 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:37:40 ] 数式処理(maxima)で [x1,x2,x,3...]という記号(変数?)の列を生成したいのですが defmacroを使うのが正しいやりかたなのでしょうか?
272 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 02:24:09 ] d.hatena.ne.jp/niitsuma/20080325/1206964510 rcl(Rとのインターフェイス)が動かなかったので補正してみました. ひょっとしてバグなのでしょうか?
273 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:15:05 ] swigでc++ をwrapしてclispから呼びたい swigのcffiオプションはcはできてもc++はできないみたいなので Allegro Common Lisp用のものを生成して swig -allegrocl -c++ example.i ちょっと書き換えればclispやsbclで動くものになるんだろうか
274 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:40:55 ] ACLの個人向けライセンスの安いのだしてくれんものかのぉ。orz
275 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 08:17:07 ] >>274 学生になったらいいんじゃね?