:- use_module(library(list_util)). :- use_module(library(tap)). finite_forward :- lazy_maplist(plus(1), [1,1,1,1], Twos), var(Twos), Twos = [2,2,2,2]. finite_backward :- lazy_maplist(plus(1), Ones, [2,2,2,2]), var(Ones), Ones = [1,1,1,1]. infinite_forward :- positive_integers(Integers), lazy_maplist(plus(10), Integers, TenMore), maplist(var, [Integers, TenMore]), take(7, TenMore, [11,12,13,14,15,16,17]), term_variables(TenMore, [Rest]), Rest = [18,19,20|_]. infinite_backward :- positive_integers(Integers), lazy_maplist(plus(-10), TenMore, Integers), maplist(var, [Integers, TenMore]), take(7, TenMore, [11,12,13,14,15,16,17]), term_variables(TenMore, [Rest]), Rest = [18,19,20|_].