- 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
- 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))
- 753 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 02:22:33 ]
- CL すげぇ
- 754 名前:718 mailto:sage [2007/01/18(木) 03:01:47 ]
- schemeでもこうできるじゃん
(define-syntax M (syntax-rules () ((M expr) (format #f "~S = ~A" 'expr expr))))
- 755 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 07:14:15 ]
- format って Schemer 的にどうなの?初期のハッカーの伝統を受けついでて
冗談みたいな機能がついてるけど、それってミニマリスト的には許せないよーな
- 756 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 09:04:50 ]
- 俺はこだわらないが
- 757 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 12:33:08 ]
- ミニマリストは純LISPっしょ
- 758 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 13:17:11 ]
- >>755
> 冗談みたいな機能 kwsk
- 759 名前:黒田 mailto:sage [2007/01/18(木) 13:45:08 ]
- 黒板に書ければなんだっていいのでは? :-)
- 760 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 14:46:36 ]
- >>758
スキームは知らんけど、コモンリスプだとこんなんとか (format nil "~R" 12345) => "twelve thousand, three hundred and forty-five" (format nil "~:r" 12345) => "twelve thousand, three hundred forty-fifth" (format nil "~@r" 1234) => "MCCXXXIV"
- 761 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 16:51:19 ]
- >>760
サンクス。それは確かに冗談みたいだ。 少なくともSRFI48には入ってないな。
- 762 名前:デフォルトの名無しさん [2007/01/19(金) 12:13:50 ]
- 試してみたいがこれ試すためだけに
処理系入れるのもなぁ…… SRFI何やってんの
- 763 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 02:20:17 ]
- CLtL*のtexiファイルってないですか?
- 764 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 14:16:48 ]
- RnRSのversion5.92が出たけど、R5RSと比べると結構ページ数が増えてるね。
www.r6rs.org/
- 765 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:32:20 ]
- いまだにオブジェクトシステムもネットワーキングライブラリも入ってない件
- 766 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:47:34 ]
- ↓ここで黒田が一言
- 767 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 20:05:24 ]
- どーんまいん
- 768 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:04:33 ]
- なんか()がatomかcellかで論争があったって話を聞いたんですが、
どんな論争だったんでしょうか。
- 769 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:20:25 ]
- 知りません
- 770 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:59:13 ]
- 知らない馬鹿は無理して会話に入ってこないで
黒板にSchemeコードでも書いてて下さい。
- 771 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 12:44:38 ]
- 黒田にSchemeコードと空目した。
- 772 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 01:16:42 ]
- あまりネにもたないほうがいいとおもわれ…
- 773 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 02:00:44 ]
- からかうなら ILC がチャンス
Scheme 屋が周りにいるとこで「黒田さーん、Scheme が使いものにならない 理由をもう少し詳しく教えてください」とでかい声で英語で聞けばよろし
- 774 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 00:30:00 ]
- ttp://onecare.live.com/standard/ja-jp/prodinfo/default.htm
> ウイルス、ワーム、トロイの木馬、ハッカー、フィッシング詐欺、 > およびその他の脅威からコンピュータを保護します。 ポール・グレアムさん マイクロソフトに言わせるとハッカーはウイスルやワームと同じものらしいです
- 775 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 21:55:26 ]
- >774
マイクロソフト自身がスパイウェア作ってるのにな
- 776 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 00:47:58 ]
- なにこの香ばしい展開
- 777 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 08:37:28 ]
- オープンソーススクリプト言語の糞信者どもが
神聖なLispスレをオナニーで荒らしているのです。
- 778 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 12:23:21 ]
- ジハード!ジハード!
- 779 名前:黒田 mailto:sage [2007/01/29(月) 12:45:17 ]
- Lispが負けそうになったら
自分が出て行ってPとかRをやっつける
- 780 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 13:30:30 ]
- どのスレへ行っても言語勝負厨はうざいな
- 781 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 13:52:37 ]
- 宗教戦争ネタの宿命ですな。
- 782 名前:デフォルトの名無しさん [2007/01/30(火) 15:09:48 ]
- どなたか途中まででいいんでよろしくお願いします。
次に示すScheme プログラムについて以下の問に答えよ。 (define (subtree? t1 t2) (cond ((atom? t1) (eq? t1 t2)) (#t (cond ((atom? t2) #f) (#t (or (and (subtree? (car t1) (car t2)) (subtree? (cdr t1) (cdr t2))) (or (subtree? t1 (car t2)) (subtree? t1 (cdr t2))))))))) 関数subtree?は二つのS 式(S 表現) t1, t2 を入力とし、真偽値(#t あるいは #f) を返す関数である。 関数subtree?が真(#t) を返すための必要十分条件は何であるか答えよ。また、 関数subtree?が実際そのような関数であることをS 式に関する帰納法を用い た議論によって示せ。
- 783 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:11:21 ]
- また宿題かよw
- 784 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:36:23 ]
- 途中まででいいのか。
必要十分条件は(ry
- 785 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:56:26 ]
- この続きはまた来週!
- 786 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:08:02 ]
- ご愛読ありがとうございました
- 787 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:09:59 ]
- >>784 先生の次回作にご期待ください
- 788 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 19:52:23 ]
- んじゃ宿題と関係のないところで。
>>782 のような関数だと、普通はeq?じゃなくてeqv?を使うんじゃないのかね。 eq?はオブジェクトのidentityを調べる以外に使わないでしょ。
- 789 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 20:44:05 ]
- >>788
(atom? t1)なんだから無問題
- 790 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:00:41 ]
- >>789
(eq? 1.0 1.0)
- 791 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:20:25 ]
- LispとPostScriptさえあれば私はハッピーになれる
ttp://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=000994 HHKの記事ですが。
- 792 名前:デフォルトの名無しさん [2007/01/30(火) 23:41:23 ]
- 結局要領のいいLISPの独り勝ちです。
- 793 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:44:20 ]
- forthじゃないところが泣ける……
- 794 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:24:00 ]
- forthは括弧が無いのが失敗だったな。w
括弧でわかりやすくして、逆さから読めばそのままLispになる。
- 795 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:47:08 ]
- カッコも良いけどconcatenativeじゃ無くなるからな……
- 796 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:02:53 ]
- LISP好きだけど括弧ウザイ一派です。
どうにかして括弧をなくせないか色々考えておりますが、現在の所、 予約語を言語内の特別なマクロで定義し、その予約語について ぶら下がる語数やキーワードで判断するという手法でなんとかしよう と思っております。予約語はreadにより振り分けられS式に変換される としましょう。ifならば if <test-part> <then-part> <else-part>という風に。 しかしこれではelseを省略できませんので、thenやelse等のキーワードを 付ける事とします。すなわち、 if <test-part> then <then-part> else <else-part>となります。 お察しの通り、これではC言語同様にぶら下がりelseが処理できません。 でもそれで良いのです。なぜならば、C言語が現状一般的であり、 読みやすいとされる言語だからです。C言語に近い事こそが正義なのです。 そうなるとthenというキーワードも冗長に見えます。 if <test-part> <then-part> else <else-part> なお、LISPではC言語と違い、test-partの中にもifが書けてしまいますが これをLISPの利点としてしまうには早計です。C言語では式と文で 区別されているため、if文の代わりに条件演算子を使わなければ 書けないという仕様になっています。なぜこんな仕様にしたのでしょうか? 考えたことあるでしょうか。
- 797 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:03:40 ]
- (中略)
と、こういった事は皆さんLISPを使っていれば一度は思う所でしょう。 文法を自在に定義できるLISPは一見万能に思える言語ですが、 問題もあります。最初に、予約語はreadにより振り分けられS式に 云々と書きましたが、そうするとS式に変換した段階でソースコードとは 異なる状態で保持される事になります。これはLISPマクロと同様に デバッガで追う事が非常に困難になる事を示しています。デバッガで ソースコードと同期を取るには、とにかくread時に抽出したトークン列の 位置を正確に記していくしかありません。そうしても、1行に何十にも 重なったマクロでは追う事がほぼ不可能になってきます。今では C++のテンプレートでも同様の問題として認知されていますが、 テストケースを作るといった消極的策しかいまだ解決の糸口は見えません。 こういた問題を孕んでいる以上、予約語をマクロで置き換えていくなぞ 愚行と言えるでしょう。ハードコーティング最高!と結論付けて 終わりの言葉とします。
- 798 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 09:33:59 ]
- Lisp:S式の理由
ttp://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Lisp%3AS%E5%BC%8F%E3%81%AE%E7%90%86%E7%94%B1 括弧の理由 (1) -- Emacs による S 式編集支援 ttp://lispuser.net/memo/emacs/2006-12-20-20-36.html まぁ結局S式に落ち着くと
- 799 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 12:06:56 ]
- はてなブックマークで、目を疑うような記事が。
魔法言語 リリカル☆Lisp lyrical.bugyo.tk/ 大反響...。 b.hatena.ne.jp/entry/http://lyrical.bugyo.tk/
- 800 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 18:43:14 ]
- ちゅるやさんの人?
ぱちもん?
- 801 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:08:38 ]
- >LispとはLISt Processingの略で名前通りリストの処理を得意とします。 このことから人工知能の開発に多く用いられています。
- 802 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:18:30 ]
- LispがAIに使われていたのは記号処理が容易だったからなのだが……
- 803 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:24:29 ]
- リスト処理 ⊂ 記号処理
- 804 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:29:15 ]
- >>801
> リストの処理を得意とします。 このことから人工知能の開発に多く用いられています。 「このことから」で済むくらいリスト処理と人工知能の関連が 自明な相手が想定読者なのだろうか?
- 805 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:37:02 ]
- 正直キモイ。ただただキモイ。
- 806 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 13:09:02 ]
- いいじゃん、これがLISPの門戸に人を集めるきっかけになるなら。
頂の高さは、裾野の広さ(とゴミの多さ)で支えられるものだと思うよ。
- 807 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 13:34:43 ]
- Lispeは非Lisperからキモがられてるし、
今さらそんな生理的嫌悪がなんだって話だ。
- 808 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 13:39:20 ]
- アニオタ氏ね
- 809 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 14:14:57 ]
- メンバーは大学4年生か
卒論控えてるというのに余裕だな...
- 810 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 15:30:12 ]
- >>809
世の中なめてるだけだと思う。
|

|