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


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

Lisp Scheme Part17



1 名前:デフォルトの名無しさん [2007/04/20(金) 19:41:39 ]
Lisp全般のスレです

過去スレ
Part16: pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: pc10.2ch.net/test/read.cgi/tech/1151025773/
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/

http://が多すぎるらしいので分割

762 名前:754 mailto:sage [2007/07/12(木) 07:51:20 ]
>>756
どっからカリーハワードだの停止性判定だの証明だのがでてきたんだよ。
そーゆうんじゃなくて、なんか小物の研究でも Haskell や ML ならそれっぽく見えるだろって事。
つうかテーマは研究室の先輩や教官とよく相談したほうがいい…。
たとえば超並列分散 Lisp をつくるぜ!!と決めたとして、周囲の支援が得られず完全自力じゃ評価もまともにできんし、学費がもったいない。

763 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 10:50:20 ]
じゃあ Lisp の型推論がどこまでできるかとか

764 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:26:16 ]
>>762
>そーゆうんじゃなくて、なんか小物の研究でも
> Haskell や ML ならそれっぽく見えるだろって事。
>つうかテーマは研究室の先輩や教官とよく相談したほうがいい…。
>たとえば超並列分散 Lisp をつくるぜ!!と決めたとして、周囲の支援が
>得られず完全自力じゃ評価もまともにできんし、学費がもったいない。

いや、お恥ずかしい話なんですが自分の大学は大学院が無いんで
先輩なんていないんです。
それに指導教官は「何か作れば良いよ〜」という態度なんで
自由な反面、アイデアが必要なんです。
自分の友達は「大学のSNSをxoopsで作る」でOKと言われてました。
自分は「さすがにそれじゃアレかなぁ」と思って。
自分はCUDAでLisp処理系は面白い案だなと思います。
誰でも思いつきそうだけれど、今のところ誰もやってないし、
自分の処理系欲しかったんで。
それじゃ、パソコン買うところから始めなきゃならないんですが(Macなんで)
頑張ってみますね。
C言語は1年くらい触ってないし、マルチスレッドプログラミングは初めてなんで
不安ですが。
出来たらUpするんで、コードレビューしてください。
タライ回し関数が速く動くといいなぁ。

765 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:20:23 ]
逐次処理しなきゃだめな部分は早くならないんじゃないのかな。


766 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:34:47 ]
>>764
くそうらやましす

767 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 20:12:46 ]
一口で大学と言ってもピンキリなんだな

768 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:17:35 ]
型推論 1 (変数、戻り型が単一の型に定まる物)
(define (ack m n)
(cond ((zero? m) (+ n 1))
((zero? n) (ack (- m 1) 1))
(else (ack (- m 1) (ack m (- n 1))))))

(ack (m ?x) (n ?y)) : (result ?z) から ?x ?y ?zの型を求める

(zero? m) => (type_a) : bool
1 => int
(+ n 1) => (int int) : int から ?x = int
(zero? n) => (type_a) : bool
m, nがintなのでzero?の引数は intと仮定して良い
(- m 1) => (int int) : int から ?y = int
末尾コンテキストは+ とackのみなので?z = int
これでack内の +-zero?演算子はintという前提で最適化でける

・・という感じで良い?


769 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:36:38 ]
>(tail-map list '(a b c . d))
=>((a) (b) (c) d)

(define (tail-map proc x)
(let loop ((l x))
(if (pair? l)
(cons (proc (car l)) (loop (cdr l)))
(proc l)))) ;procをcdrにも適用する

(tail-map (proc ?x) (x ?y)) : (result ?z) から ?x ?y ?zの型を求める

(l ?v) = ?x
(pair? l) (type_a) : bool
この中ではl = pairと確定
(car l) => (pair) : type_b
(cdr l) => (pair) : type_c
(proc 〜) (type_a) : type_d
(loop 〜) (type_c) : type_e
(cons 〜) (type_b type_c) : pair
(proc not-pair) : type_f
以上からprocは1引数でtype_aまたはnot-pairを受け取りtype_d|type_fを返す、
xはpairかnot-pair
tail-map の戻り型は pair もしくはprocの戻り型に依存

・・・もうわかんね

770 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:08:54 ]
Schemeが(Haskellほどでないけど)関数的であるとされる根拠の1つに
識別子が一度ある場所に束縛されると
他の場所に束縛を変更される事がないっていうのがあるけど
それをいうならCだって同じですよね?
一度宣言した変数のアドレスはスコープ内で一定

