2015-06-18 2 views

ответ

3

Использование объединения:

 
?- List = [a=3, b=2, c=0], member(Left=Right, List). 
List = [a=3, b=2, c=0], 
Left = a, 
Right = 3 ; 
List = [a=3, b=2, c=0], 
Left = b, 
Right = 2 ; 
List = [a=3, b=2, c=0], 
Left = c, 
Right = 0. 

Здесь что-то вроде a=3 фактически термин с функтор= и арностью 2, с первым аргументом a и второй аргумент 3. Если вы когда-нибудь попасть в ситуацию, когда вы не уверены, как именно Prolog интерпретирует то, что вы написали, вы можете попробовать write_canonical/1:

 
?- write_canonical(a=3). 
=(a,3) 
true. 

Другими словами, да, = объявлен как оператор, но это также атома, так что это может быть название термина.

+0

спасибо! :) –

+1

Надеюсь, вам понравится '.' в конце ответов так же, как и я. – false

Смежные вопросы