首页 文章

prolog中的I / O:错误:参数没有充分实例化,没有进一步的信息

提问于
浏览
0

所以我在prolog中使用I / O而且我正在接受

Error: Arguments are not sufficiently instantiated

令我困惑的是为什么我没有得到关于谓词导致问题的任何信息 .

(编辑:在图像L2中是左侧显示的prolog文件的名称,[L2.pl]给出相同的错误 . )

enter image description here

该计划应该做什么:
该程序应该验证时态逻辑语句 . 它将读取一个文件(输入)并从文件中获取:一个状态连接的邻接列表(T);每个州包含哪些公式的另一个邻接列表(L);状态(S)和时间逻辑公式(F) . 然后它应检查状态S中公式F是否为真 .

以下是输入文件的外观示例:

[[s0, [s0, s2, s1]],
 [s1, [s1, s0]],
 [s2, [s0, s2]]].

[[s0, [p, q]],
 [s1, [p]],
 [s2, [q, r]]].

s0.

p

现在我只实施了一个简单的检查,看看公式F是否处于状态S.但程序不想编译,我不明白为什么 .

1 回答

  • 3

    在Prolog中,如果输入大写的标识符,则它被视为变量,即使它在查询中用于加载文件:

    ?- [L2].
    

    这会尝试加载(或查询)名称由变量 L2 给出的文件 . 当然, L2 未在上面实例化,因此这将失败并出现实例化错误 . 出于同样的原因,以下内容也将失败:

    ?- [L2.pl].
    

    咨询 [...] 需要一个原子作为文件名 . 如果你想要一个以大写字母开头的原子,你需要使用引号 . 所以以下内容将起作用:

    ?- ['L2'].
    

    要么

    ?- ['L2.pl'].
    

相关问题