アットウィキロゴ

lmntal

「lmntal」の編集履歴(バックアップ)一覧はこちら

lmntal - (2005/06/06 (月) 17:56:09) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

<h1>適当なLMNtalメモ。</h1> <hr> <p>実行コマンド java runtime.FrontEnd</p> <p> -cp : フォルダ名を指定できる ex. java-cpbinruntime.FrontEnd</p> <p> -e : 直接ソース書き込めるのかな。 ex javaruntime.FrontEnd-e'p(1).p(2).'</p> <p>-t : トレース。</p> <hr> <h3>プログラムの書き方とかサンプルとか。</h3> <p>リストの書き方。<br> r = [1,3].<br> r(A) , cons(1,B,A), cons(3,C,B),'[]'(C).<br></p> <p>bubble sort<br> H=[X , Y|R] :- X&gt;Y| H = [Y , X|R].<br> r=[1,5,2,3,6,8,85,3].</p> <p>append<br> R=append([], A) :- R=A.<br> R=append([H|T], A) :- R=[H|append(T , A)].</p> <p>quicksort<br> p(E , [] , Ls , Rs) :- R = list.append(q(Ls) , [E|q[Rs]).<br> p(E , [H|T] , Ls , Rs) :- R = H &lt; E | R = p(E , T , [H|Ls] , Rs).<br> p(E , [H|T] , Ls , Rs) :- R = H &gt;= E | R = p(E , T , Ls , [H|Rs]).<br> q([]) :- R = [].<br> q([H|T]) :- R = p(H , T , [], []).</p> <br> <p>evenfilter(偶数フィルタ)<br> R = even([]) :- R = [].<br> R = even([H|T]) :- H mod 2 = 0 | R = [H|even(T)].<br> R = even([H|T]) :- H mod 2 = 1 | R = even(T).</p> <p>局所的に使えるようにするとこうなる。かな?<br> H = [X | A] :- X mod 2 = 1 | H = A.</p> <hr> <h3>ぼちぼちCHRの例題をやってみる。</h3> <p>Greatest Common Divisor (justtworules) つまり最大公約数を求める<br> gcd(0):- true.<br> gcd(N) , gcd(M) :- N =&lt; M | gcd(M mod N).<br></p> <hr> <p>例えば a(A,B) :- a(A) とした場合、Bのルールが無いと怒られる。これを回避するために、</p> <p>unary(B) と記述する。</p>
<h1>適当なLMNtalメモ。</h1> <hr> <p>実行コマンド java runtime.FrontEnd</p> <p> -cp : フォルダ名を指定できる ex. java-cpbinruntime.FrontEnd</p> <p> -e : 直接ソース書き込めるのかな。 ex javaruntime.FrontEnd-e'p(1).p(2).'</p> <p>-t : トレース。</p> <hr> <h3>プログラムの書き方とかサンプルとか。</h3> <p>リストの書き方。<br> r = [1,3].<br> r(A) , cons(1,B,A), cons(3,C,B),'[]'(C).<br></p> <p>bubble sort<br> H=[X , Y|R] :- X&gt;Y| H = [Y , X|R].<br> r=[1,5,2,3,6,8,85,3].</p> <p>append<br> R=append([], A) :- R=A.<br> R=append([H|T], A) :- R=[H|append(T , A)].</p> <p>quicksort<br> p(E , [] , Ls , Rs) :- R = list.append(q(Ls) , [E|q[Rs]).<br> p(E , [H|T] , Ls , Rs) :- R = H &lt; E | R = p(E , T , [H|Ls] , Rs).<br> p(E , [H|T] , Ls , Rs) :- R = H &gt;= E | R = p(E , T , Ls , [H|Rs]).<br> q([]) :- R = [].<br> q([H|T]) :- R = p(H , T , [], []).</p> <br> <p>evenfilter(偶数フィルタ)<br> R = even([]) :- R = [].<br> R = even([H|T]) :- H mod 2 = 0 | R = [H|even(T)].<br> R = even([H|T]) :- H mod 2 = 1 | R = even(T).</p> <p>局所的に使えるようにするとこうなる。かな?<br> H = [X | A] :- X mod 2 = 1 | H = A.</p> <hr> <h3>ぼちぼちCHRの例題をやってみる。</h3> <p>Greatest Common Divisor(justtworules) つまり最大公約数を求める<br> gcd(0):- true.<br> gcd(N) , gcd(M) :- N =&lt; M | gcd(M mod N).<br></p> <hr> <p>a(A,B) :- a(A) とした場合、Bのルールが無いと怒られる。これを回避するために、ガードにunary(B) と記述する。つまりa(A,B) :- unary(B).  中野的には、「アトム1個がUnary。」</p> <p>a(X,Y) :- b(X , Y , Y). とした時、Yが2回出てくるので怒られる。回避するためにはガードにground(Y)と記述する。 つまりa(X,Y) :- ground(Y) | b(X , Y , Y). 中野的には「アトムが繋がってground。」</p> <p>ちなみにa(X,Y) :- ground(Y)| b(X , Y , Y , Y). もOK。</p> <p>ということは、a(X,Y,Z) :- unary(Z) , ground(Y) | b(X , Y , Y). ってことかねぇ?</p> <p>リンクじゃなくて数字の時はint(B)とか使え。</p>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。