在prolog中对两个不同的案例执行相同的规则

时间:2018-04-08 12:10:18

标签: prolog

假设我有这个谓词:

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]我希望制定更复杂的规则。 有没有办法实现它?

1 个答案:

答案 0 :(得分:0)

你的意思是

parentheses2([H1,Op|T],L,C) :- ( Op = '+' ; Op = '-' ), L=[1,2,3].