Prolog 类型不兼容

Prolog type is incompatible

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).

如何解决?

你这里好像有错误:

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

你应该这样写

 C = readChar<b>()</b>,

as searching for readChar in the manual reveals,在那里可以看到建议的用法为

_ = console::readChar().

似乎错误消息提示相同:readChar "is a procedure of type () -> char.",而不是 "a char".你的 Cchar。要从过程中获取结果,我们通常需要 运行 它(此 "run" 与代码中的 run 无关)。