Prolog类型不兼容

时间:2017-11-05 11:20:50

标签: prolog visual-prolog

Visual Prolog 8抛出错误c504:表达式的类型为'() - > :: char procedure',它与':: char'类型不兼容。

main.pro

implement main
    open core, console

class predicates
    цикл : ().
    print : ().

clauses
    цикл().

    print() :-
        console::initUtf8(),
        цикл,
        C = readChar,
        /* Читать символ и связывать его с переменной  C */
        write(C),
        C1 = convert(char, C),
        C2 = convert(char, '\r').
        C1 = C2.
        /* Является ли введенный символ возвратом каретки? fail, если нет */

    run() :-
        цикл,
        fail.

    run() :-
        succeed.
        % place your own code here

end implement main

goal
    mainExe::run(main::run).

如何解决?

1 个答案:

答案 0 :(得分:3)

您似乎有错误:

    print() :-
        ....
        цикл,
        C = readChar,       % <<-------

你应该像这样写

        C = readChar(),

在手册中显示searching for readChar,其中可以看到建议的用法为

  

_ = console :: readChar()。

似乎错误消息表明相同:readChar &#34;是() -> char类型的过程。&#34; ,而非&# 34; char&#34; 。您的Cchar。要从程序中获取结果,我们通常需要运行它(这&#34;运行&#34;与代码中的run无关。)