22 - Click to edit Master subtitle style Chapter Twenty-...

Info iconThis preview shows pages 1–10. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Click to edit Master subtitle style Chapter Twenty- Two Modern Programming Languages, 2nd ed. A Third Look At Prolog Chapter Twenty- Two Modern Programming Languages, 2nd ed. 11 Chapter Twenty- Two Modern Programming Languages, 2nd ed. Outline Numeric computation in Prolog Problem space search Knapsack 8-queens Farewell to Prolog Chapter Twenty- Two Modern Programming Languages, 2nd ed. 22 Chapter Twenty- Two Modern Programming Languages, 2nd ed. Unevaluated Terms Prolog operators allow terms to be written more concisely, but are not evaluated These are all the same Prolog term: That term does not unify with 7 Chapter Twenty- Two Modern Programming Languages, 2nd ed. 33 +(1,*(2,3)) 1+ *(2,3) +(1,2*3) (1+(2*3)) 1+2*3 Chapter Twenty- Two Modern Programming Languages, 2nd ed. Evaluating Expressions The predefined predicate is can be used to evaluate a term that is a numeric expression is(X,Y) evaluates the term Y and unifies X with the resulting atom It is usually used as an operator Chapter Twenty- Two Modern Programming Languages, 2nd ed. 44 ?- X is 1+2*3. X = 7. Chapter Twenty- Two Modern Programming Languages, 2nd ed. Instantiation Is Required Chapter Twenty- Two Modern Programming Languages, 2nd ed. 55 ?- Y=X+2, X=1. Y = 1+2, X = 1. ?- Y is X+2, X=1. ERROR: is/2: Arguments are not sufficiently instantiated ?- X=1, Y is X+2. X = 1, Y = 3. Chapter Twenty- Two Modern Programming Languages, 2nd ed. Evaluable Predicates For X is Y , the predicates that appear in Y have to be evaluable predicates This includes things like the predefined operators + , - , * and / There are also other predefined evaluable predicates, like abs(Z) and sqrt(Z) Chapter Twenty- Two Modern Programming Languages, 2nd ed. 66 Chapter Twenty- Two Modern Programming Languages, 2nd ed. Real Values And Integers Chapter Twenty- Two Modern Programming Languages, 2nd ed. 77 ?- X is 1/2. X = 0.5. ?- X is 1.0/2.0. X = 0.5. ?- X is 2/1. X = 2. ?- X is 2.0/1.0. X = 2.0. There are two numeric types: integer and real. Most of the evaluable predicates are overloaded for all combinations. Prolog is dynamically typed; the types are used at runtime to resolve the overloading. But note that the goal 2=2.0 would fail. Chapter Twenty- Two Modern Programming Languages, 2nd ed. Comparisons Numeric comparison operators: < , > , =< , >= , =:= , =\= To solve a numeric comparison goal, Prolog evaluates both sides and compares the results numerically So both sides must be fully instantiated Chapter Twenty- Two Modern Programming Languages, 2nd ed. 88 Chapter Twenty- Two Modern Programming Languages, 2nd ed. Comparisons Chapter Twenty- Two Modern Programming Languages, 2nd ed....
View Full Document

This note was uploaded on 09/30/2011 for the course CS 6371 taught by Professor Hamlen during the Spring '11 term at University of Texas at Dallas, Richardson.

Page1 / 56

22 - Click to edit Master subtitle style Chapter Twenty-...

This preview shows document pages 1 - 10. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online