| OCR Text |
Show first_n_lucky_numbers(N, L) - truncate(N, s(O) ~ sift(gen(s(s(s(O)))), s(s(s(O)))), L). I* The goal that will produce the first three lucky numbers */ ?:- funlog(first_n_lucky_numbers(s(s(s(O))), II)). I* The example presented in Section 6.2.5 *I insert(A, empty) ==> tree(empty, A, empty). insert(A, tree(L, A, R)) ==> tree(L, A, R). insert(A, tree(L, B, R)) ==> cond(less(A, B), tree(insert(A, L), B, R), tree(L, B, insert(A, R))). less(O, s(N)) ==> true. less(s(N), 0) ==> false. less(s(A), s(B)) ==> less(A, B). build_up([], Tr, Tr). build_up(A ~ L, Tr, NewTr) I* A sample goal *I build_up(L, insert(A, Tr), NewTr). ?:- funlog( (build_up(O ~ 0 ~ s(s(O)) ~ s(O) ~ [], empty, Tr), build_up(s(s(s(O))) ~ [], Tr, Tree), reduce(Tree, FinalTr)) ) . I* The example presented in Section 6.2.4 *I poly(X, []} ==> 0. poly(X, [AniL]) ==> X * poly(X, L) + An. curve(X, Inc, L) ==> poly(X, L) ~ curve(X+Inc, Inc, L). curve_in_range(Start, End, Inc, Coeffs, Y_values) :- range(Start, End, Inc, curve(Start, Inc, Coeffs), Y_values). range(Current, End, Inc, L, []) :-Current> End. range(Current, End, Inc, A ~ L1, A ~ L2) :-Next is Current+ Inc, range(Next, End, Inc, L1, L2). I* A sample goal *I ?:- funlog( (curve_in_range(1, 3, 1, [2,5], Result), reduce(Result, Simplified)) ) . 139 |