[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 12:58 / Filesize : 211 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

((Common Lisp) (Scheme) :Part 15)



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
世の中なめてるだけだと思う。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef