假设我有这个谓词:
parentheses2([H1,'+'|T],L,C).
parentheses2([H1,'-'|T],L,C) :- L=[1,2,3].
parentheses2([H1,'*'|T],L,C).
parentheses2([H1,'/'|T],L,C) :- L=[1,2,4,5,6,9].
我想要实现的是在我询问pr ?-parentheses2([1,-,3],L,5).
和?- parentheses2([1,+,3],L,5).
时得到相同的答案,而不将L=[1,2,3]
重写为parentheses2([H1,'+'|T],L,C)
。我想让Prolog在两种不同的情况下执行L=[1,2,3]
(在H1
之后有' +'或' - ')。其背后的原因是L=[1,2,3]
,L=[1,2,4,5,6,9]
我希望制定更复杂的规则。
有没有办法实现它?
答案 0 :(得分:0)
你的意思是
parentheses2([H1,Op|T],L,C) :- ( Op = '+' ; Op = '-' ), L=[1,2,3].