1と2のリビジョン間の差分
2011-07-07 06:43:51時点のリビジョン1
サイズ: 1399
編集者: NU-MA
コメント:
2011-07-07 06:45:21時点のリビジョン2
サイズ: 1406
編集者: NU-MA
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 9: 行 9:
 デバッグの方法はprintしか無いようです。  デバッグの方法はprintしか無いようです。(TA談)

Prolog演習の課題メモ

デバッグ

printデバッグ

  • デバッグの方法はprintしか無いようです。(TA談)

   1 :- module("test").
   2 
   3 % printAVMは恒真
   4 % 組み込みでprintもありますが、printAVMの方が綺麗に要素が出力されるのでおすすめです。
   5 
   6 % 文字列の出力
   7 % printAVM("文字列")
   8 hello <- [pred].
   9 hello :- print("Hello,World!").
  10 ?-hello.
  11 
  12 % 要素の中身を出力
  13 append1 <- [pred].
  14 append1([X|Xs], Ys, [X|Zs]) :- append1(Xs, Ys, Zs),printAVM(Zs).
  15 append1([], Ys, Ys). 
  16 
  17 ?-append1([1,2,3,4], [5,6,7], Z).
  18 
  19 % 一応、printによる方法も
  20 append2 <- [pred].
  21 append2([X|Xs], Ys, [X|Zs]) :- append2(Xs, Ys, Zs),print(Zs).
  22 append2([], Ys, Ys). 
  23 
  24 ?-append2([1,2,3,4], [5,6,7], Z).

実行時間を測る

shell上でtimeを使う

$ lilfes -l test.lil -e "?-hello."

で、" "内のQueryを試したら終了するようにできます。
つまり、時間を測りたいときは

$ time lilfes -l test.lil -e "?-hello."

でいいですね。
しかし、インタプリタを起動する時間や出力の時間も測ってしまうので、工夫が必要です。(output redirectionを付けるとか。)


Categoryノート

関数・論理型プログラミング実験/課題メモ(LiLFeS) (最終更新日時 2011-07-31 01:17:02 更新者 amylase)