1 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 10:22:53 ] 過去スレ Part14: pc8.2ch.net/test/read.cgi/tech/1132275726/ Part13: pc8.2ch.net/test/read.cgi/tech/1115901841/ Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/ Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/ Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/ Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/ Part8: pc5.2ch.net/tech/kako/1058/10582/1058263391.html Part7: pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part6: pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part5: pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part4: pc.2ch.net/tech/kako/1016/10162/1016211619.html Part3: pc.2ch.net/tech/kako/1008/10082/1008220265.html Part2: pc.2ch.net/tech/kako/1002/10025/1002584344.html Part1: piza2.2ch.net/tech/kako/987/987169286.html
652 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 02:20:36 ] どうでもいいが「シロクロはっきりさせる」と言う言葉がうかんだ。 つかなんでいつもフレームになるんだろう。 頭がよくてもコモンセンスない人大杉
653 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 02:54:09 ] フレームはレクリエーションだから。温泉宿での卓球みたいなもの。
654 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 03:13:09 ] そんなことより SBCL すごいことになってるぞ www.technorati.jp/search/sbcl?language=ja
655 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 06:12:47 ] 確かにすごいことになってるな。
656 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 06:20:58 ] もう荒しはやめろ
657 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 13:03:41 ] lisp嫌いな人って、どこら辺が嫌なんだろ。 前置記法や括弧が多い以外になんか聞いたこと有る?
658 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 13:29:21 ] >>657 個人的にはFORTHとかの変り種とか見てきたせいか前置記法とかは気になったこと一度も無い。 でも初めてlispを知ったときは括弧の対応をどうやってすばやく把握するのか非常に迷った事がある 特にcond周りとかで迷子になったせいで括弧の多さは辟易したが、プリティプリントや構文サポートつきのエディタの存在をしってからは気にならなくなった。 実際嫌いな人何人か見てきても見た目の括弧の多さに引いてしまい、結局のところ食わず嫌いで終わってる気がする。
659 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 15:00:07 ] 自分は多少かじってる程度だけど、むしろずらずらと連続する括弧に快感をおぼえる。 でも、括弧をどう並べたら素晴らしいかは迷うな。 日によっても美しいと感じる並べ方が変わる。 うはw変態ww
660 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 15:27:09 ] Lispに触れる前は、ワサワサと連続する閉じ括弧に「なんだこりゃ」とのけぞったけど、 いざ触ってみたら、閉じ括弧は人間(プログラマ)が意識せにゃならん要素ではなかった。 コードいじってて、閉じ括弧幾つ書けばいいんだっけ? と思ったら とりあえずダダダダっと大量に連続させて、開き括弧にカーソル当てて エディタ様に「切れ目」を選んでもらい、そこで改行&行ごと削除。 ちょっと画用紙で工作してるときのフィーリングに似てるなと思ったりw
661 名前:デフォルトの名無しさん [2006/12/19(火) 16:35:32 ] いくつかスレも立ってるが、括弧のないLISPを作る試みはすべて失敗した。
662 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 19:03:35 ] LISPがウケないのはカッコじゃなくて前置記法だっつうの。
663 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 19:42:10 ] 俺の実体験から言うと括弧でしたよ。 一々括弧の対応を追わずにインデントだけで読める事に気付くまでは大変だった。
664 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 20:28:42 ] >>662 そんなこと言いつつ、アセンブリ言語は好きだったりしないか?
665 名前:デフォルトの名無しさん [2006/12/19(火) 20:29:47 ] 俺は、前置記法だな。 なんつーか、オブジェクト指向言語を使った後で使った後に、 C言語を使ったもどかしさと同じものを感じる
666 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 20:35:06 ] あれこれ使ってると、無意識に (x + y) とか書いてて処理系に怒らることある
667 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 21:32:49 ] >>666 CとSchemeの間は自動的に頭が切り替わるんだけど、 JavaScript付近の微妙なとこだと俺もそういうことがある。
668 名前:デフォルトの名無しさん [2006/12/19(火) 22:24:49 ] もりあがってんな
669 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 22:42:50 ] オレの場合は再帰 とくに末尾再帰を考えると頭が痛くなったな あとはやっぱりlambdaかな 高階関数とか関数型言語のエッセンスもC/C++から来た人間には辛い 括弧よりこっちの方jが壁になるんじゃないだろうか スクリプト言語からなら壁は薄いのかも知れないけど
670 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 22:53:44 ] 末尾再帰はだるかった 高階関数はC使いでも 関数ポインタばりばり使う変態なら結構いけるんじゃね? とかおもった。
671 名前:デフォルトの名無しさん [2006/12/19(火) 22:58:25 ] 高階関数は他の言語でも結構使ってるよ。 制御構造とか作れて便利
672 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:01:57 ] 再帰も高階も使いたくないなら使わなきゃいいだけなんだけどね。 使いたい状況のときに使えるのが利点なわけで、それが壁になるというのは 本末転倒の状況と言えるだろう。
673 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:05:05 ] ループマクロの書き方がわかってんなら再帰する必要もないだろ。
674 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:08:47 ] Common Lisp のLOOPマクロのすべての書き方を覚えるほうが百万倍大変だよな。w
675 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:41:41 ] >>670 関数ポインタと高階関数は違うからなぁ レキシカルスコープで環境まで渡せるのがCommonLispやSchemeの高階関数だし 関数を作って返すことも出来ない >>672 理解出来ていないで使えないのと使わないのでは違うんじゃ 理解していないと使う状況も利点も見えてこないと思う >>673 ループマクロで再帰を代替えできるってのも違うような どちらにしろC/C++からは結構なパラダイムシフトを強いられる言語ではあるような気がする
676 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:07:06 ] >>661 Skillしらん?
677 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:11:21 ] 「すべて失敗した」うちの一つだと思われ
678 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:21:53 ] emacs lispの次くらいに世界で広く使われている(と思われる) lispで書かれた極めて実用的なdesign fare workなんだけど。 ttp://www.google.co.jp/search?hl=ja&q=Cadence+Skill+Lisp+Scheme&btnG=Google+%E6%A4%9C%E7%B4%A2&lr= 数年前の4.3で10Mstep以上だと聞いた記憶がある
679 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:23:09 ] 初めて聞いた
680 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:35:45 ] 分野的に縁がなければ知らないのも無理がないか… Syntaxはこんな感じで ttp://www.ee.vt.edu/~ha/cadtools/cadence/skill.html とても書きやすい。これは(let 使ってるからまだlispの()syntaxの片鱗が見えるけど
681 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:37:49 ] そういやPythonもLogoも中身はLispみたいなもんだったw
682 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:46:49 ] >>661 Guido LispやMatz Lispはまだ失敗してないぞ
683 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:47:29 ] ケイデンスが開発したのか。EDA業界ではメジャーなのかな。 Lispに慣れてるせいか、Lispより読みやすいとか書きやすいとかは正直感じないなぁ。 括弧に抵抗ある人にとっては、こういうほうが良いんだろうけど、マクロとかの話を始めると 結局二重言語になってしまって却ってわかりにくいんじゃないだろうか。
684 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:06:34 ] The following example illustrates a custom syntax for a special way to build a list from an original list by applying a filter and a transformation. To build a list of the squares of the odd integers in the list ( 0 1 2 3 4 5 6 7 8 9 ) you write trForeach( ?element x ?list ’( 0 1 2 3 4 5 6 7 8 9 ) ?suchThat oddp(x) ?collect x*x ) => ( 1 9 25 49 81 ) instead of the more complicated foreach( mapcar x setof(x ’(0 1 2 3 4 5 6 7 8 9) oddp(x)) x * x ) => ( 1 9 25 49 81 ) Implementing an easy-to-maintain macro requires knowledge of how to build SKILL expressions dynamically using the backquote (‘), comma (,), and comma-at (,@) operators. The definition for trForeach follows. defmacro( trForeach ( @key element list suchThat collect ) ‘foreach( mapcar ,element setof( ,element ,list ,suchThat ) ,collect ) )
685 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:07:58 ] >>682 まだ失敗してないけど、成功するとは思えません。 いや、マジな話店頭で気軽に買える処理系がそのまま仕事で使えるようにならないと普及せんだろ?
686 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:15:38 ] >>685 2行目には賛成するが、3行目には賛成できない。
687 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:20:13 ] (defun fibo (n) ( cond (( or (equal n 1) (equal n 2) ) 1 ) (t (plus ( fibo (difference n 1) ) (fibo (difference n 2 ) ) ) ) ) ) ↓こんな感じ。 procedure( fibo(n) if ( (n == 1 || n ==2 ) then 1 else fibo(n-1)+ fibo(n-2) ) ) どっちで書いてloadしても良いんだけどさ。
688 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:21:45 ] 言いたかったのは失敗だなんてのは 悪いけど、井の中の(ry
689 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:28:42 ] 問題はCadenceが言語syntaxに知財持っていると openな似たsyntaxの処理系訴訟されかねないって点かな Cadenceは権利にメチャこだわる(うるさい)会社だから
690 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:43:36 ] Ruby はもうキャズム越えただろ 店頭販売の処理系じゃないとってw その理論だと perl や PHP などの web 系の仕事は成功とは言われない訳だな Java も処理系は売ってないな JavaScript も Ajax などのブラウザクライアント言語として成功しているように思えるがこれも成功じゃないのかw なにが基準で成功なんだwwww
691 名前:デフォルトの名無しさん [2006/12/20(水) 02:49:26 ] >>687 こういうのもLispで自己記述できるんですか?
692 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:49:42 ] 外したよ。自分で気が付かないと。
693 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:52:13 ] Lispで自己記述できるかどうかは知らない。 pretty printするとS式「でも」表示できるから中身は全くのlisp。
694 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:58:54 ] そういうreaderをLispで書くのはさほど難しくはないだろうね。 ただ、言語を普及させるってのは別の意味の労力が必要だからなぁ・・・
695 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:01:17 ] 俺はそう言うopen のreader(あれは単なるreaderではなさそうなんだが) 喉から手が出るほど欲しいんだよ 生産性が桁違いなんだ 自分で作っている時間が無くて残念
696 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:04:40 ] 普通は (defun fibo (n) (if (or (= n 1) (= n 2)) 1) (+ (fibo (- n 1)) (fibo (- n 2))))) って書くから、少なくともタイピング労力的には大差ない気がしちゃうのは 俺がLisp贔屓だからだろうか。w
697 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:05:53 ] たぶんね。もう少しややこしいcodeだとありがたみが分かる
698 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:06:51 ] >>696 あ、ちょっと間違えてるな。w まぁ気分だけ汲み取ってくれ。
699 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:09:42 ] 結局、Lispに慣れてないとなかなかそういう物はつれない。 だけど、Lispに慣れちゃうと特に必要性を感じない。 というわけで、あまり作られないんじゃないかと思う今日このごろ。 Pythonくらいに明確にLispとは違う言語にしちゃうなら話は違うだろうけど。
700 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:11:26 ] 多分 ・lispのcodeの一見難解さが(頭の体操みたいで)好き ・lispの柔軟さが好きだけどパット見た目のcode分かりやすさも重視したい俺 好みの違いの希ガス
701 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:14:39 ] いくら何でも寝ます 最近はHaskellがお気に入りだったりするw ノシ
702 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:55:24 ] 言語自体が S 式じゃなくても 言語の木構造をファーストクラスオブジェクトとして扱える 上記に伴い、文字列・ファイルストリームから評価前の木構造を取り出せる くらいできるとずいぶん使い勝手がいいと思うんだけどなあ。 世の動的言語デザイナーは、なぜ read と eval を分離しようとしないんだろうか。
703 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 04:03:34 ] オブジェクトを忘れょぅょ 関数プログラミングが完全に包含しているんだから
704 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:32:05 ] 閑散 黒田 盛盛
705 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 12:55:35 ] >702 禿同
706 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 13:08:18 ] 結論としては、黒田マンセーということで。
707 名前:デフォルトの名無しさん [2006/12/20(水) 21:19:56 ] >>702 >世の動的言語デザイナーは、なぜ read と eval を分離しようとしないんだろうか。 言語デザイナーと言語実装者が分離してないからじゃないかな。 「正しい事」より実装が簡単な事の方が重要なのです。
708 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 21:36:15 ] 共産主義と資本主義みたいなもんか
709 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 22:02:09 ] >>702 C♯は標準ライブラリを使ってソースをパースしてツリーとして使えるようになってるよ。 あとはHaskellとか。
710 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 22:07:39 ] >>709 C#のそれは違うのだが どう違うのか説明が難しい
711 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 23:02:11 ] Pythonにもあるが、ツリーが奇々怪々で使えない
712 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 10:52:10 ] >710 kwsk
713 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 13:23:45 ] LCG あたりの話かな
714 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 15:19:52 ] 抽象構文木がS式として手軽に扱えるようになってるだけじゃなくて、 quote(やquasiquote)があるのがLispの強い所でしょう。
715 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 15:34:49 ] グワシ
716 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 16:39:55 ] >>702 そうするとCLのシンボルがどこにinternされるか問題みたいなのが 出てきて、今度はそれと戦わないといけなくなる可能性があるからなあ。 Schemeみたいにパッケージ?何それ?なら話は簡単だけど。 全て文字列でやる?
717 名前:デフォルトの名無しさん [2006/12/23(土) 23:56:21 ] OCamlのCamlp4にはquotationもantiquotationもあるよ
718 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:32:53 ] scheme で,階乗を末尾再帰で書こうと思って (define (fact n) (letrec (((fact-sub a n) (if (= n 0) a (fact-sub (* a n) (- n 1))))) (fact-sub 1 n))) こんなふうにしたらうまくいきません.なんで?
719 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:35:52 ] letrec は labels じゃないから
720 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:46:54 ] >>718 おまいさんがやりたいのはこういうことけ? (define (fact n) (let fact-sub ((a 1) (n n)) (if (= n 0) a (fact-sub (* a n) (- n 1)))))
721 名前:718 mailto:sage [2006/12/29(金) 22:14:29 ] letrec では関数は定義できないってことでしょうか? で,そういう場合には名前つきletを使うと. なるほどありがとうございます.
722 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:17:24 ] >>721 letrecでやりたけりゃこうなる。 (define (fact n) (letrec ((fact-sub (lambda(a n) (if (= n 0) a (fact-sub (* a n) (- n 1)))))) (fact-sub 1 n)))
723 名前:718 mailto:sage [2006/12/29(金) 22:22:01 ] >>722 lambda を使うと letrec で定義できるのに, 使わなかったら定義できないのはどうしてでしょうか?
724 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:23:01 ] >>723 どうして定義できると思うんだ?
725 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:29:53 ] (define f (lambda (...) ...)) を (define (f ...) ...) と書けるのと同様の syntax sugar が letrec にも欲しいってことか?
726 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:36:53 ] >>725 そうだとしたらそういうマクロを定義すりゃいいだけのこったな。 欲しけりゃ作る。それがLisp系言語の宿命ってもんだ。 (define-syntax letrecf (syntax-rules () ((_ (((f args ...) b ...) ...) body ...) (letrec ((f (lambda(args ...) b ...)) ...) body ...)))) (define (fact n) (letrecf (((fact-sub a n) (if (= n 0) a (fact-sub (* a n) (- n 1))))) (fact-sub 1 n)))
727 名前:718 mailto:sage [2006/12/29(金) 22:39:37 ] >>725 まさにそのとおりです. OCaml や Haskell だと両者の区別がなかったので, scheme でもそうに違いないと早とちりしていました.
728 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 23:01:25 ] >>726 それってletrecと同じように関数以外の定義も受け付けるようにできね? 俺には無理だが。
729 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 01:57:11 ] >>728 (define-syntax letrecf (syntax-rules () ((_ ((f b) ...) body ...) (let () (define f b) ... body ... ))))
730 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 12:19:22 ] funcall がウザい #' がウザい ただソレだけの理由で CL を避けて Scheme を選んでいます
731 名前:黒田 mailto:sage [2006/12/30(土) 12:54:19 ] ソースはどこに書いてるんですか?黒板?w
732 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 17:02:17 ] 黒田節炸裂!
733 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 19:31:56 ] 酒は飲め飲め?
734 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 05:50:16 ] 俺としては、ローカル変数名と関数名が重なってしまうSchemeは使いたくない
735 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 08:34:17 ] 誰か「対話によるCommon Lisp入門」という本 3000円で譲っていただけないでしょうか?
736 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 12:21:23 ] でた、関数名と関数名に似たような名前付けちゃう人。
737 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 12:33:59 ] >734 ローカル変数を使うときに いちいち関数名とダブってるか気にするのって面倒だよな とうわけで俺はpythonも嫌い
738 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 18:49:09 ] 関数内で使う予定のない関数とダブるかなんてあんま気にしない。
739 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:21:16 ] 全角英数字使う人の好き嫌いなんてどうでm(ry
740 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:29:20 ] >>738 でた、関数名と関数名に似たような名前付けちゃう人。
741 名前:718 mailto:sage [2007/01/02(火) 04:04:45 ] 関数定義で,使わない仮引数(Haskell の _ みたいな)はどう書くの?
742 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 04:40:06 ] _ でも ~ でも好きな名前つけとけばいいじゃない
743 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 23:03:27 ] 図形言語のフレームって円に出来る? 友達が円に出来るって言い張ってるんだけど
744 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 23:20:27 ] >>743 そう作ればそうできるよ
745 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 02:50:19 ] >>743 夢は きっと 叶う
746 名前:デフォルトの名無しさん mailto:age [2007/01/07(日) 23:23:22 ] lambda age
747 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 12:45:33 ] >>737 Python使い始めの頃lenって変数を使ってハマったことがあるw
748 名前:デフォルトの名無しさん [2007/01/15(月) 04:22:11 ] (M (+ 1 2))=>"(+ 1 2)=3" みたいなマクロってどう作りますか?
749 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 05:31:36 ] まず、式とその値を受け取って "式=値"という文字列を返す関数を作ってみ。
750 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 09:38:49 ] constant foldingでぐぐれ
751 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 21:00:11 ] >>748 schemeで書くとこんなカンジかなぁ。 CLは知らん。 (define (s->string s) (let ((port (open-output-string))) (write s port) (get-output-string port))) (define-syntax M (syntax-rules () ((_ s) (string-append (s->string 's) "=" (s->string s)))))
752 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 01:32:24 ] CL ならこうかな。 (defmacro M (expr) `(format nil "~S=~A" ',expr ,expr))