- 1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:23:54 ]
- 過去スレ
Prologでまったり Part3 pc11.2ch.net/test/read.cgi/tech/1193354806/ PrologでまったりPart 2 pc11.2ch.net/test/read.cgi/tech/1102664221/ Prolog でまったり pc5.2ch.net/test/read.cgi/tech/976462999/ リンク集 www.summa.jp/lang/logic/prolog.htm bach.istc.kobe-u.ac.jp/prolog/ チュートリアル www.amzi.com/AdventureInProlog/ computing.unn.ac.uk/staff/cgpb4/prologbook/ www.intranet.csupomona.edu/~jrfisher/www/prolog_tutorial/pt_framer.html bach.istc.kobe-u.ac.jp/prolog/intro/ www.geocities.jp/m_hiroi/prolog/ www.asahi-net.or.jp/~JF1T-YSD/prologV2/
- 477 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:54:25 ]
- >>474
=..は一階述語ですよ
- 478 名前:デフォルトの名無しさん [2009/08/05(水) 22:58:18 ]
- >>477
あの述語自信はそうかも知れないけれど、 あの効果を許すとそうでなくなるのではと。 述語を作れる述語でしょ。
- 479 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:25:25 ]
- >>478
univは複合項とリストを単一化するだけで述語を作ったりはしませんよ
- 480 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 00:13:57 ]
- >474はfindallが一階述語じゃないこともわかってない気がする
- 481 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 01:42:14 ]
- 「述語を作る」という言い方は、微妙にややこしい。
論理式を作るのなら、Goal = p(X,Y)、Clause = (p :- q)などでもできる。 項と論理式を表面上区別しないから。
- 482 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 02:28:41 ]
- 例えば
findall(A,hoge(A),AList) を論理的に考えてみると、 Findall(Hoge,x) ≡ ∀y[Hoge(y) ≡ Member(y,x)] みたいな二階述語になると思う。(あってる?) (=..)/2などで述語と引数をくっつけなくても、述語の引数にあたる変数を指定しさえすれば 高階の呼出しは表現できる、という例になっているんじゃないかな。 でもまあ言いたいことはわかるというか…。
- 483 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 02:38:39 ]
- > Findall(Hoge,x) ≡ ∀y[Hoge(y) ≡ Member(y,x)]
これはリストの順序とか全く無視していてかなりしょっぱかった。今は反省している。
- 484 名前:デフォルトの名無しさん [2009/08/06(木) 04:43:20 ]
- >>480ー481
うんそうなんだけれど、特定の述語で高階化されているというのはまあ、 そう言う機能とかAPI欲しいよねってことで納得できる 中でごにょごにょしてるんだろうと。 =..が変?なのは、述語記号そのものを変数化できるということ =..を使えば ∀X [X(Y, Z)] ってかけちゃうし なんか言ってること微妙に間違ってる気もするがまぁいいやw
- 485 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 08:16:16 ]
- よくわからんけど、
述語論理の述語変数(や述語記号、関数記号)には個々に変数の数が決まっていて、 そもそもPrologの述語名(や関数子)とは対応していないから、 findall/3のやり方の方が、見た目は違っても述語変数を再現できている面がある。 とにかく(=..)/3がなくても一階論理を超えまくっている以上、鍵のように言うのは変だよ。 高階論理風の見た目とPrologの高階性は違う、というか。
- 486 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 08:18:02 ]
- (=..)/3じゃないや。。
- 487 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:14:05 ]
- ?- alive(noriP).
no
- 488 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:25:11 ]
- そんな推測に過ぎない節を登録しないで欲しいな…
- 489 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:23:59 ]
- え?
登録されていない事実だから、否定してるのでは?
- 490 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 15:25:26 ]
- なるほど。
- 491 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:30:07 ]
- ?- stayAt( noriP, Place ).
- 492 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:31:59 ]
- ?-guilty(noriP).
- 493 名前:デフォルトの名無しさん [2009/08/10(月) 13:32:34 ]
- >>486 が顔文字に見える
- 494 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:44:29 ]
- 自信なさそうに、ちょっとうつむき気味に挙手してるようにも見えるなw
- 495 名前:デフォルトの名無しさん [2009/08/18(火) 19:06:04 ]
- プロロげ!Prologer!
ちょっとまったりし過ぎじゃないか?
- 496 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 20:39:31 ]
- レスもprolonger。
- 497 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 10:43:28 ]
- じゃあ別スレで出てきた覆面算でも
ONE + NINE + TWENTY + FIFTY = EIGHTY
- 498 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 18:49:00 ]
- やってみたけど、多少枝刈りしても1分以内にはできなかった。
いや、普通の環境ならできるんだろうけどw
- 499 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:07:58 ]
- この数日、Haskellのスレで続いている副作用談義は勉強になる。
pc12.2ch.net/test/read.cgi/tech/1231861873/
- 500 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 07:29:44 ]
- 発刊予定日さらに延期。2010/4/16。
www.amazon.co.jp/gp/product/0321417461
- 501 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 20:35:51 ]
- prolonged...
- 502 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 21:55:24 ]
- 誰がうまいこと言えと
- 503 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 10:12:24 ]
- Prologってコーディング標準とかないのですかね?
標準でなくてもいいのですが、よく使われている規約などあれば教えてほしいのであります。
- 504 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 10:30:42 ]
- >>503
ICOTではあったと思うけれど、資料はないだろうな。Prologはほんの一部ですが。 その後は、各企業毎に多少は決められてるだろうけど、ほとんど「ない」と 言い切っていいレベルだと思います。
- 505 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 13:14:33 ]
- >>504
そうですか…ありがとうございます。
- 506 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 13:30:04 ]
- 私の場合は「散文的」でありたいと思ってるから、
そういう規則は設けないですね。
- 507 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 16:58:46 ]
- pc12.2ch.net/test/read.cgi/tech/1250204272/176
# [1]講座名:やさしいC言語 # [2] # (1) 「ようこそC言語へ」という文字列を表示し改行するコード # printf関数を使う。 # (2)「 ようこそC言語へ」と表示し改行してから「C言語をはじめましょう」 # と表示し改行するコード。ただしprintfは一回しか使ってはならない。
- 508 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 17:02:09 ]
- >>507
% Prolog t507(1) :- write_formatted('%t\n',[ようこそC言語へ]). t507(2) :- write_formatted('%t\n%t\n',[ようこそC言語へ,'C言語をはじめましょう']).
- 509 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 17:05:57 ]
- 失礼、誤爆でした。>>507と>>508は「いろいろな言語で宿題スレ」に
書き込まなくていけなかった。錯覚しました。
- 510 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 18:59:49 ]
- ところで
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9925.txt こういう課題をProlog流に解釈して解答をつけるとすると、 どんなことになるのかな? Cの解答例としては kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9927.txt がある。
- 511 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 01:52:15 ]
- 世界の散文化はPrologでなされるのだろうか。
- 512 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 21:39:06 ]
- OS X 10.5.8にもSICS Prologってインストール可能だろうか?
- 513 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 10:07:56 ]
- 本家サイトくらい読めよ。
www.sics.se/isl/sicstuswww/site/download4.html www.sics.se/isl/sicstuswww/site/portability.html
- 514 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 10:28:45 ]
- なんですか偉そうに。かわりに読んでください。
- 515 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 12:59:50 ]
- どうしてそういう不安があるの
- 516 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:36:36 ]
- Mac OS X は、普通の Unix 系の OS だから、他の Unix 系の OS で動くアプリケーションなら、動くよ。
動かないのは、デバイスドライバとかの特殊なソフトウェアじゃないかな。 ただ、Mac OS X 用のアプリケーションは、他の OS じゃ動かないよ。 Mac OS X の独自機能だけを使ってアプリケーションを作るのが通例だろうから。
- 517 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 21:38:28 ]
- > Mac OS X は、普通の Unix 系の OS
machスレッドはpthreadとお約束が違うので 微妙に動かなくなったりするけどな
- 518 名前:デフォルトの名無しさん [2009/10/01(木) 20:27:12 ]
- Prolog でやるエロゲー作ったら、みんな Prolog やるんじゃね?
俺は、エロゲーやらないけど
- 519 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 20:29:40 ]
- >>518
lisp ベースのゲームエンジンがあって、それを使ったゲームは そこそこ売れているんだけど、みんなlisp やんないよね
- 520 名前:デフォルトの名無しさん [2009/10/01(木) 20:39:50 ]
- >>519
それは、エンジンが lisp なんであって、lisp でやるわけじゃないんじゃ? 目に見えないと分からないでしょ。
- 521 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 20:42:59 ]
- Age of Empire の AI が Lisp ぽいという話はあったな
- 522 名前:デフォルトの名無しさん [2009/10/01(木) 21:27:19 ]
- そういうチラ見せじゃなくて、
コマンドラインで Prolog 打ったら、 女の子が反応したり、 女の子に新しい何かを覚えさせたり 出来るのを考えてた
- 523 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 21:37:43 ]
- 俺が喜ぶポーズを取ってみろ!
と指令を出すと、登録してある嗜好データベースで演繹して そのシチュエーションでプレーヤーが一番喜ぶポーズを取る萌えキャラ。
- 524 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 03:51:46 ]
- subservient chickenみたいなものか
- 525 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 22:54:00 ]
- ? like(you, me).
no. 〜 Fin
- 526 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 21:06:43 ]
- prologでSWAN SONG。
ピンポンピンポンピンポン!ってできたらいいなぁ。
- 527 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 23:16:07 ]
- SWI prolog はEmacsで使うとプロンプトが出ないんですが、
対処法はありますか?
- 528 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 23:22:37 ]
- Emacs22 + SWI-Prolog 5.7.15 on Linux で使ってるけどプロンプトでてるな。
環境は?昔、Windows上でつかってるときはなんか使い難かった記憶がある。 実用上問題はなかったのでそのまま使ってたけど。
- 529 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 02:46:19 ]
- >>528
Windows上でMeadow+SWI-Prolog(Version 5.6.62)です。 実用上は問題ないのですが、どうも気持ち悪かったものですから。
- 530 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 17:59:35 ]
- ファンクタに破壊的操作を加える述語ってありましたっけ?
- 531 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 18:26:46 ]
- 関数子(ファンクター)をいじるというと…
例えばf(a,b)、f(123)などのfを一気にffにするとか? 述語名には影響はないんだろうか。(いや、複合項のことだろうとは思うけど)
- 532 名前:デフォルトの名無しさん [2009/10/07(水) 05:36:52 ]
- 問題.
久方のなかなる川のうかひ舟いかにちぎりてやみを待つらむ 藤原定家 この短歌に現れる枕詞「久方の」は 「なかなる川」= 京の中なる川 = 桂川 の 桂から月が連想されて、その月の光に対して、 添えられていると考えられる。 この関係を示す述語「久方のについて思い巡らし」を定義せよ。
- 533 名前:デフォルトの名無しさん [2009/10/07(水) 07:03:07 ]
- プロログって
述語(主語や目的語や補語) って形式だよね? なんか自然言語の語順と一致しなくて気持ち悪いんだけど その一因は、当時の計算機の処理能力(速度とリソース)にあると思うんだ。 いまのコンピュータ性能なら、自然言語の語順で同様のことができると思うのだけど そういう言語でプロログに近い推論を行うものってある?
- 534 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 08:58:37 ]
- たぶんない。作ればあるだろうけど。
自然言語に近い語順、はいいけど、機械が扱うためにはきちんと形式化されてる ことが必要だからね。
- 535 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 09:50:36 ]
- >>534
X:>自然言語に近い語順、はいいけど、 O:>自然言語に近い語順、は「どーでも」いいけど、
- 536 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 10:15:11 ]
- >>533
自然言語の語順と一致しなくて気持ちいい
- 537 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 10:51:45 ]
- 気持ちがよければそれでいいのかと問いたい
問い詰めたい
- 538 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 10:56:43 ]
- 自然言語にすり寄っても、論理学との関係がややこしくなったら本末転倒じゃないかな
- 539 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 11:15:46 ]
- 英語的: 主語 <述語> 目的語 :- ... .
日本語的: 主語 目的語 <述語> :- ... . この場合は述語指定に< >を使ってしまうので大小比較の時の記号表現にちょっと困る。 日本語的: (主語,目的語)述語 :- ... . とすれば現在と差なく処理できるが、 英語的: には適用できない。
- 540 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 11:41:56 ]
- relationなんで主語があるとは限らない。目的語も。
- 541 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 12:53:11 ]
- 格概念への割り当てが面倒になって飽きること必至
- 542 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 16:03:17 ]
- >>533
計算機の処理能力というようなことではなく、考えに考え抜かれて、 現在の言語仕様が作られたように思うなぁ。
- 543 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 17:51:10 ]
- 言語仕様はね。
構文は 述語(引数0, 引数1, ...) でなくたとえば (引数0, 引数1, ...)述語 も ありだとはおもうけど、今の形になったのは計算機のリソースの問題とか じゃなくて、数学の記法における慣習とか、そこらへんでないかと。 自然言語ライクな文法って、例えば Mind みたいな文法のことを 言いたいのかな?
- 544 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 03:35:50 ]
- 述語が先にくる自然言語(タガログ語とか)を使えばよろしい。
- 545 名前:デフォルトの名無しさん [2009/10/09(金) 12:34:55 ]
- op で上手く定義すれば、ある程度は自然言語に近付けられそうな気がする。
- 546 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 12:44:04 ]
- >>545
pc12.2ch.net/test/read.cgi/tech/1179157784/30 とか。
- 547 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:00:13 ]
- >>543
フレーゲあたりじゃない?述語論理の形式が整ったのって。 数学の関数 f(x) にヒントを得たんじゃなかろうか。
- 548 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:06:17 ]
- K-Prologについて教えてください。SWIに比べて制約があるようなのですが、
下記のコードはSyntaxErrorになります。 my-reverse([], []). my-reverse([X | Xs], Ys) :- my-reverse(Xs, Zs), append(Zs, [X], Ys). SWI-Prologでは問題なく動くのですが。 K-Prologが本来の文法を維持しているのか?単なるバグなのか? 因みに下記だとK-Prologでも動きます。 my-reverse(R,L) :- my-reverse(R,L,[]). my-reverse(R,[],R). my-reverse(R,[A|L],LL):- my-reverse(R,L,[A|LL]).
- 549 名前:548 mailto:sage [2009/10/12(月) 20:04:58 ]
- すみません、わかりました。K-Prologの意味不明なエラーに
悩まされていたのですが原因は単純でした。 コードの最後の行に改行がないと正しく読み取られないようです。 お騒がせしました。
- 550 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 09:05:17 ]
- 最後に改行ないと本来はエラーなのかな?
- 551 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 17:36:30 ]
- >>550
SWIやYAPでは問題ないのでうっかりなのでしょう。 K-Prologはシンプルでなかなかいいです。 最近、多忙によりメンテされていないようですけど。
- 552 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:42:25 ]
- >>551
<終止符>は二文字で第一文字が"." 第二文字がasciiコード32以下の 文字ですから、K-prologの解釈が正しいと思います。
- 553 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:49:27 ]
- asciiコード32以下、という定義はちょっと面白いな。
0x1a(^Z)でもいいわけだ。
- 554 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 19:37:18 ]
- 節と節の間に空白がなくて駄目だったという事態はわりとよくあると思うけど、
ファイルの終端という罠があったか。
- 555 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 20:53:06 ]
- 32以下ってことは空白でもOKなのかな?
- 556 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:00:10 ]
- もちろんOKでしょ。最後に改行がなくても。
- 557 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:08:01 ]
- Prologの述語ってどの程度まで規格化されてるのでしょう?
M.Hiroiさんの順列生成のコード、K-Prologで動かないので調べてみたら select述語の第1、第2引数の順番が逆に定義されていました。 perm([],[]). perm(Xs, [Z | Zs]) :- select(Xs, Z, Ys), perm(Ys, Zs). /* M.Hiroi perm([],[]). perm(Xs, [Z | Zs]) :- select(Z, Xs, Ys), perm(Ys, Zs). */
- 558 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 07:23:11 ]
- 少ししらべたのでメモ。
select(X,L,<L引く[X]>)の形 ・Quintus Prolog - library(lists) ・SICStus Prolog - library(lists) ・SWI-Prolog - library(lists) ・GNU Prolog select(L,X,<L引く[X]>の形 ・n-queensのプログラムにちらほら見られる(有名な本に載っている?)
- 559 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 07:32:57 ]
- ちなみに、SWI-Prologの古い版(3.1.2あたり)では後者のリスト先行の形もあったみたいだけど
あまりちゃんと見てない。 www.google.com/codesearch?hl=en lang:prolog ^select\(\[
- 560 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 07:54:53 ]
- Prolg-KABA では「ふろく」のプログラムの例としてQUEEN.PLが
載っていて、この中のselect/3は後者。
- 561 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 07:56:05 ]
- 漏れのK-PrologからSWI-Prplog移植の経験(ほんの少し)だと、
[K] name(X, Y) が [SWI] string_to_atom(Y, X) てのがあた。
- 562 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 07:56:22 ]
- Prolog-KABAねw
- 563 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:06:15 ]
- Prologの場合、述語が双方向性を持つことが多いという特殊事情があり、
たとえば、member(A,L) はリストLにAが存在するかを問う場合この順序が 自然だが、Lから一要素づつ順に取り出す場合はPrologとして自然なのは member(L,A) だろう。
- 564 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:06:29 ]
- Prolog-KABAか、懐かしいね。
自分はPC98買えなかったから、会社のHI-UX Prolog(超マイナー!)を触っていた。 その後、WinなPCを買ったけど、当時は日本語がまともに扱えて 個人購入できるのはK-Prologくらいだったから、重宝していたよ。
- 565 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:10:09 ]
- >>563
双方向性という特殊事情があるからこそ どちらが自然であるかは一概には言えない、ってことだよね?
- 566 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:12:11 ]
- SWIにもname/2はあるみたいだけど、整数の扱いが違うとかそういうこと?
www.swi-prolog.org/pldoc/doc_for?object=name%2f2 > (e.g. `name(N, "300"), 400 is N + 100' succeeds) www.kprolog.com/doc/ja/builtins/meta/creation.html#name_2 > アトミック項をその表記である文字列と相互変換します。 これだと数がどうなるのかわからないけど。
- 567 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:18:17 ]
- >>565
そうです。 もっともmember/2についていうと、append/3というスーパーセットがあり、 ?- member(A,[1,2,3]). ?- foo(L),member(2,L). は ?- append(L1,[A|L2],[1,2,3]). ?- foo(L),append(L1,[2|L2],L). と同じ意味になります。append/3くらいの地位を築いていると、 Aの位置が少々不自然でも文句を言う人はいないのかもしれない。
- 568 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:29:31 ]
- >>566
スマン、6年以上も昔の不正確な情報だったかもしれない。 当時作った(K-Prologの)プログラムに、以下のようなコードが残っていたから。 stringToPathList1([A|X], [B|Y]) :- !, name(B, A), /* for SWI-Prolog string_to_atom(A, B), */ stringToPathList1(X, Y).
- 569 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:31:26 ]
- ああ、昔のことだとわからないね
- 570 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 08:43:03 ]
- >>567
自分の場合、双方向性の必要の無い(入出力が明確な)リスト処理については、 関数型言語風のmap_list/select_list/if_listみたいなライブラリを作っているよ。 どれも function(入力リスト, 高階述語, 出力リスト) というスタイルで統一している。
- 571 名前:570 mailto:sage [2009/10/14(水) 08:54:06 ]
- >>570のif_listは間違いだ。reject_listに訂正。
if系は第2引数の高階述語向けとして定義していた。 あと、(appendに相当する)リストの結合処理は作っていないや。 もし作るとすれば、merge_list(入力リスト1, 入力リスト2, 述語, 出力リスト) みたいな感じになると思う。
- 572 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 09:11:31 ]
- プロログで入力、出力とな!(麿のAA略
- 573 名前:570 mailto:sage [2009/10/14(水) 10:25:50 ]
- >>572
スマンw ただ、並行論理型言語(KL1(GHC), Concurrent Prolog)の存在を知ってしまったから、 はたして逐次Prologにも双方向性(=非入出力)の概念が必須かどうかについて、 疑念を持ち始めていた。 もちろん、find_allといった全解探索に双方向性は必要。 でも、その後の得られた解の加工処理については、双方向性はかえって邪魔になる、 言い換えると、入出力を明確にした方がプログラムは読みやすくなると思う。
- 574 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:33:15 ]
- 双方向性を狙って書く人は少ないと思うね。
図らずも双方向性が得られたという歓びで十分だな。
- 575 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:42:28 ]
- append/3 一つで済ませるをよしとするか、別述語とするかという話ですね。
Prologは基本的に単位節述語定義とappend/3だけで書くものだ、でいいと思うけど。
- 576 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:36:25 ]
- >>558
>>560 どうやら select(L,<L引く[X]>,X)の形 もあるね。 % from Sterling and Shapiro, "The Art of Prolog," page 211. と出典のあるやつ。
- 577 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:52:29 ]
- p右向き(X0,X) :- q(X0,X1), r(X1,X2), s(X2,X). % p右向き --> q, r, s.
p左向き(Y,Y0) :- s(Y1,Y0), r(Y2,Y1), q(Y,Y2). あなたも順序を変えたくなーる
|

|