むろん関数的であるという最大の根拠は関数が第一級の値であるというところにつきるんでしょうけど

でもR5RSでは関数のリテラル表記はない、でもそれぞれの実装でサポートしてもよいって扱いですけどね
lambdaは関数のリテラル表記だっていう解説もちらほら見ますが



771 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:12:32 ]
「識別子が一度ある場所に束縛されると他の場所に束縛を変更される事がない」ことが
「関数的である」とは思わないけど

772 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:22:29 ]
>>771
いや、参照透過性とは関係ないのに
識別子の束縛が変更されない事に言及する解説をよく見る気がしたので

773 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:25:43 ]
ヒント: 言論の自由

774 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:20:13 ]
>>768
なんかところどころよくわかんないような。

自分で目の子でやったらこんな感じになったけど、どうかな。
まず (zero? m) から m : number
次に (+ n 1) から n : number
だから ack : number * number -> ?z で
else 節の (ack (- m 1) (ack ...)) の第二引数を見ると ?z = number
∴ ?x = ?y = ?z = number

775 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:43:17 ]
zero?って渡される引数がnumberのみと限定していいのかな。
リストとか入ってきたらエラーでいいんだっけ?
まあそういう判定が減るから全体で3倍ぐらい速くなるかな。

それはそれとして、ackみたいな単純なケースは結構作ってるうちに
適当なのができそうだからどうでもいいと思う。
問題は型が定まらない場合。
上、named-let余計だった。
(define (tail-map proc l)
(if (pair? l)
(cons (proc (car l)) (tail-map proc (cdr l)))
(proc l)))
まあ普通のmap1でもいいけど。
(define (map1 proc l)
(if (pair? l)
(cons (proc (car l)) (map1 proc (cdr l))) '()))

この場合procが確定するまで保留にすべきなのかな?
procは1引数取って何か返す、ぐらいの情報しかないよね。

776 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:50:20 ]
>>775
> zero?って渡される引数がnumberのみと限定していいのかな。
R5RS みると (zero? z) と書いてあって、 z は複素数を表すメタ変数ということだから
そこは問題ないと思う。

で、今気付いたけど = にしてしまうとまずいね。例えば三行目で
(zero? n) が (<= n) だったりすると number ではダメで、
real に推論されなきゃいけない。

777 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:59:38 ]
いや、この際大雑把に「数字かどうか」ぐらいの区別でよくないですか?
アドホックにでも最適化に結び付けて、お手軽に型推論による効果
を体感したいというか。
>>775のmapにしてもフローチェックすればpair?の判定で
car/cdrのpair判定が省略できるとか、そんなレベルから徐々に
大掛かりな仕掛けを考えていければいいかなと。

778 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:01:00 ]
>>777
うん、その方が健全な気がしてきた

779 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 08:55:16 ]
え、そのほうが soundnessがいえるんですか?

と、あえて誤読をしてみる。


780 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 13:14:34 ]
誤読というより誤爆?



781 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 06:51:44 ]
俺、凄い事思いついた!
GHC立ち上げると、
Prelude>
ってでるじゃん。
なんでプレリュード?とずっと思ってたんだけれど、
これってもしかして、
Franz Lisztの前奏曲から来てるんじゃないの?
リストつながりで。

782 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 12:17:40 ]
Franz Lisp

