Prolog 表达式后需要运算符

Prolog 表达式后需要运算符,prolog,Prolog,我有这些事实 relationship(nikos,anna,husband). type_of_service(nikos,hospital). insurance_cover(nikos,partial). type_of_insurance(nikos,family). refund_request(nikos,5000). 我写了下面的文章 refund(Insured , insuranceCover, hospital, requestedRe

我有这些事实

   relationship(nikos,anna,husband).
    type_of_service(nikos,hospital).
    insurance_cover(nikos,partial).
    type_of_insurance(nikos,family).
    refund_request(nikos,5000).
我写了下面的文章

refund(Insured , insuranceCover, hospital, requestedRefund, Poso):-
hospital_refund(Insured, insuranceCover, requestedRefund, Poso).

hospital_refund(Insured, partial, requestedRefund, Poso):-
requestedRefund <= 5000,Poso = requestedRefund. %% <--- Error

hospital_refund(Insured, full, requestedRefund, Poso):-
Poso = requestedRefund.

apozemiose(Insured, Poso):-
refund(Insured, insurance_cover(Insured ,X),
    type_of_service(Insured),
    refund_request(Insured , X)
).
退款(投保人、保险范围、医院、申请退款、Poso):-
医院退款(被保险人、保险范围、请求退款、Poso)。
医院退款(投保、部分、申请退款、Poso):-

requestedRefund您没有使用
您没有使用
语法错误除了,您还需要更改最后一个子句

apozemiose(Insured, Poso):-
  insurance_cover(Insured, I),
  type_of_service(Insured, T),
  refund_request(Insured, R),
  refund(Insured, I,T,R, Poso).
这里的编辑是一组更正,主要介绍使用原子的变量,即文字常量

refund(Insured, InsuranceCover, hospital, RequestedRefund, Poso):-
    hospital_refund(Insured, InsuranceCover, RequestedRefund, Poso).

hospital_refund(_Insured, partial, RequestedRefund, Poso):-
    RequestedRefund =< 5000, Poso = RequestedRefund.
hospital_refund(_Insured, full, RequestedRefund, Poso):-
    Poso = RequestedRefund.

HTH

除了语法错误之外,您还需要更改最后一个子句

apozemiose(Insured, Poso):-
  insurance_cover(Insured, I),
  type_of_service(Insured, T),
  refund_request(Insured, R),
  refund(Insured, I,T,R, Poso).
这里的编辑是一组更正,主要介绍使用原子的变量,即文字常量

refund(Insured, InsuranceCover, hospital, RequestedRefund, Poso):-
    hospital_refund(Insured, InsuranceCover, RequestedRefund, Poso).

hospital_refund(_Insured, partial, RequestedRefund, Poso):-
    RequestedRefund =< 5000, Poso = RequestedRefund.
hospital_refund(_Insured, full, RequestedRefund, Poso):-
    Poso = RequestedRefund.

HTH

您是否检查了Prolog手册中可接受的不等式谓词?:)您是否检查了Prolog手册中可接受的不等式谓词?:)修正的Thx。但是,为什么我在问“apozemiose(nikos,Poso)
”的时候会得到
no
作为答案呢?是不是应该是
5000
?好吧,愚蠢的问题,我必须把大写字母作为变量的第一个字母吗?Thx表示更正。但是,为什么我在问“apozemiose(nikos,Poso)
”的时候会得到
no
作为答案呢?是不是应该是
5000
?好吧,愚蠢的问题,我必须把大写字母作为变量的第一个字母吗?
?- apozemiose(nikos, Poso).
Poso = 5000 ;
false.