Prologまとめ
Information
version | date | memo |
---|---|---|
0.1 | 2013/01/23 | first |
1.0 | 2013/07/27 | csv関連 |
ファイルロード
/* インタプリタ上にて */ ['ファイル名(拡張子除く)'].
ファイル入出力
参考ページ:ホームページ移転のお知らせ - Yahoo!ジオシティーズ
/* ファイル入力 */ read_data(X) :- see(X), /* ファイルオープン (current input)*/ repeat, /* 失敗駆動ループ */ read(Y), /* 読み込み (大文字は変数扱いになるのでアウト) */ write_data(Y), Y == end_of_file, /* end_of_file以外の場合は失敗してrepeatに戻る */ !, /* カット end_of_fileの場合のみ通過する。 */ seen. /* ファイルクローズ (current input) */ write_data(end_of_file). write_data(X) :- format('~a.~n', X).
カット(!) : ホームページ移転のお知らせ - Yahoo!ジオシティーズ
フォーマット(format) : SWI-Prolog -- format/2
TODO : 大文字を読み込みたい場合ってどうするんだろうね?
CSV読み込み
CSV形式のファイル読み込み方法
/* 以下を実行すると、Xに読み込み結果が入る */ csv_read_file('ファイル名', X).
上記の方法でcsvファイルをロードすると、
10, 20, 30
40, 50, 60
というデータは、
[row(10, 20, 30), row(40, 50, 60)]
というrow()項のリストで取得される。
%% サンプル :- use_module(library(csv)). %% ファイルロード load_file:- csv_read_file('sample.csv', File),!, print_csv(File). %% 出力 print_csv([]). print_csv(Xs):- Xs = [X | Rem], X = row(C1, C2, C3), format('~w, ~w, ~w~n', [C1, C2, C3]), print_csv(Rem).
この関数についての説明 : section(2,'A.9',swi('/doc/Manual/csv.html'))
現在時刻
詳細はhttp://www.swi-prolog.org/pldoc/doc_for?object=section(3,'4.34.2',swi('/doc/Manual/system.html'))
%% 現在時刻生成サンプル current_time(Date):- get_time(Now), stamp_date_time(Now, Time, 'UTC'), format_time(atom(Date), '%Y/%m/%d %T', Time, posix).