Clause and Effect: Prolog Programming for the Working Programmer

Front Cover
Springer Science & Business Media, Oct 13, 1997 - Computers - 143 pages
1 Review
This book is for people who have done some programming, either in Prolog or in a language other than Prolog, and who can find their way around a reference manual. The emphasis of this book is on a simplified and disciplined methodology for discerning the mathematical structures related to a problem, and then turning these structures into Prolog programs. This book is therefore not concerned about the particular features of the language nor about Prolog programming skills or techniques in general. A relatively pure subset of Prolog is used, which includes the 'cut', but no input/output, no assert/retract, no syntactic extensions such as if then-else and grammar rules, and hardly any built-in predicates apart from arithmetic operations. I trust that practitioners of Prolog program ming who have a particular interest in the finer details of syntactic style and language features will understand my purposes in not discussing these matters. The presentation, which I believe is novel for a Prolog programming text, is in terms of an outline of basic concepts interleaved with worksheets. The idea is that worksheets are rather like musical exercises. Carefully graduated in scope, each worksheet introduces only a limited number of new ideas, and gives some guidance for practising them. The principles introduced in the worksheets are then applied to extended examples in the form of case studies.
  

What people are saying - Write a review

LibraryThing Review

User Review  - nillacat - LibraryThing

How to think in Prolog. Covers various idioms of logic programming. Written as a series of worksheets, a couple of pages each, describing a technique and setting an exercise. Recommended. Read full review

User Review - Flag as inappropriate

book is quit good if you want relevent and concise information.

Contents

Getting Started
1
11 Syntax
2
12 Programs
6
13 Unification
7
14 Execution Model
9
Party Pairs
12
Drinking Pairs
13
Affordable Journeys
14
Linearising Efficiently
62
Linearising Trees
63
Difference Structures
64
Rotation Revisited
65
Max Tree
66
52 Solution to Max Tree
67
Case Study Term Rewriting
69
62 Matrix Products by Symbolic Algebra
70

Acyclic Directed Graph
16
Data Structures
17
21 Square Bracket Notation
19
Member
20
22 Arithmetic
21
Length of a List
22
Inner Product
23
Maximum of a List
24
Searching a Cyclic Graph
25
Mapping
27
Full Maps
30
Multiple Choices
31
Partial Maps
32
Removing Duplicates
33
Partial Maps with a Parameter
34
Multiple Disjoint Partial Maps
35
Multiple Disjoint Partial Maps
36
Full Maps with State
37
Sequential Maps with State
38
Scattered Maps with State
39
Choice and Commitment
41
42 A Disjoint Partial Map with Cut
43
Multiple Choices with Cut
46
Ordered Search Trees
47
Frequency Distribution
49
43 Taming Cut
50
45 NegationasFailure Can Be Misleading
51
NegationasFailure
53
Difference Structures
55
Concatenating Lists
56
Rotations of a List
57
Linearising
58
51 Difference Lists
59
63 The Simplifier
72
Case Study Manipulation of Combinational Circuits
75
72 Simulation of Circuits
79
74 Simplifying SOP Expressions
82
75 Alternative Representation
83
Case Study Manipulation of Clocked Sequential Circuits
85
81 DividebyTwo Pulse Divider
86
83 FourStage Shift Register
87
84 Gray Code Counter
89
85 Specification of Cascaded Components
90
Case Study A Compiler for Three Model Computers
93
91 The Register Machine
97
92 The SingleAccumulator Machine
102
93 The Stack Machine
107
Preprocessing the Syntax Tree
110
95 Peephole Optimisation
113
Case Study The Fast Fourier Transform in Prolog
115
102 Notation for Polynomials
116
103 The DFT
117
105 Naive Implementation of the DFT
119
106 From DFT to FFT
120
107 Merging Common Subexpressions
121
108 The Graph Generator
123
8point FFT
124
1010 Bibliographic Notes
126
Case Study HigherOrder Functional Programming
127
112 A Notation for Functions
129
113 The Evaluator
131
114 Using HigherOrder Functions
136
115 Discussion
138
116 Bibliographic Notes
139
Index
141
Copyright

Common terms and phrases

References to this book

Bibliographic information