◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:Prologでまったり Part5 [無断転載禁止]©2ch.net ->画像>1枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1490334702/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
すみません。最後のPartなしは、リンクが切れていました。 一番肝心のスレッドなのに残念ですね。
人工知能がブームになりつつあり、Prologにとっては追い風と書いたところ、 ジャンプするには向かい風の方がよい との答えをもらいました。
Prologに型概念はないと言い切ってよいものだろうか。
ふと、新聞に載ってる論理パズルを解くプログラムを書きたくなって Debian に GNU Prolog をインストールして二十数年ぶりに Prolog を楽しんでるのだが、 まだ maplist が実装されていないバージョンだということに今気付いた。 2007 年にリリースされた 1.3.0 らしい。いや、特に困るわけでもないが。 fd_domain や fd_all_different は実装されてるからね。特に不足は無いよ。 不足があるなら自分で新しいのを入れればいいし。まあ、まったりいこう。
>>888 その部分では関数型言語も手続型言語もオブジェクト指向が強調されたものでも記述はできるが、その記述の関係さ
すみません。論理Polog初心者スレと間違えて書き込んでしまいました
>>5 型はないです。型という概念が使われることもない。外からどう見えようとも。
>>9 本当は integer や float も atom という認識でよかったのではないか
人工知能といっても今流行ってるDeepLearningの世界にPrologの出番なんて無いと思うんだけどどう関係すんの?
>>11 DeepLearningを含む機械学習やニューラルネットワークによる認識は
人工知能のごく一部。知識プログラミングにこれがつながるのはそれこそ
進化論的に大変。人間の思考、判断、意志、統制は、シンボル操作がやはり
中心になる。この領域の中心付近に述語論理があり、そういう意味で、
Prologはこの人工知能の世界では今後もずっとに安泰の地位にいる。
>>12 ごく一部といっても今流行ってるのは機会学習だけでそれ以外は良くも悪くも全く変わってないよね?
だからPrologにとって追い風も何も無いと思うんだが。
>>12 Prologは記号処理に還元できる問題は得意だから今後も使われるだろう。
でも人間の曖昧な思考やそれに基づく自然言語は記号処理に還元できない。
そして自然言語処理でDeepLearningが次々と成果を出している。
FacebookのMemory Networksは述語論理抜きで質問に答える。
Prologはもう人工知能研究の中心ではないし今後もならないのでは?
ニューラル機械翻訳と記号幻想の死
http://rekken.g.hatena.ne.jp/murawaki/20161017/p1 Facebookの人工知能アルゴリズム「memory networks」について調べてみた
https://www.slideshare.net/metaps_JP/facebookmemory-networks-keo NIP2015読み会「End-To-End Memory Networks」
http://www.slideshare.net/unnonouno/nip2015endtoend-memory-networks >複数の文からなる事実から、質問に答えるタスクを、end-to-endで学習する手法を提案した
>単語の埋め込み、文のエンコード、各事実に対するattention、
>回答の生成までを単一のネットワークにする
>>15 >でも人間の曖昧な思考やそれに基づく自然言語は記号処理に還元できない。
こう言い切る根拠がわからない
>>16 数学の命題のように100%正しい命題なら記号処理に還元できる。
でも風が吹けば桶屋が儲かるのような確率的命題を扱うには
離散値ではなく連続値で推論する仕組みが要る。
ベイジアンネットワークやニューラルネットワークなら確率的命題を扱える。
swi-prologをEmacsで書く環境つくってるんだけど run-prologで質問にセミコロンで答えてもリターンキーおすまで反応なくて リターンおすとそこで終りになってしまうんだけどいい対策ないですか? ターミナルならちゃんと次の答えの候補までだしてくれるんだけど
ありがとう。そういうことが起こるということには気付いてたけど shell-mode を使ってるからだということがやっと分かった。 shell-mode では ; を単独で送れるようなキーバインディンディングにはなっていない。 しかし、run-prolog にも同じ問題があるとしたらいささか奇妙なことだと思うのだけど。 とりあえず、; にちゃんと応えてほしいなら ansi-term を使えばいいかも。 もちろん run-prolog を使いたいだろうとは思うけど。 ; は諦めて失敗駆動ループで全部出力するという手もあるよ。
解ったぞ! ; の後に M-x (comint-send-input t) だ! やってみた! | ?- member(X,[a,b,c,d]). member(X,[a,b,c,d]). X = a ? ;; X = b ? Action (; for next solution, a for all solutions, RET to stop) ? ;; X = c ? Action (; for next solution, a for all solutions, RET to stop) ? ;; X = d ? Action (; for next solution, a for all solutions, RET to stop) ? ;; (4 ms) no | ?- どうだ、うまくいったぞ! ……って、やってられっかー! やっぱり run-prolog の方で対処してくれないと。
単に Prolog インタプリタを対話的に使いたいだけなら Emacs の外でやる方が快適なんだけど それでは不便だからやっぱり Emacs の shell でやりたい。だからこんなことをしてみた。 (defun comint-send-input-without-nl () (interactive) (comint-send-input t) ) これを C-c C-j にバインドして使う。どうやら期待通りに動いているようだ。 まあ、; はよく使うからこんなのを使ってもいいかな。 (defun prolog-other-answer () (interactive) (insert ";") (comint-send-input t) ) こっちは C-; にしてみた。
よくわからないけどM-;で%が入力されて 全部の回答がでてきた
>>10 50数冊Prologの本は出版されていますが
型についての言及はほとんどないですね。
データ型という意味なら項(term)が該当するのだろうけど C/C++の型の意味だとPrologは型無し言語にあたるかと・・
>>25 型とかクラスということを考えると、述語で定義される全体が、それにもっとも近い
ような気がします。変数も単一化の道具のようなもので、事実上ないと言うに近い
ですし。
>>26 Prologの変数って、
長い長い ======================== 等号のように見えますね。
Prologの変数では、setof/3やfindall/3の中の変数ですね。 外側の変数を受け継いだ場合です。 ?- length(L,2),setof(A,A ^ member(A,L),X),L = [1,2]. L = X, X = [1, 2]. ?- length(L,2),findall(A,member(A,L),X),L = [1,2]. L = [1, 2], X = [_G711, _G708]. ?- setof/3は受け継いていますが、findallでは切れています。
自由変数なんていう概念が通用することが分かります。
>>18 問題は解決した? 原因が判ったよ。
; には prolog-inferior-self-insert-command というコマンドが割り当てられていて、
これが期待される動作だと思うんだけど、新しいバージョンではなぜか
この prolog-inferior-self-insert-command が無くなっている。
Emacs 24.4 に含まれている 1.22 にはまだあるけど 1.25 には無い。
理由は判らない。少なくとも prolog.el の Changelog にはそれらしい記述が無い。
とりあえず、prolog-inferior-self-insert-command があるバージョンを
使えばいいと思うよ。
ファイルから行ならびを得る(_ファイル,_行ならび) :- open(_ファイル,read,_入力), findall(_項,( repeat,(at_end_of_stream(_入力),close(_入力),!,fail; 行入力(_入力,_行))),_行ならび). 行入力(_入力,_行) :- read_line_to_codes(_入力,_文字コードならび), atom_codes(_行,_文字コードならび).
The Art of Prolog が PDF で公開されてるのはいいんだけど、テキストデータは無いのかな…… tesseract-ocr でテキスト化してるけど結構大変だ。
メモリ128GBの環境で述語 foo/1 引数にユニークなアトムを生成して5億節を定義する。 ?- between(1,500000000,N), atom_number(A,N), assertz(foo(A)), N = 500000000. これで110GBを費やした。一節の追加あたり実に220byteということになり、 想像以上に大きくなった。
処理系は SWI-Prologインタプリタ (64bit版) アトムテーブルがハッシュで管理されているとして、こんなにメモリを消費 するものだろうか。
SWI-Prologインタプリタ 一方、atomの生成をやめて、グローバルスタックにリストして整数を積む。 ?- findall(N,between(1,500000000,N),L). これだと1リスト要素ごとに24バイト消費する。
Microsolft Azure の一時間あたりの料金 G5: 32 コア, 448 GB RAM,6144GB ディスク, \1,044.276/時間 消費税込みで月間81万円くらい。
448GBメモリを使うことができれば、 Prologのオンメモリデータベースで大企業でもかなりの部分がカバーできる。 ディスクストレージへのバックアップ時間など、課題もあるだろうが。
% swipl -G445000M ?- findall(N,between(1,18000000000,N),L). が可能だということ。
>>41 近い将来には1TBメモリ 100万/月になるだろう
そうなると、プログラム言語の中で最もその恩恵を受けるのはPrologということか
>>36 % GNU Prolog 1.4.4 でやってみたよ。コードはこんなんでいい?
ps :- shell('ps p $PPID -O sz',_).
eat_memory( Start,End) :-
\+(( between( Start,End,N), number_atom( N,A), assertz( foo( A)), fail)).
main :-
os_version( OS), write( OS), nl,
ps,
eat_memory( 1,10000),
ps,
eat_memory( 10001,20000),
ps,
true.
% 実行結果 | ?- main. main. Linux 3.16.0-4-amd64 PID SZ S TTY TIME COMMAND 2993 32177 S pts/3 00:00:00 /home/i/Downloads/gprolog-1.4.4/bin/gprolog PID SZ S TTY TIME COMMAND 2993 32807 S pts/3 00:00:00 /home/i/Downloads/gprolog-1.4.4/bin/gprolog PID SZ S TTY TIME COMMAND 2993 33466 S pts/3 00:00:01 /home/i/Downloads/gprolog-1.4.4/bin/gprolog (1728 ms) yes | ?- % 65 くらいだね。SWI の実装は知らないが 3.5 倍くらいなら驚くほどではないと思う。
>>39 >>40 >>42 クラウドだとコストかかりすぎだけど
オンメモリデータベースとしての用途は
将来的に今よりもっと出てきそうだね
>>44 ありがとうございます。3.5倍だとして、ハッシュテーブル等の構築の仕方の
差でしょうか。
それにしても一億節になると一節の追加時間が二万分の一秒と極端に遅い。 ハッシュの重なりが1万通りくらい出てきて平均5000回リンクを辿ると いうことか。
制約論理プログラミングってのでPrologの色んな弱点緩和されてるっぽい。 SWI-Prologにもclpfdなるライブラリで提供されてるらしいけど使ってる?
GNU Prolog で制約論理プログラミングしてるよ。 ゼブラパズルに置き換えられる問題は世の中に結構ある。
Prologがメジャーに復帰するためにはもう少し生きたプログラムが 表面に出てこないと
>>48 これって、第四の受動素子「メモリスタ」を使った奴だね。
いずれはこれに置き換わっていくのかな・・・
Prologのサンプルみたいんだけど、これって他のOOP言語とかでもライブラリとして実装可能じゃない?
じゃあprologを使うメリットって何? いや、別にprologをdisりたい訳じゃないけどどういう言語なのかなと思って
Prolog Programming for Artificial Intelligence (4th Edition)ってどうですか? いい本なら買うつもりです
>>59 Prolog専用の言語環境を使うメリットの話?
そりゃ他言語のライブラリより
餅は餅屋で機能が豊富だから
中核派がPrologを使っていたとは。 革マル派はLispですか?
>65 >赤軍は? 赤軍というのは、通常は旧ソ連の軍隊のこと。 赤軍合唱団というのもありますが、 あなたの言いたいのは、日本の「連合赤軍」のこと でしょう?
>>66 連合赤軍ではなく日本赤軍のことかもしれないぞ
テルアビブ空港で乱射後自爆した
>68 >65では、 >赤軍は? と書いてあって、 赤軍派? とは、書いてありませんが。 実は「派」の字は書いてあったのだが、 私が老眼の為に見えなかったのでしょうか。 と
Prologおじさん改めPrologおじいさんですね
ラズパイ上で動くPrologが既にあるのだが、どんなアプリが面白いだろうか
Prologって型定義をしないけど型が全くないという訳ではない アトム、アトミック、整数、浮動小数点数、リスト だけどそれ以上に区別する気はない
ラバパイではそういうわけにはいかないが最近の速いパソコンだとPrologの一つの単一化も 3ナノ秒以下で実行されるらしい Prologは遅いからとかの言い訳は利かないのかも
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
自然言語処理が確率的な手法で進めば進むほど、Prologの出番が出てくる。
法律の条文解釈をHaskellでやってるのは見た事あるけど、Prologって、そういうのも可能なんだろうか?
日本の法律は厳密に定義されていない部分がわりにあってうまくいかないという話をどこかで読んだことあるな 実際の基準や閾値は判例見ないとわからなかったりとか そういうあいまいなところを実情に合わせて柔軟に解釈して運用することで時代の変化にある程度追従していけるようにしてあるのかも
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 E5JQH
WikipediaのPrologの記載にある種の執念を感じた(笑)
>86 あれはまだまだ序文にすぎないよ プロローグだけに
TwitterでPrologがちょっと燃えててワラタ
yarnに採用!おめでとう!
https://jser.info/2019/02/26/yarn-v2berryfastify-v2tslint/ また、ワークスペースの改善としてConstraintsというProlog(実際にはtau-prolog)を使った制約を扱うプラグインが追加されています。ワークスペース間の依存などのルールをPrologを使って記述して、より効率的に扱えるようにするのが目的のようです。
>>91 くやしく。
パッケージ管理やビルドツールにPrologを使うというのは(Prologを使える人が少ないという点を除けば)極めて良いアイデアだと思う
Prologでリストを使わない人はいないと思うのだけれど、 引数の部分にリスト以外の複合項を全く書かない人もいる。一方、引数に終始、複合項や式が 出続ける書き手もいる。 もちろん、対象領域が違うからという理由が大きいのだけれど、そのことは少し軽く見て、 そういう視点で観察してプログラマを分類してみるのも面白い。
Prologの本はいっぱいあるけど、GHC系言語の解説書ってないのかなぁ。 あれでどんなプログラミングができるのかいまいちイメージがつかめない。
>>97 結局、これはいい、という適用分野が見つからなかった
そうなんだ? Prologを踏まえて作られたものだから少なくともそれよりは利点があるものと思ったけど。
並行論理プログラミング言語 GHC / KL1 - Kazunori Ueda - 早稲田大学
http://www.ueda.info.waseda.ac.jp/ ~ueda/readings/GHC-intro.pdf
GHCの考案者による解説
>>96 私は アトム+リスト 派だな。RDBの影響からか構造体は書かない。
'1文字ずつ交互に1つの文字配列に格納し'(_文字列_1,_文字列_2,_文字数,_文字ならび) :- findall(_文字,一文字ずつ交互に(_文字列_1,_文字列_2,_文字数,_文字),_文字ならび). 一文字ずつ交互に(_文字列_1,_文字列_2,_文字数,_文字) :- between(0,_文字数,N), 交互に(_文字列_1,_文字列_2,N,_文字). 交互に(_文字列_1,_文字列_2,N,_文字) :- sub_atom(_文字列_1,N,1,_,_文字). 交互に(_文字列_1,_文字列_2,N,_文字) :- sub_atom(_文字列_2,N,1,_,_文字).
% 今日書いたプログラム solve( _,0,New,New) :- !. solve( [],_,_,_) :- !, fail. solve( [_|T],R,B,New) :- solve( T,R,B,New). solve( [H|_],R,_,_) :- R < H, % write( R-H),nl, !, fail. solve( [H|T],R,B,New) :- RN is R - H, % write( RN-[H|B]),nl, solve( T,RN,[H|B],New). main :- Elem = [9729,8895,8572,7627,6576,6460,5842,5496,5467,2921,1685,511], solve( Elem,31178,[],New), write( New),nl, true.
>>86 あれメチャクチャ詳しくて助かるわ!
自治厨に消されるかもしれないから
ページをローカルに保存してあるぞ
>>105 これ間違っていますね。_文字数の意味が今ひとつ不明ですが多分、
'1文字ずつ交互に1つの文字配列に格納し'(_文字列_1,_文字列_2,_文字数,_文字ならび) :-
_文字数_1 is _文字数 - 1,
findall(_文字,一文字ずつ交互に(_文字列_1,_文字列_2,_文字数_1,_文字),_文字ならび).
でないといけません。
Prologで文脈自由文法が出来ると聞いてやってきた 情報求む 簡単にオートマトン書けるし良い言語だな
W. F. Clocksin/C.S. Mellish著、中村克彦訳 『Prologプログラミング』(日本コンピュータ協会刊行) の 「第9章 文法規則の使用」 には、文脈自由文法をPrologで実現する方法が解説されて いますl
>>113 情報サンクス!
Prologって知れば知るほど面白い言語だな
オートマトンもコンパイラも簡潔に書ける
乗り換え案内的なヤツもすぐ作れそうなのに配列の最大値を求めるとかは他の言語の方が楽に書けそうだな
特定のジャンルのアルゴリズム特化型言語か
独自のアレンジ加えたくて、今、swi-prolog本体のソース読み始めて分かったことは、
visibility("hidden")のattributeが設定されてるからソース書き換えないとinstrument-functionsを使った関数トレースが出来ない
C言語で15万行(ステップ数)ぐらい
qlfとかいう超高速読み込み可能な中間コードを生成してる
PL_next_solution()からVMの処理が始まるかも(違ったらスマン)
ぐらいかな
時代がようやくPrologに追い付いてきた。 飛躍の環境が整いつつある。
帰納論理プログラミングってプログラムの入出力の正しい例と不正解の例をあたえて機械学習でプログラムを作るはなしでいいんだよね? 最近のニューラルネットワークから影響受けた進歩はどんなのがあるの? 決定木を作りたい分野?だからあまり影響うけてないのかな。
Tabled Prologって何ですか?何が凄いの?
>>117 フィボナッチ数列の定義で40番目前後で、計算できなくなっていた定義に、
途中で計算できた値を動的に asserta((fib(N) :- !)) してしまうと途端に巨大な
フィボナッチ数列を生成できるようになる。この場合は自分でassertaしているが
それを処理系が全ての目標に対して、結果を書留め、その結果を優先して利用する。
Prologの速度の遅さを改善し、深さ優先探索では計算不能の場合でも解が得られる
ケースがある。
miniKanrenのcondeとかcondaとかconduとか用語の名前つけの意味が分からん。 どっかに書いてあるの? てかこんな変な略語にする意味あるの??学びにくい
>>118 >
>>117 > フィボナッチ数列の定義で40番目前後で、計算できなくなっていた定義に、
> 途中で計算できた値を動的に asserta((fib(N) :- !)) してしまうと途端に巨大な
> フィボナッチ数列を生成できるようになる。この場合は自分でassertaしているが
> それを処理系が全ての目標に対して、結果を書留め、その結果を優先して利用する。
> Prologの速度の遅さを改善し、深さ優先探索では計算不能の場合でも解が得られる
> ケースがある。
副作用がある述語を含んだ述語はメモ化しないとかするん?
>>121 確かに、解がその時その時で変わる目標もあるので、そのことをどう見抜くのだろうか
要素位置が同じ(_n番目,L1,L2,L1のn番目,L2のn番目) :- 要素位置が同じ(1,_n番目,L1,L2,L1のn番目,L2のn番目). 要素位置が同じ(N,_n番目,[A|_],[B|_],A,B). 要素位置が同じ(M,_n番目,[_|R1],[_|R2],A,B) :- succ(M,N), 要素位置が同じ(N,_n番目,R1,R2,A,B).
% 遅いですが、これでも同じ結果がでます。 要素位置が同じ(_n番目,L1,L2,L1のn番目,L2のn番目) :- nth1(_n番目,L1,L1のn番目), nth1(_n番目,L2,L2のn番目).
Prologでは非決定性の述語に書いていくというのが普通です。 春の七草(セリ). 春の七草(ナズナ). 春の七草(ゴギョウ). 春の七草(ハコベラ). 春の七草(ホトケノザ). 春の七草(スズナ). 春の七草(スズシロ). この春の七草/1という述語は非決定性です。 つまり、所謂データベースは非決定性述語だということになります。
'春の七草の名前の中に「スズ」が入るのは'(_名前の中にスズが入る春の七草) :- 春の七草(_名前の中にスズが入る春の七草), sub_atom(_名前の中にスズが入る春の七草,_,_,_,スズ). のように検索します。sub_atom/5の第二、第三、第四引数はそれぞれ 匿名変数になっていますが、ここは本来 第二引数 : 変位 第三引数 : 文字数 第四引数 : 残り文字数 が来るところです。この検索ではこの情報は必要がないから匿名変数にしてあります。
'春の七草の名前の中に「スズ」が入るのは'(_名前の中にスズが入る春の七草) :-
春の七草(_春の七草),
sub_atom(_春の七草,_,_,_,スズ),
_春の七草 = _名前の中にスズが入る春の七草.
% この方が良いという意見もある。私は
>>126 で構わないと思いますが。
Prologで項を読み込む時は read や read_term を使うけれど、syntax errorにならないように気を使わなくてはならず、さらに最後にピリオドが必要だったりであまり使われない。 SWI-Prologでは文の読み取りは read_line_to_string/2 が主に使われるようだ。 ?- read_line_to_string(current_input,S). とかやると、プロンプトが出てきて、入力可能になる。アルファベットと認識できる文字なら空白があろうとビリオドがあろうと全体がストリングとして読み取られる。
さて、read_line_to_string/2の第二引数にはStringが来る。このString。少々ヘンである。 ?- read_line_to_string(current_input,X),name(Y,X). |: 山下 X = "山下", Y = 山下. ?- name(山下,X). X = [23665, 19979]. ?- read_line_to_string(current_input,[23665,19979]). |: 山下 false. ?- 伝統的にnameの第二引数にStringが来ると第一引数には対応するアトムが単一化される。確かそうなっているようだが、これをread_line_to_stringの第二引数にもってくるとfalse.となる。
もう少しやってみると ?- read_line_to_string(current_input,X),X = [97,98]. |: ab false. ?- "ab" = [97,98]. false. ?- name(X,"ab"). X = ab. ?- name/2とは第二引数にStringと文字コードリストが入り得る仕様のようだ。 それではなぜ第一引数にアトムがくると文字コードリストが選択されるのか。 双方向性の述語の仕様として異様である。
実際には、Stringであるかatomであるかはほとんど気にせず使っている。理由は、 ?- read_line_to_string(current_input,S),sub_atom(S,0,1,_,X). |: 山下 S = "山下", X = 山. のようにsub_atom/5やatom_concat/3を介すると自動的にatomに変換されてしまう。 ほとんどの文字列処理ではこれらの組込述語を使うことになるためStringとatomについて心配する必要がない。 ただし、 ?- read_line_to_string(current_input,S),assertz(S). |: 山下 これはエラーになる。Stringを述語名に持ってくることはできない。
>>131 ?- read_line_to_string(current_input,S),string_to_atom(S,A),assertz(A).
のようにアトムに変換する述語を介すれば定義可能。
SWI-Prologにはconsult/1とreconsult/1の区別がない。全部、reconsult/1となる。これによって間違いは少なくなるが、ここと言う時にまとめての節の追加assertzがし難い。このような仕様になっているのは、述語定義とそれが記述されているソースファイルを一対一に対応させたいからなのだろう。
別のスレで話題が出ていたPrologの小学校授業の実践例。 私は聞かないのだが、試みている方いますか?
>>134 5chでこの質問は無理かな。twitterで問いかけてみよう。
>>5 いや、Prologは動的な型はあるぞ。
integer/1 で整数であるか調べたりもできる。
型がなかったら整数かどうかを調べることもできない。
>>59 TAPLみたいな型理論を理解するには述語論理を使えるPrologを使うと理解がしやすいと思うんだがな。
単一化もあるから型推論も簡単にかけるし。
>>128 定理証明支援系のCoqも.で終わったりします。
Coqで.を使う言語は言語を扱うメタな言語の方なので、
Prologと共通点があるのかもw
>>137 Prologで整数や数値が「型」かどうかとなると相当に怪しい。
単に計算対象になる整数。数値。そしてアトム。それだけ。
複合項のパターンを纏めるつもりが全くない言語で型があると言ってよいものだろうか。
Prologの規格にPrologと型という概念は相容れないという記述でもあるのか? 教えてくれ
>>141 50数冊発行されている日本語のProlog書の中で、索引に型という項目が存在するのは3冊だけ
やはり単一化が相当に重いから、さらに型付をしたいとは思わないということでは
>>144 型という概念はFORTRANの時代からあったわけだし、使ってもよかったはずだけれど
使わなかった。アトムだけで行きたかったけれど妥協して数値は作った。
論理変数に型付けなんて論外。要するにほんの少しでも決まり事を減らしたい。そういう世界。
>>145 最初から確信を持ってそうなのだから、所謂ガルパゴス化ではないと
述語論理とかHaskellがあがっていますが、 小6では述語論理やPrologでは遅すぎ。Haskellでは早すぎるのではないでしょうか。
「文字を覚えたときがPrologの覚えどき」 とは、言い得ると思うのですが、さて、この「文字を覚えたとき」を何時とみるか。 5才なのか、7才なのか、それとも・・・
>>149 個人差がある。幼稚園に入るために予備校に行ってる児童もいる。この場合は4才だって行けるだろうし。
公立の小学校なら二年生から。そういう言い方をしないといけないのかな。
オーソドックスなPrologマスターが世間に露出してないのが日本Prolog界の不幸
わりと興味はあるが書店行っても大学の教材みたいな内容の本しかないのが辛い CやJavaみたいな初心者向けの入門書(それでいてそれなりに深いとこまでやるゴツくて厚いやつ)欲しい 教材タイプのって数学の教科書みたいな、必要十分なこと書いてはい説明終わり、ここまでの内容でこの問題できるからなやっとけよ、で突き放されて分からないまま途方に暮れて終わる
>>153 適切な表現かどうかわからないが、Prologの『逆引き』本がほしい。
アプリのグループでまとめたもの。まとまった単位のソースが得られ
ればそれをヒントに作り替えたり、そこまでできなくても深く学ぶこ
とができる。
>>140 マーキュリーとか普通にHM型付けしてたりしてますよ。
型クラスもあるしw
integerはatomの部分型と考えることができますし。
numberもatomの部分型
string型もあるし、objectもありますよね。
動的型付けな言語は多かれ少なかれそう言った型システムに守られているので、型なしで未定義エラーで死んだりしません。
>>147 Prolog を型理論を学習する前後で勉強すると良いのではと思う今日この頃です。
述語論理は普通のプログラマにとってとっつき辛いのでTAPLは難解だと言われている。
Prolog で一階述語論理を理解しておくと図が簡単に実装できるので便利w
>> 152 日本語プログラミングとか、型理論とかは確かにオーソドックスじゃないのかもなぁ。 Prologの得意分野は非決定的な計算や言語を扱いやすい点にあるので、言語機能の実験にちょろっと使うのに便利w だからプログラミング言語の論文で広く述語論理が使われてるのだと思う。
Prologは文法を意識しないで日本語が話せるように使うことができるという意味で簡単だ。 しかし言語の文法を意識して研究する場合にも有用であるので、とっつきやすい人はとっつきやすいのだけど、文法がどうのって話になると途端に敷居が上がる言語だと思いますな。
>>141 ISOの規格(ISO/IEC 13211-1)では7.1に4頁ほどを割いています。floatやintegerそしてリストの説明。
しかし、冒頭のやや下に
NOTE - Prolog is not a typed language, and an argument of
a compound term or predication tan be any term whatsoever.
・・・
から始まるコメントがあり、その内容は私には不可解ですが、全くtypesを重視しない、そして
言語としてはこの問題に関わらない姿勢だけは読み取れます。
んー.この註釈が型について語っていることはむしろ逆だろう. Nonetheless, some predications can be satisfied only when the arguments possess particular properties, and some evaluable functors are defined only when the operands (3.121) possess some particular property. と続くが,some particular property はつまり型じゃない? これはrubyとかlispを型なし言語と表現するようなものじゃないかな. アトミックな項か複合項しかない(型なし言語)にもかかわらず,some particular property をみて処理する(型がある)わけでしょう?
>>159 プログラミング言語を広く見た場合にPrologは動的型付け言語な言語なのだけど、
Prolog 文化としては動的型付け言語は型なし言語と標準を作る際でも呼んでいる。
標準化委員会の趣味や趣向、時代的な背景の違いによる用語選択の違いでしょう。
@TakaoOzaki 肺癌進行 最短経路でpinpinころり 南無南無
read.cgi ver 07.7.23 2024/12/25 Walang Kapalit ★ | Donguri System Team 5ちゃんねる
lud20250302233647このスレへの固定リンク: http://5chb.net/r/tech/1490334702/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「Prologでまったり Part5 [無断転載禁止]©2ch.net ->画像>1枚 」 を見た人も見ています:・【アズレン】アズールレーン まったりスレ Part51 ・まったり5スロ生活 part21 ・まったり5スロ生活 part33 ・【きらファン】きららファンタジア まったり part17 ・【アズレン】アズールレーン 超まったりスレ part1 ・【アズレン】アズールレーン まったりスレ Part92 ・【きらファン】きららファンタジア まったり part92 ・【アズレン】アズールレーン まったりスレ Part78 ・歌番組で全然見ない歌手やバンドやアイドルのライブに客が集まってたりするけど ・まったり5スロ生活 Part20 ・【ドラガリ】ドラガリアロスト まったりスレ Part62 ・【WUG!】Wake Up, Girls!Part10 【まったり】 ・【WUG!】Wake Up, Girls!Part23 【まったり】 ・【WUG!】Wake Up, Girls!Part16 【まったり】 ・【アズレン】アズールレーン まったりスレ Part151 ・【ドラガリ】ドラガリアロスト まったりスレ Part116 ・白猫プロジェクトまったり無課金スレPart70 [無断転載禁止] ・∈(°◎°)∋うなちゃんとまったり語るスレPart116.3 ・Fate/Grand Order まったりスレ3581 ・医クラ垢をまったり見守るスレ27 ・Shadowverseまったりスレ 241ターン目【シャドウバース】 ・Fate/Grand Order 超まったりスレ☆18 ・Fate/Grand Order 超まったりスレ★617 ・Fate/Grand Order まったりスレ4038 ・Fate/Grand Order 超まったりスレ☆485 ・Fate/Grand Order まったりスレ5045 ・Fate/Grand Order 超まったりスレ★716 ・【まったりID無し】文学板雑談スレ206 ・Fate/Grand Order まったりスレ4197 ・Shadowverseまったりスレ 106ターン目【シャドウバース】 ・Fate/Grand Order まったりスレ3923 ・Fate/Grand Order まったりスレ2272 ・まったりと真野ちゃんを語ろうパート91 ・40代ひきこもりのまったり進行スレ12 ・Fate/Grand Order まったりスレ5010 ・Fate/Grand Order まったりスレ4183 ・Fate/Grand Order まったりスレ3190 ・【PSO2】まったり楽しいチームです!←これ ・Fate/Grand Order まったりスレ4869 ・まったり隼スレ130 ・Fate/Grand Order まったりスレ5244 ・Fate/Grand Order まったりスレ4137 ・Fate/Grand Order まったりスレ2445 ・Fate/Grand Order 超まったりスレ☆206 ・Fate/Grand Order まったりスレ4530 ・レジェンドナイスガイと奥たそのまったりタイム ・Fate/Grand Order まったりスレ4455 ・Fate/Grand Order まったりスレ3280 ・Fate/Grand Order まったりスレ4261 ・Fate/Grand Order まったりスレ5123 ・コ雑民のまったりゲーム雑談スレ2 ・Fate/Grand Order まったりスレ4317 ・Fate/Grand Order まったりスレ3615 ・まったりと真野ちゃんを語ろうパート104 ・Fate/Grand Order まったりスレ5005 ・Fate/Grand Order 超まったりスレ☆237 ・のんびりまったりポケモンgoをプレイしてる人のスレ ・Fate/Grand Order 超まったりスレ☆449 ・まったりうっちゃー ・Shadowverseまったりスレ 176ターン目 【シャドウバース】 ・Fate/Grand Order 超まったりスレ☆203 ・Fate/Grand Order まったりスレ3345 ・初心者が牧場物語をまったり作る ・Fate/Grand Order まったりスレ3212 ・Fate/Grand Order まったりスレ5113 ・Fate/Grand Order まったりスレ2942
09:48:44 up 51 days, 10:52, 3 users, load average: 7.36, 7.71, 8.01
in 0.042959928512573 sec
@0.042959928512573@0b7 on 030523