You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prolog专家系统抛出catch/1错误,求故障排查与修复方案

移动设备故障排查Prolog专家系统错误修复

错误原因分析

控制台抛出「Unknown procedure: catch/1」是因为代码错误使用了不存在的catch/1谓词,系统仅定义了标准的catch/3(用于异常捕获)。结合上下文逻辑,此处实际需要调用自定义的grasp/1谓词来匹配故障类型。

核心修复:修正go谓词

将原go谓词中的catch(Problem)改为grasp(Problem),同时优化输出文本格式:

go :- grasp(Problem),
print("Your problem is probably a "),
print(Problem),
print(" issue."),
nl.

其他代码问题修复

  • 动态谓词声明错误:原代码中:- dynamic yes/3, no/1.里yes/3与实际使用的yes/1不匹配,修正为:
    :- dynamic yes/1, no/1.
    
  • 硬件故障规则逻辑错误:原grasp(hardware_problem) :- low_battery,!.错误关联低电池规则,应改为调用硬件故障判断规则,同时取消hardware_problem规则注释并修正拼写错误:
    grasp(hardware_problem) :- hardware_problem,!. 
    
    hardware_problem :- 
    verify(device_dont_turn_on),
    verify(device_warmth_frequently),
    verify(screen_exhibits_atypical_visual_patterns),
    verify(problems_began_or_intensified_after_fall_or_any_damage).
    
  • 输入交互优化:原输入逻辑存在变量读取问题,改为读取原子并统一小写,避免大小写输入差异:
    input(Question) :- 
    write('Do you have the following problem: '),
    write(Question),
    write('? (yes/no) '),
    read(Answer),
    nl,
    downcase_atom(Answer, LowerAnswer),
    (( LowerAnswer == yes; LowerAnswer == y)
    -> assert(yes(Question));
    assert(no(Question)), fail).
    
  • undo谓词简化:原undo可简化为一次性撤回所有断言:
    undo :- retractall(yes(_)), retractall(no(_)).
    

完整修正代码

go :- grasp(Problem),
print("Your problem is probably a "),
print(Problem),
print(" issue."),
nl.

input(Question) :- 
write('Do you have the following problem: '),
write(Question),
write('? (yes/no) '),
read(Answer),
nl,
downcase_atom(Answer, LowerAnswer),
(( LowerAnswer == yes; LowerAnswer == y)
-> assert(yes(Question));
assert(no(Question)), fail).

:- dynamic yes/1, no/1.
verify(Problem):-
(yes(Problem)
-> true;
(no(Problem)
->
fail;
input(Problem))).
undo :- retractall(yes(_)), retractall(no(_)).

grasp(low_battery) :- low_battery,!. 
grasp(software_problem) :- software_problem,!. 
grasp(hardware_problem) :- hardware_problem,!. 
%grasp(virus_or_memory_issue) :- virus_or_memory_issue,!. 

low_battery :- 
verify(phone_not_recharged),
verify(charger_not_working).

software_problem :- 
verify(device_turns_on_but_crashes),
verify(some_program_dont_work),
verify(more_than_one_program_crashes_after_awhile),
verify(some_programs_are_not_updated_or_deprecated).

hardware_problem :- 
verify(device_dont_turn_on),
verify(device_warmth_frequently),
verify(screen_exhibits_atypical_visual_patterns),
verify(problems_began_or_intensified_after_fall_or_any_damage).

内容的提问来源于stack exchange,提问作者Victor Mariano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:10:24