=== List === Avalog supports variable number of arguments, which can be used to represent lists. For example: (do, copy(A)) :- (do, copy(A, ..)). (do, copy(B)) :- (do, copy(A, ..B)). (do, copy(a, b, c, d)) The pattern `..` ignores the tail. The pattern `..B` puts the tail in a new list. This generates the following pairs: (do, copy(a)) (do, copy(b)) (do, copy(c)) (do, copy(d))