783 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 13:50:04 ]
>>781
prelude って一般名詞じゃないの?

784 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 16:01:21 ]
俺も Prelude は一般名詞だと思う。

785 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 16:54:13 ]
ネタにマジレスなんとやら

786 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 16:58:10 ]
ネタにマジレスを重ねるというネタだったのにマジレスされた…

787 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:13:36 ]
でもそれが、ネタにマジレスを重ねるというネタにマジレスするというネタかもしれないと考えるのが危機管理というものではないだろうか。

788 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:17:54 ]
ネタになりかけのレスと、ネタになる余地のないレスの区別ぐらいつきますわよ。

789 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:19:30 ]
だがしかしそれは主観に左右されるものであるから、絶対的な答えなどないのではないか
つまりは君の意見などどうでもよいのですわよ。

790 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:21:27 ]
ここ、Haskell スレだと思ったら Lischeme スレだったのか!



791 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:27:55 ]
むしろ寝たすれ家と思う田

792 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 21:07:40 ]
自分がアホっぽく見える流れになっちゃったら、
「何か狙ってた」ことにして「お前らのせいでそれがダメになった」と嘆いとくのは基本。

793 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 21:10:43 ]
誤爆?

794 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 23:41:45 ]
アホの子はかあいいよ?

795 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:31:39 ]
gaucheのCVS Headって、ここ最近コンパイルできたためしが無いんだけど、
これってパッチとか作る価値があるの?
それとも、shiroさんの手元ではできてるの?

796 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 18:36:58 ]
wilikiかlingrあたりで聞いてみたら? HEAD使ってる人は何人もいると思うけど。

797 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 20:15:04 ]
普通にできてる。ドキュメントよまずにやってない?DISTほげ

798 名前:795 mailto:sage [2007/07/21(土) 00:53:52 ]
HACKING とかは読んでる。
Cのコンパイルじゃなくて、schemeコードを実行するところで
ライブラリが見つからないとかいろいろ出る。

システム既存のgaucheと衝突してるのかなあ…?

lingrで、makeにいろいろオプション渡すとできるよって言ってた人が
いて、それで前進したけどまだ止まる

もう少しあがいてみるかな

799 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 01:16:10 ]
そうか。
俺は ./DIST gen を忘れてて、コンパイルできねーな?と思ってた事があったんでひょっとしてと思ったんだけどね。
で、どんなエラーメッセージなの?

800 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 21:01:50 ]
>>795
俺もそれではまった。
最近はGauhceのコンパイルにGaucheを要求するので、
古いGaucheを使ってるとgoshがエラー出す。

Gauche 0.8.10(release)使えばコンパイルに成功する。
Gauche 0.8.10(release)すらコンパイル出来ないときは、
バージョンを一個ずつ上げてみて。



801 名前:795 mailto:sage [2007/07/22(日) 17:34:53 ]
>>800
サンクス
調べてやってみます

802 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 01:00:07 ]
schemeってcommon lispのsymbol-valueに相当するもの無いけどevalを使うしかないんですか?

