This version of Learn Prolog Now! embeds SWI SH , SWI-Prolog for SHaring. The current version rewrites the Learn Prolog Now! HTML on the fly, recognising source code and example queries. It is not yet good at recognising the relations between source code fragments and queries. Also Learn Prolog Now! needs some updating to be more compatible with SWI-Prolog. All sources are on GitHub:
LearnPrologNow LPN SWISH Proxy SWISH

5.5 Exercises

Exercise  5.1 How does Prolog respond to the following queries?

  1. X  =  3*4.
  2. X  is  3*4.
  3. 4  is  X.
  4. X  =  Y.
  5. 3  is  1+2.
  6. 3  is  +(1,2).
  7. 3  is  X+2.
  8. X  is  1+2.
  9. 1+2  is  1+2.
  10. is(X,+(1,2)).
  11. 3+2  =  +(3,2).
  12. *(7,5)  =  7*5.
  13. *(7,+(3,2))  =  7*(3+2).
  14. *(7,(3+2))  =  7*(3+2).
  15. 7*3+2  =  *(7,+(3,2)).
  16. *(7,(3+2))  =  7*(+(3,2)).

Exercise  5.2

  1. Define a 2-place predicate increment that holds only when its second argument is an integer one larger than its first argument. For example, increment(4,5) should hold, but increment(4,6) should not.
  2. Define a 3-place predicate sum that holds only when its third argument is the sum of the first two arguments. For example, sum(4,5,9) should hold, but sum(4,6,12) should not.

Exercise  5.3 Write a predicate addone/2 whose first argument is a list of integers, and whose second argument is the list of integers obtained by adding 1 to each integer in the first list. For example, the query

?- addone([1,2,7,2],X).

should give

X = [2,3,8,3].

eXTReMe Tracker
© 2006-2012 Patrick Blackburn, Johan Bos, Kristina Striegnitz