Before starting either Lisp or Prolog, it is better to get a good grasp of the math logic they are built on. Concepts to look out for in math are:

Set Theory http://en.wikipedia.org/wiki/Set_theory, which will prepare you for the map and reduce(aka fold) techniques on which functional programming heavily leans.

First order Logic http://en.wikipedia.org/wiki/First_order_logic, which Prolog and any logical programming language are based on.

Algorithm design is another important field to focus on for which this book is an excellent introduction: http://www.amazon.co.uk/Introduction-Algorithms-T-Cormen/dp/0262533057/ref=sr_1_sc_1?ie=UTF8&qid=1360103335&sr=8-1-spell

It starts off with the normal search algorithms but will move into algorithm complexity analysis and more advanced algorithm construction after that and ending in graph theory.

Automatons and formal languages is also an interesting thing to look at, http://en.wikipedia.org/wiki/Automata_theory. These will teach the ideas in state based systems and language design (practical for the parser and lexer stages in a compiler).

Even though most of these topics sound utterly boring and abstract once you understand the abstract concepts the actual implementation of these concepts become far easier, at least that is what I found.

### Show differencesHistory of post edits

### #1NightCreature83

Posted 05 February 2013 - 05:00 PM

Before starting either Lisp or Prolog, it is better to get a good grasp of the math logic they are built on. Concepts to look out for in math are:

Set Theory http://en.wikipedia.org/wiki/Set_theory, which will prepare you for the map and reduce(aka fold) techniques on which functional programming heavily leans.

First order Logic http://en.wikipedia.org/wiki/First_order_logic, which Prolog and any logical programming language are based on.

Algorithm design is another important field to focus on for which this book is an excellent introduction: http://www.amazon.co.uk/Introduction-Algorithms-T-Cormen/dp/0262533057/ref=sr_1_sc_1?ie=UTF8&qid=1360103335&sr=8-1-spell

It starts off with the normal search algorithms but will move into algorithm complexity analysis and more advanced algorithm construction after that and ending in graph theory.

Automatons and formal languages is also an interesting thing to look at, http://en.wikipedia.org/wiki/Automata_theory. These will teach the ideas in state based systems and language design (practical for the parser and lexer stages in a compiler).

Set Theory http://en.wikipedia.org/wiki/Set_theory, which will prepare you for the map and reduce(aka fold) techniques on which functional programming heavily leans.

First order Logic http://en.wikipedia.org/wiki/First_order_logic, which Prolog and any logical programming language are based on.

Algorithm design is another important field to focus on for which this book is an excellent introduction: http://www.amazon.co.uk/Introduction-Algorithms-T-Cormen/dp/0262533057/ref=sr_1_sc_1?ie=UTF8&qid=1360103335&sr=8-1-spell

It starts off with the normal search algorithms but will move into algorithm complexity analysis and more advanced algorithm construction after that and ending in graph theory.

Automatons and formal languages is also an interesting thing to look at, http://en.wikipedia.org/wiki/Automata_theory. These will teach the ideas in state based systems and language design (practical for the parser and lexer stages in a compiler).