やりたいことはalistに文字と関数のペア入れておいてその関数を呼び出したいんだけど。
'(#\a . func_a)
だとfunc_aは関数にならないから
`(#\a . ,func_a)
と書いてるんだけどいちいち','を書くのがめんどい。
こういうところはマクロを使うのがセオリーなの?

803 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 07:13:30 ]
Schemeでは「symbolに値が入ってる」わけじゃないからね
処理系によっては実行時にはシンボルと値の結び付きは完全に忘れちゃってる
可能性もあるし。
処理系依存で良ければ、symbol-valueとかglobal-variable-refとかが使える
場合もある。ポータブルにやるならevalしかないだろうね。
「文字と関数のalist」とかは普通にバッククオート使っちゃうけどなあ。

804 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 08:50:18 ]
個人的には evalも邪道だと思う。
そもそも R4RS には evalも必須じゃなかったし。
万独裁なら cons でも使え。



805 名前:802 mailto:sage [2007/07/23(月) 11:14:54 ]
>>803
なるほどね。R5RSをよく読んだらそう書いてあったよ。
Common Lisp陣営がSchemeを批判するときの論点がそこなのね。

>>804
確かにevalは使いたくない。

今まで通りquasi quote使って関数をunquoteすることにしました。

806 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:16:11 ]
>>805
> >>803
> なるほどね。R5RSをよく読んだらそう書いてあったよ。
> Common Lisp陣営がSchemeを批判するときの論点がそこなのね。

全然違うと思うが。
Schemeにも1st class objectとしてのシンボルがあればなあという
CLerもいるっちゃいるだろうけどさ。

807 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:38:53 ]
ブラックボード黒田

808 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:49:38 ]
kuroタソ(*´д`*)/ヽァ/ヽァ

809 名前:デフォルトの名無しさん [2007/07/25(水) 09:38:10 ]
www.tekkon.net/ これってlisperの話?w

810 名前:デフォルトの名無しさん [2007/07/27(金) 01:42:56 ]
質問があります。

lispで、他の言語も実装した(というか、DSLを作ってみたというか)
処理系があったと思うのですが、ご存じないでしょうか?

lispでよく用途に合わせた言語を再実装したとう話を聞くのですが、
なかなか実例に合わず、う〜ん?と思っていたのですが、
これを見て、lispすげーと、唸った覚えがあります。

けっこう、最近の言語だったと思うのですが、ご存じないでしょうか?
確か、DSLとしては、ひとつとして、JavaScriptのサブセットを実装していました。
他の言語のサブセットもあったと思うのですが、覚えていません。

もしかしたら、Lispじゃなくて、もしかしたら、schemeの実装だったかもかわかりません。



811 名前:デフォルトの名無しさん [2007/07/27(金) 01:58:31 ]
もしかしたら、lispじゃなかったかもしれません orz
うろ覚えなのですが、中間形式として、S式を使っていたような?
言語内に、いくつかのプログラムがあってそれを組み合わせて、使っていたような気がします。

812 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 02:05:25 ]
>>811
『On Lisp』の24章に、Common Lisp による埋め込み言語としての Prolog 実装の話はあるけど。
ただ Prolog は最近の言語ってわけでもないし……。

813 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 03:48:27 ]
>>811
まさか、TAOじゃないよな。

814 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 04:30:18 ]
Coke & Pepsi?


815 名前:デフォルトの名無しさん [2007/07/27(金) 14:31:02 ]
>>814
それそれ!!それです。
ありがとさんです。

CokeとPepsiとJoltです。

ただ、今見たら、素人の手に負えそうなものではないことがわかったw

816 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:25:35 ]
オナニーしすぎてモーホー炎になりますたw

817 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 00:07:51 ]
>>810
HaskellでPerlを実装した話じゃなくて?

818 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 00:31:50 ]
haskellはschemeで作られました

819 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 02:31:09 ]
schemeはschemeで作られました

820 名前:名無しさん@そうだ選挙に行こう [2007/07/29(日) 13:11:31 ]
・[1492] L2Lisp in Ruby((鈴))
 静的スコープ、末尾呼出し(末尾再帰を含む)の最適化、およびマクロを備えた
近代的なLispの小さなインタープリタをRuby(およびJRuby)で作ります。Rubyの
データ型と親和性が高く、簡単に組込み関数を増設できる手頃なLisp処理系として
利用できます。
codezine.jp/r.x/czn077a/aid/1492



821 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 13:38:23 ]
rubyなら継続も比較的簡単に実装できると思うんだけど
なんでまた半端な物作るかな
CL厨がまた文句言いにくるよ

822 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 14:01:32 ]
「簡単に組込み関数を増設できる手頃なLisp処理系」に継続も装備させようという発想が凄いな。

