まずは手続き型プログラミングの延長で考えよう
たとえば値 x とy の最大値を求める関数 max(x, y) を疑似コードで書くと:
max(x, y) = if x > y then z := x else z := y; return z
これを Prolog では:
max(X, Y, Z) ;- X > Y, !, Z = X.
max(_, Y, Z) ;- Z = Y.
と書けるけど、一般にはより簡潔に以下のように書く:
max(X, Y, X) ;- X > Y, !.
max(_, Y, Y).
ここで、カット "!" は条件式と以降の文との間に置く "then" と見る
ここまでは(手続き型における)「分岐」のパターンになるけど、
手続き型の「反復」を Prolog では「再帰」で書くから、
「再帰の書き方(=再帰的定義)」に慣れることが最初の壁になる
たとえば数のリストについて、各値を +1 する述語 list_succ は:
list_succ([X|XS], [Y|YS]) ;- Y is X + 1, !, list_succ(XS, YS).
list_succ([], []).
と書き、同様に偶数だけを抽出する述語は:
list_even([X|XS], [X|YS]) ;- is_even(X), !, list_even(XS, YS).
list_even([_|XS], YS) ;- list_even(XS, YS).
list_even([], []).
こういった手続き型プログラミングと共通する概念とその書き方に慣れてから、
Ptolog 固有の「単一化」や「バックトラッキング」といった概念を学ぶといい
【論理】Prolog【初心者】
■ このスレッドは過去ログ倉庫に格納されています
737デフォルトの名無しさん
2014/08/17(日) 16:35:59.06ID:XkL8f3FM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【27歳会社員】「自慰行為に使うために」コインランドリーの乾燥機から24歳女性の下着など計11点(時価8万2080円相当)盗んだ疑い [nita★]
- 【毎日スクープ】高市の「存立危機事態」発言、午前3時に官僚を叩き起こしてカンペを作らせてたのにガン無視して出たうっかり発言だった [314039747]
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★7
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】麻生太郎さん、オムツをしていた。晋さん…ここにいたんだね… [731544683]
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
