1 / 11

Prolog’s Lists, Negation and Imperative Control Flow

The University of North Carolina at Chapel Hill. Prolog’s Lists, Negation and Imperative Control Flow. COMP 144 Programming Language Concepts Spring 2003. Stotts, Hernandez-Campos Modified by Charles Ling for CS2209b, UWO Use with Permission. Head::a. Tail::[a]. Lists. Constructors

colm
Download Presentation

Prolog’s Lists, Negation and Imperative Control Flow

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The University of North Carolina at Chapel Hill Prolog’s Lists, Negation and Imperative Control Flow COMP 144 Programming Language Concepts Spring 2003 Stotts, Hernandez-Campos Modified by Charles Ling for CS2209b, UWO Use with Permission

  2. Head::a Tail::[a] Lists • Constructors • [] Empty list constant • . Constructor functor • Example • .(a, .(b, .(c, []))) • [a, b, c] (syntactic sugar) • Tail notation: • [a | [b, c]] • [a, b | [c]]

  3. ListsExamples No notion of input or output parameters

  4. Tic-Tac-Toe Example • 3x3 grid • Two Players: • X (computer) • O (human) • Fact x(n)indicates a movement by X • E.g.x(5), x(9) • Fact o(n) indicates a movement by O • E.g.o(1), o(6)

  5. Tic-Tac-Toe Example • Winning condition

  6. Strategy: good moves Ordered List of Choices Tic-Tac-Toe Example     

  7. Winning Split X Tic-Tac-Toe Example      

  8. If this rule succeeded, do not try to use the following ones Imperative Control FlowThe cut • Prolog has a number of explicit control flow features • ! 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 • Example 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

  9. Imperative Control Flow • Alternative member(X, [X|T]). member(X, [H|T]) :- not(X=H), member(X, T). • How does not work? not(P) :- call(P), !, fail. not(P). • call attempts to satisfy the goal P. • fail always fails.

  10. Prolog Database Manipulation • Two built-in predicates can be used to modify the database of known facts • assert(P) adds a new fact. • E.g.assert(parent(kevin, john)) • retract(P) removes a known fact. • E.g.retract(parent(kevin, john))

  11. Reading Assignment • Read • Rest of Scott Sect. 11.3.1 • Guide to Prolog Example, Roman Barták • Go through all the examples • http://ktiml.mff.cuni.cz/~bartak/prolog/learning.html

More Related