823 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 15:56:16 ]
手頃な処理系というのならForthの方が良いと思うけどな。

元にしたL2Lispのページを見ると、継続(というかcall/cc)は不完全らしいね。


824 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 16:07:56 ]
Forth でも良いだろうし Lisp でも良いだろう
大して変わらんよ

825 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 20:15:49 ]
>>821 漏れ CLer だけど……どの辺に文句つける要素があるんだ?


826 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:28:16 ]
気にする事は無いよ


827 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:34:11 ]
むしろ継続継続とSchemerが喰いついている件。まぁ、あんまり使われないだろうけど。Rubyistがわざわざこれを使うとは思えない。

828 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 20:58:35 ]
いわんや Lisper おや

829 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 21:20:01 ]
つーかLisperも使わんでしょこんなの

830 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 23:05:29 0]
そういう問題ではない



831 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 23:12:06 0]
なんだ、L2LispってPascalの処理系を移植しただけか。
ruby厨うぜえ。

832 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:09:14 ]
>>825
ブラックボード黒田さんなら、黒板振り回しながら襲いかかるであろう仕様。

833 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:27:42 ]
>>832
一般の Lispnik とは全く関係無いな

834 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 00:59:26 ]
>>820
とてもコンパクトに出来ていて Ruby と Lisp の勉強になりました、

とレスしてほしいんだろw

835 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 04:54:46 ]
継続ってのは後続のことですか?

836 名前:デフォルトの名無しさん [2007/07/30(月) 15:43:41 ]
>>834
そうそう。わかればいいのです(^^)

837 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 17:24:55 ]
荒らすなよRuby厨

838 名前:デフォルトの名無しさん [2007/07/30(月) 17:45:09 ]
Schemeの質問をお願いします。
下記@とAを実行した場合、
それぞれの結果になるプログラムを教えて下さい。
@(my_makelist 5) を実行した結果 (1 2 3 4 5)
A(my_max ’(34 20 30 19)) を実行した結果 34

839 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 19:22:03 ]
(define (my_max list) 34)
(define (my_makelist n) '(1 2 3 4 5))
こんなかんじ


840 名前:838 mailto:sage [2007/07/30(月) 19:40:06 ]
>>839さん
実行しましたが、以下の結果が返ってきません。
@(my_makelist 5) -> (1 2 3 4 5)
A(my_max ’(34 20 30 19)) -> 34
もう一度お願いします。



841 名前:839 mailto:sage [2007/07/30(月) 19:46:15 ]
うちでは動いています。
あなたの処理系のバグではないですか?


842 名前:838 mailto:sage [2007/07/30(月) 20:00:01 ]
839>>さん
昨年、以下のサイトで、
www5a.biglobe.ne.jp/~sasagawa/MLEdit/Scheme/index.html
これを『ChezEdit-NT Ver1.11 setup.exe』インストールしましたが、
何か問題があるのでしょうか?
他のプログラムは問題なく結果が返ってきます。
度々すいません。

843 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:10:51 ]
あなたの頭に問題があんじゃないでしょうか?

844 名前:838 mailto:sage [2007/07/30(月) 20:13:43 ]
>>839さん
@は以下の通りで何とかできました。
(define make_list(lambda (n)
(do ( (res (list n) (cons n res)) )
((= n 1) res)
(set! n (- n 1)))))

Aの方は、以下のmax部分がうまく作れません。
(max 34 20 30 19) -> 34

お願いします。

845 名前:839 mailto:sageクズ学生は邪魔だ さっさと退学して社会の底辺で働けよ [2007/07/30(月) 20:19:04 ]
それと同じ方法で書けば良いと思います

846 名前:838 mailto:sage [2007/07/30(月) 20:23:56 ]
>>839さん
そこを何とか教えてもらえませんか?

