1 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:41:07 ] 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))
633 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 00:02:15 ] >>628 最初にそう聞いてくる奴ならそう答えるさ。だがちゃんと丸投げですと宣言したならズバリ答えを解答しちゃうよ。 もし本当にやる気があるなら、ズバリの答えでもちゃんと見て考えるさ。見とり稽古みたいにね。 全体図と筋道を見せてからゆっくり詳細を解析したいって人もいるかもしれない。 やる気がない人をむりやりやらせるなんてのは非生産的。
634 名前:622 mailto:sage [2007/10/08(月) 00:03:38 ] >>633 やる気はあります!
635 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 00:43:23 ] そうか。んじゃ使ってる Common Lisp 処理系で次を見てみよう。 (loop for l on lst ;; '(A B C D) => '(B C D) => '(C D) => '(D) => NIL for e = (car l) ;; A => B for l2 = (cdr l) ;; '(B C D) => '(C D) do (print l) (print e) (print l2))
636 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 06:21:28 ] やる気があるのなら教官に聞けよ
637 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 06:41:15 ] 宿題がでると妙に活気づくなあ。よいよい
638 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 08:29:35 ] >>622 Scheme 臭いコードだなあ。 internal defun なんて意味不明なこともやってるし。 どこの大学のなんて香具師が担当してる講義なのか晒しちゃえよ。
639 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 09:02:43 ] scheme臭がすると異常反応するスレw
640 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 09:15:13 ] 過剰反応っていう言葉はあるけど、異常反応ってのはあんまり聞かないな。
641 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:40:54 ] Scheme臭に抵抗無かったらSchemeを使ってるよ
642 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:13:23 ] 俺はScheme臭に抵抗ない、むしろSchemeっぽい書き方の方が好きだけど、 Common Lispの便利な機能でSchemeにないものが多いからCommon Lisp使ってる
643 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:16:26 ] たとえばなに
644 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:25:48 ] スペシャル変数とか
645 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:24:02 ] エレガントかつ強力なloop構文とか
646 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 21:04:26 ] format
647 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:45:18 ] reader macro
648 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:03:54 ] compile, eval-when, disassemble, trace, optimize ... とか? でも Scheme も Gauche なら便利だから使うな。頭は別の言語として切り替わるのであんまり困る事はない。 むしろ片方を撰択して、もう片方を見下す、みたいな行為をやめて両方使えばいいじゃん。
649 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:17:20 ] 見下されたと錯覚した人が攻撃に転ずる気がする。多くの戦争と同じ原理だ。
650 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:30:52 ] CL の人としては funcall はクソとか、*常に* 末尾再帰を最適化しないとクソ、みたいな一面的な見方に反論したくなる気持ちはわからんでもない。 が、実際にいちいち反論する人は 2ch 以外ではあんまりみかけないなぁ。
651 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:32:20 ] そういや 622 はどうなったんだ?締切とか大丈夫なのか?
652 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 07:38:56 ] ΣってどうやってCommon Lispで定義出来ますか? リスト(2 4 6 8 )を全部足す奴。 なるべく再帰で。
653 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 07:58:10 ] >>652 (loop for x in '(2 4 6 8) sum x)
654 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 08:38:38 ] そういうときは apply 使うのが好きかな (apply #'+ '(2 4 6 8))
655 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 09:53:05 ] >>649 そんでもって、「見下してないよ、それはあなたの被害妄想だよ」と言い張れる言い方で見下すのが ネットの基本戦術なんだよな。
656 名前:デフォルトの名無しさん [2007/10/10(水) 12:09:12 ] ACLのアカデミック版って($99の奴)って 日本の学生って適応されないの? ざっとみたところ、米国のみって記述が見つからなかったけれど。
657 名前:656 mailto:sage [2007/10/10(水) 18:03:34 ] お金払ったのに、いつまでたってもソフトウェアダウンロードの案内がこない (ストアのアカウント作成の案内も)と思っていたら、 help.yahoo.co.jp/guide/jp/mail/info/071010/ マジカよ。アリエネェだろ。 フリーメールで登録するんじゃなかった。 日本のFranzに問い合わせても大丈夫かな。
658 名前:デフォルトの名無しさん [2007/10/10(水) 19:52:34 ] (defun sigma (x &optional (y 0)) (if (null x) y (sigma (cdr x) (+ (car x) y)))) 再起にしたらこんな幹事?
659 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:01:45 ] 末尾再帰って指示ないなら出題者はこっちを意図してるかも (defun Σ (list) (if list (+ (car list) (Σ (cdr list))) 0))
660 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:04:16 ] >>654 でまずい理由でもあるの? >>658-659 はΣでもなんでもなく、+の再定義でしかない
661 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:33:34 ] >>660 拡張しにくい。範囲の制限や関数 f を適用した結果を集めたいときに、関数ならパラメータを追加することで対応できる。 というかそっちの方向に進むと思われるので、(apply #'+ ...) じゃなくて普通は自前で実装するところからはじめるんだろう。
662 名前:デフォルトの名無しさん [2007/10/10(水) 22:19:46 ] sbclのコンパイルについて教えてください・・・。 動作環境はWin XP, sbcl Ver.1.0.9です。 ttp://fridge-shell.blogspot.com/2007/02/sbcl.html このHPと同じように操作すると、outファイルができるので、 これをout.exeにリネームしてコマンドプロンプトで実行すると 応答がかえってこずに固まってしまいます。 このスレで、sbclでコンパイルした実行ファイルはサイズが大きい(10MB?) というレスをみましたが、outファイルは2kBしかありません。 ネイティブコンパイルする手順がWin版とLinux版では異なるのでしょうか・・・
663 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:34:35 ] >>662 SBCL Windows 版はまだ誰もが使えるような状況ではありません。 試験的なリリースですので問題を自力で解決できる人向けのものです。 Windows 版自体がまだ実験的なものですので、EXE の生成機能は非サポートです。 「ネイティブコンパイルする」 == 「.exe を生成する」というのは Lisp の世界においては成立しません。 .exe を生成するのは「スタンドアロンなバイナリ/実行形式を生成する」と呼ばれる機能です。 ネイティブコードの生成自体はもっと簡単です。プロンプトで (compile nil (lambda (x y) (+ x y))) と打つだけで コンパイラはネイティブコードを生成できます。
664 名前:662 mailto:sage [2007/10/10(水) 22:46:09 ] >>663 ご回答ありがとうございます。 Win版はexeの生成は非サポートだったのですね・・・。 こういう時だけlinuxが羨ましくなります。 orz いろいろと勉強になりました。 ありがとうございました。
665 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 23:00:41 ] ついでに言っておくと、Lisp の世界ではスタンドアロンバイナリ生成を使う機会はほとんどない。 なぜなら、Lisp の世界ではアプケーションはユーザーが触って変更できる「システム」である事が多いから。 Emacs や Maxima や Aximo などはユーザーがプログラムを投入するたびに .exe を生成したりしない。 ベースの機能にユーザーによる拡張をインクリメンタルに追加しながら増えていくんだ。 この辺が感覚的に合わないなら Scheme のほうがいいかもしれない。 # LispWorks や AllegroCL、CormanCL のような商用の話や、GCL, ECL, といった GCC をバックエンドに使う連中とかはまた別
666 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 01:40:48 ] >>665 「Schemeのほうがいい」理由がよくわからん。 単にスタンドアロンバイナリをスマート作れない処理系が多いというだけでは?
667 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 02:19:03 ] サイズはでかいけどwinのsbclでsave-lisp-and-dieは 結構まともに動いているように思う。 一般的でないのはlispで配布するという機会が見ている分にすくないだけで exe作るのって他所の言語と比べて難しいとは全く思わないのだけれど。 lispで作られて配布されている有名なソフトってあります?
668 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 08:05:42 ] >>662 sb-executable って、もうほとんどサポートされてないよ。 save-lisp-and-die の :executable に置換済み。 >>667 が言ってるように、save-lisp-and-die は Win32 でもちゃんと動く。 C:\>sbcl This is SBCL 1.0.9, an implementation of ANSI Common Lisp. <snip> This is experimental prerelease support for the Windows platform: use at your own risk. "Your Kitten of Death awaits!" * (defun main () (print "Hello, SBCL!") (quit)) MAIN * (save-lisp-and-die "hello.exe" :toplevel #'main :executable t) [undoing binding stack and other enclosing state... done] [saving current Lisp image into C:\\hello.exe: writing 1960 bytes from the read-only space at 0x02000000 writing 1640 bytes from the static space at 0x02100000 writing 22888448 bytes from the dynamic space at 0x09000000 done] C:\>hello This is experimental prerelease support for the Windows platform: use at your own risk. "Your Kitten of Death awaits!" "Hello, SBCL!"
669 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 08:12:26 ] 便乗質問させてもらうけど 1. ネイティブコンパイラがある(コンパイルした結果が速い) 2. 実行可能形式(EXEやDLL)が作れる 3. マルチスレッドアプリが書ける。 4. (基本的な)CLOS(オブジェクト指向)機能のサポート 5. ソケットインターフェースのサポート 6. 作成したアブリを配布する際のライセンス料が安い、もしくは無料 これらの条件を全て満たすフリー もしくは比較的安価な商用Lisp処理系と言ったら やっぱりCorman Lispが一番かな? ブラットフォームはWindowsが前提です。
670 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:41:35 ] Windows ってだけでフリーの実装はほぼ全滅だからね Lisp で遊ぶなら UNIX
671 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 12:25:35 ] >>669 比較的安価ってだけでLispWorksがそれに該当するんじゃない? (対象がACLだから安く感じるだけかもしれんが)
672 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:23:22 ] 商用だとTorrentはまずいかな。
673 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:46:22 ] Windowsにポーティング中のSBCLはGCのバグまだ残ってるみたいね。 やる気ないにしても、POSIX以外だとそんなに移植が困難な実装なのかな? それともWindowsで動かせちゃダメみたいな変な勢力が邪魔してるとか。
674 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 18:28:42 ] >>666 「スマート」の意味がわからん。スタンドアロンバイナリにスマートとそうじゃないものがあるの? CLISP, SBCL, GCL, ECL, ACL, LispWorks, CormanLisp... スタンドアロンバイナリを生成できないのって ABCL くらいじゃないか。 >>668 SBCL for Win32 系で「ちゃんと動く」とかは言わないほうがいいと思うんだよなー。 use at your own risk なんで初心者に進めると混乱の元じゃないか。 >>669 ECL も忘れないでやってください。 >>673 単に開発者がいないだけ。
675 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 01:45:55 ] 俺は OpenMCL をいつか弄りたいと思ってる。スレッド廻りきちんとしてそうだし、フットプリント小さいし。
676 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 08:42:10 ] OS7でMCL使ってたけどあの環境良かったなあ。
677 名前:デフォルトの名無しさん [2007/10/12(金) 20:55:25 ] 2ch発のLisp処理系作ろうぜ
678 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:17:50 ] >>677 よし、yacc と PHPで作ろう。
679 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:34:48 ] どうせならPHPのみで ↓まかせた
680 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:56:21 ] >>676 どんな感じだったの?紹介してくれよ。
681 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 21:59:26 ] LISP作るのにyaccはどう考えても出番が無いだろ
682 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:07:40 ] >>681 リーダーマクロとかあるからあった方がよくね?>>yacc 勿論Common Lispをフル実装するんだよ。
683 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:11:18 ] yaccで作ったんじゃ動的なリーダマクロにならないじゃん
684 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 22:19:27 ] 本スレでやってくれ。
685 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:31:06 ] どうせ作るならCommonLISP上位互換にしてください。 このスレではCommonLISPの仕様を満たしてないと LISPとは認めませんので。
686 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:33:15 ] 荒しうぜぇ……
687 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 23:55:52 ] 自分の気に入らないもの=荒し やれやれ・・
688 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:29:21 ] 確かに、やれやれとしか言い様のない妄想等式だね。
689 名前:デフォルトの名無しさん [2007/10/13(土) 00:42:28 ] 言語の実装が入門スレにふさわしいわけかね。まぁ本スレへの誘導も無視してるし、荒しだと思っとくよ。
690 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 01:36:29 ] >>677 がここで話振ったんだから奴に任せようぜ
691 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 03:21:45 ] 処理系作るってのも立派な入門内容だと思うけどなあ。特にLispの場合は。 動作原理知るために1度は通るでしょ。 >>677 の枕詞にCommonLispでもあれば納得したわけ? つーかこの程度で荒らし認定かよ。 どうせ特定の一人だろうけど、きもすぎるわ。
692 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 07:39:45 ] まぁやるのはいいと思うよ。俺は興味ないけどさ。 具体的な作業をはじめるか、本スレに移動すりゃ文句いわれないんじゃない?
693 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 12:40:25 ] 荒らしというほど荒らされてるようにも見えないしなあ。 ぐだぐだ言ってんのは約一名だろうね。
694 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 13:56:05 ] >685が煽りっぽい言葉を書いてるのは確かだろ。 「Common Lisp上位互換」なんて洒落にもならん事を。 >686が「荒らし」と言ってるのはその事だけだろ。
695 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 14:18:24 ] >>686 が誰を指して言ったかなんて本人にしかわかんと思うぞ 本人乙
696 名前:694 mailto:sage [2007/10/13(土) 17:26:36 ] >695 俺は >686本人じゃないけど勝手に自分達が非難されてると解釈して 感情的に反応するより遥かにマシだろ?
697 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 17:41:36 ] >>695 > わかんと思う どういう意味ですか?
698 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 19:37:16 ] 和姦と思う
699 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 20:50:25 ] どうも、誰か一人が自分を攻撃しているというふうに捉えているようだね・・・ どうせならなにか生産的な話題を振って荒しじゃない事を行動で示せばいいのに。 結局 >>686 が正しかったのかね。
700 名前:デフォルトの名無しさん [2007/10/14(日) 22:06:45 ] 2ch発のCommonLisp処理系作ろうぜ
701 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:59:06 ] 成功したプロジェクトが実は 2ch 発だったってことはよくあるけど、 最初から 2ch 発でって言ってて成功したためしはほとんどないんだよね。
702 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:22:31 ] そもそも2ch発なんて名ばかりで実質匿名の個人作業公開オナニーだろ
703 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:43:58 ] 「2ch発」という言葉にどんな定義を見出しているのかがわからんレスだな。 急に中二病による発作に見舞われて、いつもよりちょっと大きめの打鍵音を立てて ケツに「公開オナニー」って書き加えた辺りの心の動きだけは、容易に理解できるけど。
704 名前:デフォルトの名無しさん [2007/10/15(月) 05:26:32 ] 出たよ定義厨
705 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 11:45:40 ] とりあえず厨をつけてみたのはわかった。 もうちょっとうまく展開できてたら、苦し紛れがバレなくて済んだかも。
706 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 19:48:07 ] オナニー禁止なんてお前らプロテスタントかっつーのwwww
707 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 20:25:09 ] 誰かが俺を攻撃してる!→ファッビョーン→荒れまくり というのは、以前に本スレでも似たような流れがあったよねぇ……。 ちょっと前に宿題聞いてた人たちは、結局自力で解けたの?
708 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:06:48 ] (a (b) c (d (e)) f) こういうリストがあったとしてeを削除したいんですがどうやったら取り出すことができますか? 関数定義したいんですが。 first secondなどで取り出してるんですがうまくいきません。 アドバイスありましたらよろしくお願いします
709 名前:デフォルトの名無しさん [2007/10/15(月) 23:07:50 ] >>707 まだ解けないです!
710 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:29:01 ] >>708 ほしい結果はこれ? (a (b) c (d ()) f)
711 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:48:27 ] >>708 listっていってもconsセルの集まりなんだから絵を描いて整理してみれば。
712 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 09:33:47 ] まずは簡略化した問題の解を得て、それを元に改良していけばいい。 708ならまずはネストしていないリスト(a b c d e f)からeを除く関数を実装する あたりから始める。 (目的は近似解を得ることなので、deleteとか使わず自分でやる)
713 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 13:20:35 ] >>710 >>711 >>712 レスd 再帰で何とかできました。
714 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:27:07 ] どうやって出来たか教えてー
715 名前:デフォルトの名無しさん [2007/10/16(火) 23:13:07 ] すいません。質問させてください。 中置演算子で書いた簡単な計算式を解析して実行するプログラムを書こうと思うのですが、 '( 1 + 1 ) ってリストを作って、演算子を取り出しても計算できません。 リストから関数は取り出せないのでしょうか。 (begin (define calculate (lambda (l) ( ((car (cdr l)) (car l) (car (cdr (cdr l))))))) (calculate '(1 + 1)))
716 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:19:42 ] マクロにするか演算子の値で分岐しないといけないような。 シンボルを識別子とみなして値を取り出すって Scheme でできたっけ?
717 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:25:04 ] evalが使えるはず
718 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:29:54 ] eval使うまでもなく (define op-alist `((+ ,+)(- ,-) ...)) みたいなの作っとけば ((cadr (assq (cadr infix) op-alist)) (car infix) (caddr infix)) で呼べるでしょ
719 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:35:00 ] CLの人: (funcall イイ。(( は構文と見た目が区別できんからイクナイ。 CL-USER> (defun calculate (lst) (funcall (second lst) (first lst) (third lst))) CALCULATE CL-USER> (calculate '(1 + 1)) 2 Schemeの人: (funcall ウザイ。 (( ってかいて括弧の数を数えたい。
720 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:36:45 ] やはりschemerの方が知能が上みたいですね。 CommonLispは小手先だけ器用になりそなイメージです。
721 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:48:11 ] i < おまえより知能の高い酸のブロッブを知っているぞ
722 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:51:27 ] >>719 毎回比較したがるクセは直したほうがいいね
723 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:10:10 ] 関数定義が (define hogehgoe (lambda (x) ...) ってのがムカツク。引数の数がちょっと見ではわかりづらい。 しかし、(define (hogehoge x) ...)ってのはなんとなく呼び出した結果を定義してるみたいで嫌だ。 (defun hogehoge (x) ... は良い。hogehoge っていう(関数)シンボルを定義してるんだなーって感じがしてわかりやすい。
724 名前:715 mailto:sage [2007/10/17(水) 00:27:32 ] 回答していただいてありがとうございます。 リストは基本的なデータ型しか入れられないんですね。 だから関数を入れると型が不明のシンボルとして扱われてしまうと。 勉強になりました。ありがとうございます。
725 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:49:47 ] >>724 なんかちょっと誤解してるみたいだけど、まあそれはおいといて、 schemeでわかんなくなったら本スレの方においで。 このスレの住人はschemeコンプレックス発動で それどころじゃないみたいだし。
726 名前:デフォルトの名無しさん [2007/10/17(水) 00:50:29 ] common lispで gauche の util.math みたいなのありませんか? 無くても自分で作るんですが。 arnesiのmatcherが惜しい。
727 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:57:43 ] 質問の仕方がなってないな gaucheのutil.mathとやらが何を提供してるのかまず書け
728 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 01:52:07 ] どっちが上とか、コンプレックスなんて持ってるのは初学者だけだよ。 ある程度やってる人は、Common Lisp も Scheme わかってる。 どの言語が上とか下とかじゃなくて、用途によって使い分けてるだけ。
729 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 01:59:05 ] >>723 コード中で(func args)っていう呼び出しを思いついたら、 そのまま(func args)をコピってきて(define (func args) 〜)とできるから むしろ便利だと思うけどな。そもそも構文唐なわけだし。 defunは括弧の位置を修正しなきゃいけない。
730 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 02:19:14 ] >>727 申し訳ない。 ML likeなパターンマッチライブラリで・・・と clikiに似たのがあったので終了します。 ググっても無くググ子っても見付からないのでつい聞いてしまった。(code search)
731 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 10:27:00 ] >>716 715では無いが>>715 をマクロでやろうとするとどうなるんだ?
732 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 13:08:09 ] (defun keisan1 (l) (list (second l) (first l) (third l))) (defmacro keisan (l) (keisan1 (second l))) (keisan '(1 + 1))
733 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 21:27:18 ] (defmacro m (lst) `(,(second lst) ,(first lst) ,(third lst))) (m (1 + 2)) => 3