Show
Ignore:
Timestamp:
10/04/08 12:30:36 (3 months ago)
Author:
pmoura
Message:

Modified the implementation of the predicate product/2 in the library object "numberlist" to fail for empty lists.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/library/numberlist.lgt

    r4216 r4482  
    55 
    66    :- info([ 
    7         version is 1.2, 
     7        version is 1.3, 
    88        author is 'Paulo Moura', 
    9         date is 2008/4/22, 
     9        date is 2008/9/15, 
    1010        comment is 'List of numbers predicates.']). 
    1111 
     
    2121        average(Ns, Lacc2, Sacc2, Average). 
    2222 
    23     min([N| Ns], Min) :- 
    24         min(Ns, N, Min). 
     23    min([X| Xs], Min) :- 
     24        min(Xs, X, Min). 
    2525 
    2626    min([], Min, Min). 
    27     min([N| Ns], Aux, Min) :- 
    28         (   N < Aux -> 
    29             min(Ns, N, Min) 
    30         ;   min(Ns, Aux, Min) 
     27    min([X| Xs], Aux, Min) :- 
     28        (   X < Aux -> 
     29            min(Xs, X, Min) 
     30        ;   min(Xs, Aux, Min) 
    3131        ). 
    3232 
    33     max([N| Ns], Max) :- 
    34         max(Ns, N, Max). 
     33    max([X| Xs], Max) :- 
     34        max(Xs, X, Max). 
    3535 
    3636    max([], Max, Max). 
    37     max([N| Ns], Aux, Max) :- 
    38         (   N > Aux -> 
    39             max(Ns, N, Max) 
    40         ;   max(Ns, Aux, Max) 
     37    max([X| Xs], Aux, Max) :- 
     38        (   X > Aux -> 
     39            max(Xs, X, Max) 
     40        ;   max(Xs, Aux, Max) 
    4141        ). 
    4242 
    43     product(List, Product) :- 
    44         product(List, 1, Product). 
     43    product([X| Xs], Product) :- 
     44        product(Xs, X, Product). 
    4545 
    4646    product([], Product, Product). 
    47     product([N| Ns], Acc, Product) :- 
    48         Acc2 is Acc * N, 
    49         product(Ns, Acc2, Product). 
     47    product([X| Xs], Acc, Product) :- 
     48        Acc2 is Acc * X, 
     49        product(Xs, Acc2, Product). 
    5050 
    5151    sum(List, Sum) :- 
     
    5353 
    5454    sum([], Sum, Sum). 
    55     sum([N| Ns], Acc, Sum) :- 
    56         Acc2 is Acc + N, 
    57         sum(Ns, Acc2, Sum). 
     55    sum([X| Xs], Acc, Sum) :- 
     56        Acc2 is Acc + X, 
     57        sum(Xs, Acc2, Sum). 
    5858 
    5959    valid(-) :-     % catch variables and lists with unbound tails