> restart.

> put_on2(c,a).

> listing(on/2), list(move/3).

> put_on3(c, a, [on(a,b),on(b,c), on(c,table)],S).

> start(X), put_on3(c,a,X,S).


Logic Programming

  • Not really a general purpose technique
    • difficult to do the things easier in other programming paradigms
  • Some things are easier:
    • implications
    • backtracking is built in
    • pattern matching -> fining possible solutions
  • Things there are hard:
    • strings manipulations
    • not much support for graphics, etc.
    • Math (other than the most simple stuff)
  • In general, think of logic programming as an option for when it is appropriate
  • Bridge between Prolog and another languages
  • Non-Prolog tools
    • inference engines
      • use implications to prove facts
      • very similar in effect to prolog
    • available for other kinds of logic => Bayesian Logic
  • Mix

Domain Specific Languages

We’ve been looking at general purpose programming languages

  • designed to be used for many problems
    • for some, almost any conceivable programming problem
  • implies Turing completeness
    • equivalent to a Turing machine
    • in theory, can solve any problems that another Turing -complicate language can

Domain specific languages are designed to solve one kind of problem very well.

  • not necessarily programming language in the traditional sense
  • output can be a technical design, graphical objects, data, etc.
  • Can be very useful when you have a problem that fits