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
".你的 C
是 char
。要从过程中获取结果,我们通常需要 运行 它(此 "run" 与代码中的 run
无关)。
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
".你的 C
是 char
。要从过程中获取结果,我们通常需要 运行 它(此 "run" 与代码中的 run
无关)。