微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用持久性库在 swi-prolog 中持久化自定义或非平凡数据类型?

如何解决如何使用持久性库在 swi-prolog 中持久化自定义或非平凡数据类型?

我想使用持久性库 (https://www.swi-prolog.org/pldoc/man?section=persistency) 持久化我的 prolog 数据库

我有一个类似这样的模块文件

:- module(model,[ campament/5
          ]).

:- use_module(library(persistency)).

:- persistent
   campament(name:atom,date_from:date,date_to:date,ubication:text,description:text).

此定义与 date 数据类型 (https://www.swi-prolog.org/pldoc/man?section=timedate) 有关,该数据类型不存在于 persistent/1 (https://www.swi-prolog.org/pldoc/man?section=error ).

因此,当我尝试保留此子句时,出现错误

?- use_module(model).

?- model:bd('data.db').

?- parse_time('20180720',iso_8601,From),|  parse_time('20180729',To),|  model:assert_campament('My campament',From,To,'there','nothing').

ERROR: type `date' does not exist
ERROR: In:
ERROR:   [15] throw(error(existence_error(type,date),_37572))
ERROR:   [11] model:assert_campament('My campament','nothing') at /home/xxx/model.pl:9
ERROR:    [9] <user>
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

如何持久化 date 之类的类型?在 must_be/2 (https://www.swi-prolog.org/pldoc/doc_for?object=persistent/1) 中,可能的类型之一是:

...

any 任何术语

type 项是有效的类型规范

...

问候。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。