847 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:25:38 ]
Prologだと以下のようになります。Prologでまったりには
意地悪な人いないから、遊びにいらっしゃい。
my_max([A|R],Max) :- my_max(A,R,Max).
my_max(Max,[],Max).
my_max(A,[B|R],Max) :- B>A,my_max(B,R,Max),!.
my_max(A,[_|R],Max) :- my_max(A,R,Max).

848 名前:838 mailto:sage [2007/07/30(月) 20:29:15 ]
>>847さん
遊びに行きたいのはやまやまですが・・・。
Prologではダメなんです・・・。
初心者で申し訳ありませんが、
誰か優しい人お願いします。

849 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:36:21 ]
無能にキレる人というのは、無能によく出会うレベルの学校や職場にいる人が多い。
滅多に無能に出会わないようなハイレベルな環境で生きてる人は、もっと「余裕綽々にイジる」。

でも、無能によく出会うレベルの環境に居るってことは、自分のレベルも知れた物なんだよね、実は。
そのくせ上から目線というのはどういうことかというと、つまり自分では優秀なつもりなのに
現実がそれをまったく反映してくれない、そのギャップへの苛立ちを、こういう場所での小爆発で
少しでも解消しようという行為なわけ。

黒板におでこくっつけて頭冷やしたほうがいいよw

850 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:39:58 ]
>>838
俺だったらschemeの上のprolog乗っけて>>847のコード動かすけどな。
On Lisp prologでぐぐって



851 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 20:43:10 ]
>>849
黒板に縛りつけられてチョークを出し入れまで読んだ

852 名前:838 mailto:sage [2007/07/30(月) 20:57:30 ]
あの、私女子大生なんですが・・・。
優しい方にはなんでもお礼しますから回答お願いします。

853 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 21:02:57 ]
VIPでマンマンうpしたら考える

854 名前:838 mailto:sage [2007/07/30(月) 21:04:40 ]
(i)
こうですか?わかりません(><)

855 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 21:29:23 ]
>>849
えらく無能そうな人が出てきたなぁ

856 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 21:33:09 ]
>>838
通りすがりのものですが、行きがかり上こちらも書いておく。
my_makelist(N,L) :- findall(M,for(1,M,N),L).

実用上はこれで良いのだが、ただライブラリを利用したようなものだから、
my_makelist(N,L) :- my_makelist(1,N,L).
my_makelist(N,N,[N]) :- !.
my_makelist(N,E,[N|R]) :- plus(N,1,M),my_makelist(M,E,R).
とすれば、自分で書いた気がする。
なんでこのスレがこんなに伸びるのか(Part 17)、視察に来た
だけです。PrologでまったりはまだPart 2なので。失礼しました。

857 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 21:47:43 ]
>>849
そんなことどうでもいいから答えてあげたら?

858 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:37:17 ]
>>840
(define my_makelist (cut iota <> 1))
(define (my_max l) (apply max l))

859 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:39:39 ]
ほい

> (define (my_makelist n) (if (= n 0) () (append (my_makelist (- n 1)) (list n))))
my_makelist
> (my_makelist 5)
(1 2 3 4 5)
> (define (my_max lst) (if (null? (cdr lst)) (car lst) (my_max (cons (if (> (car lst) (cadr lst)) (car lst) (cadr lst)) (cddr lst)))))
my_max
> (my_max '(34 20 30 19))
34


860 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:42:00 ]
(define my-max max) のほうがいいんじゃ... apply 使う意味がわからん



861 名前:858 mailto:sage [2007/07/30(月) 22:45:58 ]
>>860
おいおい。それじゃ>>838で示してる仕様通りにならんだろ。

862 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 22:53:01 ]
(define (make_list n)
(define (ml n l)
(if (= n 0) l (ml (- n 1) (cons n l))))
(ml n '()))

(define (my_max l)
(define (max2 x y) (if (> x y) x y))
(define (mm x l) (if (null? l) x (mm (max2 x (car l)) (cdr l))))
(mm (car l) (cdr l)))








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

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

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