Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 28: Prolog’s Lists, Negation and Imperative Control Flow COMP 144 Programming Language.

Similar presentations


Presentation on theme: "1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 28: Prolog’s Lists, Negation and Imperative Control Flow COMP 144 Programming Language."— Presentation transcript:

1 1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 28: Prolog’s Lists, Negation and Imperative Control Flow COMP 144 Programming Language Concepts Spring 2002 Felix Hernandez-Campos April 1 The University of North Carolina at Chapel Hill

2 2 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lists ConstructorsConstructors –[] Empty list constant –. Constructor functor ExampleExample –.(a,.(b,.(c, []))) –[a, b, c] (syntactic sugar) Tail notation:Tail notation: –[a | [b, c]] –[a, b | [c]] Head::a Tail::[a]

3 3 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lists Examples No notion of input or output parameters

4 4 COMP 144 Programming Language Concepts Felix Hernandez-Campos Tic-Tac-Toe Example 3x3 grid3x3 grid Two Players:Two Players: –X (computer) –O (human) Fact x(n) indicates a movement by XFact x(n) indicates a movement by X –E.g. x(5), x(9) Fact o(n) indicates a movement by OFact o(n) indicates a movement by O –E.g. o(1), o(6)

5 5 COMP 144 Programming Language Concepts Felix Hernandez-Campos Tic-Tac-Toe Example Winning conditionWinning condition

6 6 COMP 144 Programming Language Concepts Felix Hernandez-Campos Tic-Tac-Toe Example Strategy: good moves Ordered List of Choices     

7 7 COMP 144 Programming Language Concepts Felix Hernandez-Campos Tic-Tac-Toe Example       Winning Split X

8 8 COMP 144 Programming Language Concepts Felix Hernandez-Campos Imperative Control Flow The cut Prolog has a number of explicit control flow featuresProlog has a number of explicit control flow features ! Known as the cut! Known as the cut –This is a zero-argument predicate that always succeeds –It commits the interpreter to the unification made between the parent goal and the left-hand side of the current rules ExampleExample member(X, [X|T]). member(X, [H|T]) :- member(X, T). member(X, [X|T]) :- !. member(X, [H|T]) :- member(X, T). member may succeed n times member may succeed at most one time If this rule succeeded, do not try to use the following ones

9 9 COMP 144 Programming Language Concepts Felix Hernandez-Campos Imperative Control Flow AlternativeAlternative member(X, [X|T]). member(X, [H|T]) :- not(X=H), member(X, T). How does not work?How does not work? not(P) :- call(P), !, fail. not(P). –call attempts to satisfy the goal P. –fail always fails.

10 10 COMP 144 Programming Language Concepts Felix Hernandez-Campos Prolog Database Manipulation Two built-in predicates can be used to modify the database of known factsTwo built-in predicates can be used to modify the database of known facts assert(P) adds a new fact.assert(P) adds a new fact. –E.g. assert(parent(kevin, john)) retract(P) removes a known fact.retract(P) removes a known fact. –E.g. retract(parent(kevin, john))

11 11 COMP 144 Programming Language Concepts Felix Hernandez-Campos Backward Chaining in Prolog Backward chaining follows a classic depth-first backtracking algorithmBackward chaining follows a classic depth-first backtracking algorithm ExampleExample –Goal: Snowy(C) Snowy(C)

12 12 COMP 144 Programming Language Concepts Felix Hernandez-Campos Infinite Regression Goal

13 13 COMP 144 Programming Language Concepts Felix Hernandez-Campos Reading Assignment ReadRead –Rest of Scott Sect. 11.3.1 Guide to Prolog Example, Roman BartákGuide to Prolog Example, Roman Barták –Go through all the examples –http://ktiml.mff.cuni.cz/~bartak/prolog/learning.html http://ktiml.mff.cuni.cz/~bartak/prolog/learning.html


Download ppt "1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 28: Prolog’s Lists, Negation and Imperative Control Flow COMP 144 Programming Language."

Similar presentations


Ads by Google