如果search_answer没有找到答案,我该怎么做prolog回答? 是的,L = [答案]
search_answer:谓词返回列表或将A作为自由变量。
found_list(L) :-
search_answer(L).
例如,当被问到found_list(L)
时,虽然search_answer没有找到答案,但Prolog仍然回答是。我打印L
,它等于_496
,一个自由变量。
鉴于以上代码段,如果found_list
找到了一个列表,L = [...]
会回复search_answer
,否则会返回L = L
,而我想回答否
我尝试了以下操作,但没有工作
found_list(L) :-
search_answer(L) , is_list(L).
liar_detector
是我的search_answer
谓词,L = answer
和骗子是我的found_answer
答案 0 :(得分:2)
在found_list(L) :- search_answer(A).
中,L
和A
都是单身人士。我猜你看到了警告。您需要修复此谓词才有意义。你真的想要L = [Answer]
或L = Answer
吗?
你可以用这种方式实现目标:
found_list(A) :-
search_answer(A).
如果search_answer(A)
未成功,则会失败(导致“否”),如果成功,则结果为A
。
如果您希望将结果作为列表中的答案,则可以执行以下操作:
found_list([A]) :-
search_answer(A).
我不确定其中任何一个的价值是多少。第一个found_list/1
只是search_answer/1
上的一个简单包装器,没有任何其他逻辑。第二个只是从search_answer/1
结果中生成一个单元素列表。如果A
已经是列表,则不需要将其放在括号内([...]
),否则您只需在列表中获取列表。我怀疑你真的想做别的事,但没有解释。
<小时/> 在回复更新的问题时,如果
A
是一个简单的未绑定术语,则以下代码应该有效:
found_list(A) :-
search_answer(A),
is_list(A).
但是,如果is_list/1
的参数具有列表结构,即使它的元素可能未绑定,| ?- X = [_], is_list(X).
X = [_]
yes
| ?-
也会成功:
search_answer(A)
因此,举例来说,如果A = [_]
成功found_list(A)
,则A = [_]
会以ground/1
取代。
| ?- ground(X).
no
| ?- ground([_|_]).
no
| ?- ground([a,b]).
yes
| ?-
在这里非常有用:
found_list(A) :-
search_answer(A),
ground(A).
因此,以下解决方案应该有效:
search_answer(A)
<小时/> 如果您的意图不是
A
如果found_list/1
不合理,但只是失败,那么您可以将found_list(A) :-
search_answer(A),
( ground(A) -> true ; !, false ).
实施为:
var popup, x, f31, f32, f33, f4, f5, f6, f7, f7a, f81, f82, f11, f14, f161, f17a1;
function _(x){
return document.getElementById(x);
}
//fungsi tutup popup
function tutupPopup(){
_("popup").style.display = "none";
}
function prosesc11(){
f31 = _("f31").value;
f32 = _("f32").value;
f33 = _("f33").value;
$.ajax({
url : "<?php echo base_url().'index.php/TracerStudy_model/simpan_data_ts';?>",
type : 'post',
data : {'f31' : f31, 'f32' : f32},
success: function(data){
console.log(data);
}
});
if(f31.length>0||f32.length>0){
_("formc1-1").style.display = "none";
_("formc1-2").style.display = "block";
_("progressBar").value = 50;
}else{
alert("Maaf data anda ada yang belum diisi.")
}
}
我认为,但是代码可能存在一个更基本的问题,因为它不应该有你觉得有必要像这样解决的行为。